summaryrefslogtreecommitdiffstats
path: root/web/server/h2o/libh2o/misc/oktavia/bin/oktavia-search
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xweb/server/h2o/libh2o/misc/oktavia/bin/oktavia-search24779
1 files changed, 24779 insertions, 0 deletions
diff --git a/web/server/h2o/libh2o/misc/oktavia/bin/oktavia-search b/web/server/h2o/libh2o/misc/oktavia/bin/oktavia-search
new file mode 100755
index 00000000..33edd769
--- /dev/null
+++ b/web/server/h2o/libh2o/misc/oktavia/bin/oktavia-search
@@ -0,0 +1,24779 @@
+#!/usr/bin/env node
+// generatedy by JSX compiler 0.9.24 (2013-04-05 13:45:00 +0900; 1b229cc6a411f674f0f7cf7a79b7a8b3f8eb7414)
+var JSX = {};
+(function (JSX) {
+/**
+ * copies the implementations from source interface to target
+ */
+function $__jsx_merge_interface(target, source) {
+ for (var k in source.prototype)
+ if (source.prototype.hasOwnProperty(k))
+ target.prototype[k] = source.prototype[k];
+}
+
+/**
+ * defers the initialization of the property
+ */
+function $__jsx_lazy_init(obj, prop, func) {
+ function reset(obj, prop, value) {
+ delete obj[prop];
+ obj[prop] = value;
+ return value;
+ }
+
+ Object.defineProperty(obj, prop, {
+ get: function () {
+ return reset(obj, prop, func());
+ },
+ set: function (v) {
+ reset(obj, prop, v);
+ },
+ enumerable: true,
+ configurable: true
+ });
+}
+
+/**
+ * sideeffect().a /= b
+ */
+function $__jsx_div_assign(obj, prop, divisor) {
+ return obj[prop] = (obj[prop] / divisor) | 0;
+}
+
+/*
+ * global functions, renamed to avoid conflict with local variable names
+ */
+var $__jsx_parseInt = parseInt;
+var $__jsx_parseFloat = parseFloat;
+var $__jsx_isNaN = isNaN;
+var $__jsx_isFinite = isFinite;
+
+var $__jsx_encodeURIComponent = encodeURIComponent;
+var $__jsx_decodeURIComponent = decodeURIComponent;
+var $__jsx_encodeURI = encodeURI;
+var $__jsx_decodeURI = decodeURI;
+
+var $__jsx_ObjectToString = Object.prototype.toString;
+var $__jsx_ObjectHasOwnProperty = Object.prototype.hasOwnProperty;
+
+/*
+ * profiler object, initialized afterwards
+ */
+function $__jsx_profiler() {
+}
+
+/*
+ * public interface to JSX code
+ */
+JSX.require = function (path) {
+ var m = $__jsx_classMap[path];
+ return m !== undefined ? m : null;
+};
+
+JSX.profilerIsRunning = function () {
+ return $__jsx_profiler.getResults != null;
+};
+
+JSX.getProfileResults = function () {
+ return ($__jsx_profiler.getResults || function () { return {}; })();
+};
+
+JSX.postProfileResults = function (url, cb) {
+ if ($__jsx_profiler.postResults == null)
+ throw new Error("profiler has not been turned on");
+ return $__jsx_profiler.postResults(url, cb);
+};
+
+JSX.resetProfileResults = function () {
+ if ($__jsx_profiler.resetResults == null)
+ throw new Error("profiler has not been turned on");
+ return $__jsx_profiler.resetResults();
+};
+JSX.DEBUG = false;
+/**
+ * class Search extends Object
+ * @constructor
+ */
+function Search() {
+}
+
+/**
+ * @constructor
+ */
+function Search$() {
+ this.style = null;
+};
+
+Search$.prototype = new Search;
+
+/**
+ * @param {Search} $this
+ * @param {!string} indexFile
+ * @param {Array.<undefined|!string>} queryStrings
+ * @param {!number} num
+ * @param {Style} style
+ * @param {undefined|!string} algorithm
+ */
+Search.search$LSearch$SASILStyle$US = function ($this, indexFile, queryStrings, num, style, algorithm) {
+ /** @type {Oktavia} */
+ var oktavia;
+ /** @type {QueryParser} */
+ var queryParser;
+ /** @type {SearchSummary} */
+ var summary;
+ /** @type {Stemmer} */
+ var stemmer$0;
+ $this.style = style;
+ oktavia = new Oktavia$();
+ if (algorithm != null) {
+ stemmer$0 = Search$createStemmer$LSearch$S($this, algorithm);
+ oktavia._stemmer = stemmer$0;
+ }
+ if (! Search$loadIndex$LSearch$LOktavia$S($this, oktavia, indexFile)) {
+ return;
+ }
+ console.time('searching');
+ queryParser = ({queries: [ ]});
+ QueryParser$parse$LQueryParser$AS(queryParser, queryStrings);
+ summary = oktavia.search$ALQuery$(queryParser.queries);
+ console.timeEnd('searching');
+ if (SearchSummary$size$LSearchSummary$(summary) === 0) {
+ Search$notFound$LSearch$LSearchSummary$AS($this, summary, queryStrings);
+ } else {
+ Search$showResult$LSearch$LOktavia$LSearchSummary$I($this, oktavia, summary, num);
+ }
+};
+
+var Search$search$LSearch$SASILStyle$US = Search.search$LSearch$SASILStyle$US;
+
+/**
+ * @param {Search} $this
+ * @param {Oktavia} oktavia
+ * @param {!string} filepath
+ * @return {!boolean}
+ */
+Search.loadIndex$LSearch$LOktavia$S = function ($this, oktavia, filepath) {
+ /** @type {!string} */
+ var ext;
+ /** @type {!string} */
+ var content;
+ /** @type {!boolean} */
+ var result;
+ /** @type {!number} */
+ var index;
+ /** @type {!number} */
+ var lastIndex;
+ ext = node.path.extname(filepath);
+ result = true;
+ switch (ext) {
+ case ".okt":
+ content = node.fs.readFileSync(filepath, "utf16le");
+ oktavia.load$S(content);
+ break;
+ case ".b64":
+ content = node.fs.readFileSync(filepath, "utf8");
+ oktavia.load$S(Binary$base64decode$S(content));
+ break;
+ case ".js":
+ content = node.fs.readFileSync(filepath, "utf8");
+ index = content.indexOf('"');
+ lastIndex = content.lastIndexOf('"');
+ oktavia.load$S(Binary$base64decode$S(content.slice(index, lastIndex)));
+ break;
+ default:
+ console.log("unknown file extension: " + ext);
+ result = false;
+ break;
+ }
+ return result;
+};
+
+var Search$loadIndex$LSearch$LOktavia$S = Search.loadIndex$LSearch$LOktavia$S;
+
+/**
+ * @param {Search} $this
+ * @param {Oktavia} oktavia
+ * @param {SearchSummary} summary
+ * @return {Array.<undefined|SearchUnit>}
+ */
+Search.sortResult$LSearch$LOktavia$LSearchSummary$ = function ($this, oktavia, summary) {
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var score;
+ /** @type {SearchUnit} */
+ var unit;
+ /** @type {!string} */
+ var pos;
+ /** @type {Position} */
+ var position;
+ for (i = 0; i < summary.result.units.length; i++) {
+ score = 0;
+ unit = summary.result.units[i];
+ for (pos in unit.positions) {
+ position = unit.positions[pos];
+ if (oktavia.wordPositionType$I(position.position)) {
+ score += 10;
+ } else {
+ score += 1;
+ }
+ if (! position.stemmed) {
+ score += 2;
+ }
+ }
+ unit.score = (score | 0);
+ }
+ return SearchSummary$getSortedResult$LSearchSummary$(summary);
+};
+
+var Search$sortResult$LSearch$LOktavia$LSearchSummary$ = Search.sortResult$LSearch$LOktavia$LSearchSummary$;
+
+/**
+ * @param {Search} $this
+ * @param {Oktavia} oktavia
+ * @param {SearchSummary} summary
+ * @param {!number} num
+ */
+Search.showResult$LSearch$LOktavia$LSearchSummary$I = function ($this, oktavia, summary, num) {
+ /** @type {Array.<undefined|SearchUnit>} */
+ var results;
+ /** @type {Style} */
+ var style;
+ /** @type {Metadata} */
+ var metadata;
+ /** @type {!number} */
+ var i;
+ /** @type {SearchUnit} */
+ var unit;
+ /** @type {Array.<undefined|!string>} */
+ var info;
+ /** @type {!string} */
+ var content;
+ /** @type {!number} */
+ var start;
+ /** @type {Array.<undefined|Position>} */
+ var positions;
+ /** @type {!number} */
+ var end;
+ /** @type {!boolean} */
+ var split;
+ /** @type {!number} */
+ var j;
+ /** @type {Position} */
+ var pos;
+ /** @type {!string} */
+ var text;
+ /** @type {!number} */
+ var position$0;
+ results = Search$sortResult$LSearch$LOktavia$LSearchSummary$($this, oktavia, summary);
+ style = $this.style;
+ metadata = oktavia._metadatas[oktavia._metadataLabels[0]];
+ for (i = 0; i < results.length; i++) {
+ unit = results[i];
+ info = metadata.getInformation$I(unit.id).split(Oktavia.eob);
+ console.log(style.convert$S('<title>' + info[0] + '</title>') + ' ' + style.convert$S('<url>' + info[1] + '</url>'));
+ content = metadata.getContent$I(unit.id);
+ start = 0;
+ positions = SearchUnit$getPositions$LSearchUnit$(unit);
+ if (content.indexOf(info[0]) === 1) {
+ content = content.slice(info[0].length + 2, content.length);
+ start += info[0].length + 2;
+ }
+ end = start + num;
+ split = false;
+ if (positions[0].position > end - positions[0].word.length) {
+ end = positions[0].position + Math.floor(num / 2);
+ split = true;
+ }
+ for (j = positions.length - 1; j > -1; j--) {
+ pos = positions[j];
+ if (pos.position + pos.word.length < end) {
+ content = [ content.slice(0, pos.position - start), style.convert$S('<hit>*</hit>').replace('*', content.slice((position$0 = pos.position) - start, position$0 + pos.word.length - start)), content.slice(pos.position + pos.word.length - start, content.length) ].join('');
+ }
+ }
+ if (split) {
+ text = [ content.slice(0, Math.floor(num / 2)) + ' ...', content.slice(- Math.floor(num / 2), end - start) ].join('\n');
+ } else {
+ text = content.slice(0, end - start) + ' ...\n';
+ }
+ text = text.replace(Oktavia.eob, ' ').replace(/\n\n+/, '\n\n');
+ console.log(text);
+ }
+ console.log(style.convert$S('<summary>' + (SearchSummary$size$LSearchSummary$(summary) + "") + " results.</summary>\n"));
+};
+
+var Search$showResult$LSearch$LOktavia$LSearchSummary$I = Search.showResult$LSearch$LOktavia$LSearchSummary$I;
+
+/**
+ * @param {Search} $this
+ * @param {SearchSummary} summary
+ * @param {Array.<undefined|!string>} query
+ */
+Search.notFound$LSearch$LSearchSummary$AS = function ($this, summary, query) {
+ /** @type {Style} */
+ var style;
+ /** @type {Array.<undefined|Proposal>} */
+ var proposals;
+ /** @type {!number} */
+ var i;
+ /** @type {Proposal} */
+ var proposal;
+ /** @type {Array.<undefined|!string>} */
+ var querywords;
+ /** @type {!number} */
+ var j;
+ style = $this.style;
+ if (query.length > 1) {
+ console.log("Suggestions:");
+ proposals = SearchSummary$getProposal$LSearchSummary$(summary);
+ for (i = 0; i < proposals.length; i++) {
+ proposal = proposals[i];
+ querywords = [ ];
+ for (j = 0; j < query.length; j++) {
+ if (j !== proposal.omit) {
+ querywords.push(style.convert$S('<hit>' + query[j] + '</hit>'));
+ }
+ }
+ console.log("* Expected result: " + querywords.join(" ") + " - " + (proposal.expect + "") + " hit");
+ }
+ } else {
+ console.log(style.convert$S("Your search - <hit>" + query[0] + "</hit> - didn't match any documents."));
+ }
+};
+
+var Search$notFound$LSearch$LSearchSummary$AS = Search.notFound$LSearch$LSearchSummary$AS;
+
+/**
+ * @param {Search} $this
+ * @param {!string} algorithm
+ * @return {Stemmer}
+ */
+Search.createStemmer$LSearch$S = function ($this, algorithm) {
+ /** @type {Stemmer} */
+ var stemmer;
+ switch (algorithm.toLowerCase()) {
+ case "danish":
+ stemmer = new DanishStemmer$();
+ break;
+ case "dutch":
+ stemmer = new DutchStemmer$();
+ break;
+ case "english":
+ stemmer = new EnglishStemmer$();
+ break;
+ case "finnish":
+ stemmer = new FinnishStemmer$();
+ break;
+ case "french":
+ stemmer = new FrenchStemmer$();
+ break;
+ case "german":
+ stemmer = new GermanStemmer$();
+ break;
+ case "hungarian":
+ stemmer = new HungarianStemmer$();
+ break;
+ case "italian":
+ stemmer = new ItalianStemmer$();
+ break;
+ case "norwegian":
+ stemmer = new NorwegianStemmer$();
+ break;
+ case "porter":
+ stemmer = new PorterStemmer$();
+ break;
+ case "portuguese":
+ stemmer = new PortugueseStemmer$();
+ break;
+ case "romanian":
+ stemmer = new RomanianStemmer$();
+ break;
+ case "russian":
+ stemmer = new RussianStemmer$();
+ break;
+ case "spanish":
+ stemmer = new SpanishStemmer$();
+ break;
+ case "swedish":
+ stemmer = new SwedishStemmer$();
+ break;
+ case "turkish":
+ stemmer = new TurkishStemmer$();
+ break;
+ default:
+ stemmer = new EnglishStemmer$();
+ break;
+ }
+ return stemmer;
+};
+
+var Search$createStemmer$LSearch$S = Search.createStemmer$LSearch$S;
+
+/**
+ * class _Main extends Object
+ * @constructor
+ */
+function _Main() {
+}
+
+/**
+ * @constructor
+ */
+function _Main$() {
+};
+
+_Main$.prototype = new _Main;
+
+/**
+ */
+_Main.usage$ = function () {
+ console.log([ "usage: oktavia_search index_file [options] query...", "", "Options:", " -m, --mono : Don't use color.", " -s, --stemmer [algorithm] : Select stemming algorithm.", " -n, --number [char number] : Result display number. Default value = 250", " -h, --help : Display this message.", "", "Search Query Syntax:", " word1 word2 : All words.", ' "word1 word2" : Exact words or phrase.', " word1 OR word2 : Any of these words.", " word1 -word2 : None of these words." ].join('\n'));
+};
+
+var _Main$usage$ = _Main.usage$;
+
+/**
+ * @param {Array.<undefined|!string>} args
+ */
+_Main.main$AS = function (args) {
+ /** @type {undefined|!string} */
+ var indexFile;
+ /** @type {!boolean} */
+ var showhelp;
+ /** @type {!boolean} */
+ var notrun;
+ /** @type {!string} */
+ var styleType;
+ /** @type {!number} */
+ var num;
+ /** @type {Array.<undefined|!string>} */
+ var queryStrings;
+ /** @type {undefined|!string} */
+ var algorithm;
+ /** @type {Array.<undefined|!string>} */
+ var validStemmers;
+ /** @type {BasicParser} */
+ var parser;
+ /** @type {CommandOption} */
+ var opt;
+ /** @type {Style} */
+ var style;
+ /** @type {Search} */
+ var search;
+ console.log("Search Engine Oktavia - Command-line Search Client\n");
+ indexFile = null;
+ showhelp = false;
+ notrun = false;
+ styleType = 'console';
+ num = 250;
+ queryStrings = [ ];
+ algorithm = null;
+ validStemmers = [ 'danish', 'dutch', 'english', 'finnish', 'french', 'german', 'hungarian', 'italian', 'norwegian', 'porter', 'portuguese', 'romanian', 'russian', 'spanish', 'swedish', 'turkish' ];
+ if (args.length === 0) {
+ showhelp = true;
+ } else {
+ if (! node.fs.existsSync(args[0])) {
+ console.error("Index file '" + args[0] + "' doesn't exist.");
+ notrun = true;
+ } else {
+ indexFile = args[0];
+ }
+ }
+ parser = new BasicParser$SAS("m(mono)s:(stemmer)n:(number)h(help)", args.slice(1));
+ opt = parser.getopt$();
+ while (opt) {
+ switch (opt.option) {
+ case "s":
+ if (validStemmers.indexOf(opt.optarg) === -1) {
+ console.error('Option s/stemmer is invalid.');
+ notrun = true;
+ } else {
+ algorithm = opt.optarg;
+ }
+ break;
+ case "m":
+ styleType = 'ignore';
+ break;
+ case "n":
+ num = opt.optarg | 0;
+ break;
+ case "h":
+ showhelp = true;
+ break;
+ default:
+ queryStrings.push(opt.option);
+ break;
+ }
+ opt = parser.getopt$();
+ }
+ if (showhelp || queryStrings.length === 0) {
+ console.log([ "usage: oktavia_search index_file [options] query...", "", "Options:", " -m, --mono : Don't use color.", " -s, --stemmer [algorithm] : Select stemming algorithm.", " -n, --number [char number] : Result display number. Default value = 250", " -h, --help : Display this message.", "", "Search Query Syntax:", " word1 word2 : All words.", ' "word1 word2" : Exact words or phrase.', " word1 OR word2 : Any of these words.", " word1 -word2 : None of these words." ].join('\n'));
+ } else {
+ if (! notrun) {
+ style = new Style$S(styleType);
+ search = ({style: null});
+ Search$search$LSearch$SASILStyle$US(search, indexFile, queryStrings, num, style, algorithm);
+ }
+ }
+};
+
+var _Main$main$AS = _Main.main$AS;
+
+/**
+ * class node extends Object
+ * @constructor
+ */
+function node() {
+}
+
+/**
+ * @constructor
+ */
+function node$() {
+};
+
+node$.prototype = new node;
+
+/**
+ * @param {!string} source
+ * @return {*}
+ */
+node.require$S = function (source) {
+ /** @type {!string} */
+ var src;
+ src = 'require(' + JSON.stringify(source) + ')';
+ return eval(src);
+};
+
+var node$require$S = node.require$S;
+
+/**
+ * class Oktavia extends Object
+ * @constructor
+ */
+function Oktavia() {
+}
+
+/**
+ * @constructor
+ */
+function Oktavia$() {
+ /** @type {Array.<undefined|!string>} */
+ var _utf162compressCode$0;
+ this._compressCode2utf16 = null;
+ this._fmindex = new FMIndex$();
+ this._metadatas = ({ });
+ this._metadataLabels = [ ];
+ this._stemmer = null;
+ this._stemmingResult = ({ });
+ _utf162compressCode$0 = this._utf162compressCode = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ];
+ _utf162compressCode$0.length = 65536;
+ this._compressCode2utf16 = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ];
+};
+
+Oktavia$.prototype = new Oktavia;
+
+/**
+ * @param {Stemmer} stemmer
+ */
+Oktavia.prototype.setStemmer$LStemmer$ = function (stemmer) {
+ this._stemmer = stemmer;
+};
+
+/**
+ * @return {Metadata}
+ */
+Oktavia.prototype.getPrimaryMetadata$ = function () {
+ return this._metadatas[this._metadataLabels[0]];
+};
+
+/**
+ * @param {!string} key
+ * @return {Section}
+ */
+Oktavia.prototype.addSection$S = function (key) {
+ /** @type {Section} */
+ var section;
+ if (this._metadataLabels.indexOf(key) !== -1) {
+ throw new Error('Metadata name ' + key + ' is already exists');
+ }
+ this._metadataLabels.push(key);
+ section = new Section$LOktavia$(this);
+ this._metadatas[key] = section;
+ return section;
+};
+
+/**
+ * @param {!string} key
+ * @return {Section}
+ */
+Oktavia.prototype.getSection$S = function (key) {
+ if (this._metadataLabels.indexOf(key) === -1) {
+ throw new Error('Metadata name ' + key + " does't exists");
+ }
+ return this._metadatas[key];
+};
+
+/**
+ * @param {!string} key
+ * @return {Splitter}
+ */
+Oktavia.prototype.addSplitter$S = function (key) {
+ /** @type {Splitter} */
+ var splitter;
+ if (this._metadataLabels.indexOf(key) !== -1) {
+ throw new Error('Metadata name ' + key + ' is already exists');
+ }
+ this._metadataLabels.push(key);
+ splitter = new Splitter$LOktavia$(this);
+ this._metadatas[key] = splitter;
+ return splitter;
+};
+
+/**
+ * @param {!string} key
+ * @return {Splitter}
+ */
+Oktavia.prototype.getSplitter$S = function (key) {
+ if (this._metadataLabels.indexOf(key) === -1) {
+ throw new Error('Metadata name ' + key + " does't exists");
+ }
+ return this._metadatas[key];
+};
+
+/**
+ * @param {!string} key
+ * @param {Array.<undefined|!string>} headers
+ * @return {Table}
+ */
+Oktavia.prototype.addTable$SAS = function (key, headers) {
+ /** @type {Table} */
+ var table;
+ if (this._metadataLabels.indexOf(key) !== -1) {
+ throw new Error('Metadata name ' + key + ' is already exists');
+ }
+ this._metadataLabels.push(key);
+ table = new Table$LOktavia$AS(this, headers);
+ this._metadatas[key] = table;
+ return table;
+};
+
+/**
+ * @param {!string} key
+ * @return {Table}
+ */
+Oktavia.prototype.getTable$S = function (key) {
+ if (this._metadataLabels.indexOf(key) === -1) {
+ throw new Error('Metadata name ' + key + " does't exists");
+ }
+ return this._metadatas[key];
+};
+
+/**
+ * @param {!string} key
+ * @return {Block}
+ */
+Oktavia.prototype.addBlock$S = function (key) {
+ /** @type {Block} */
+ var block;
+ if (this._metadataLabels.indexOf(key) !== -1) {
+ throw new Error('Metadata name ' + key + ' is already exists');
+ }
+ this._metadataLabels.push(key);
+ block = new Block$LOktavia$(this);
+ this._metadatas[key] = block;
+ return block;
+};
+
+/**
+ * @param {!string} key
+ * @return {Block}
+ */
+Oktavia.prototype.getBlock$S = function (key) {
+ if (this._metadataLabels.indexOf(key) === -1) {
+ throw new Error('Metadata name ' + key + " does't exists");
+ }
+ return this._metadatas[key];
+};
+
+/**
+ */
+Oktavia.prototype.addEndOfBlock$ = function () {
+ this._fmindex.push$S(Oktavia.eob);
+};
+
+/**
+ * @param {!string} words
+ */
+Oktavia.prototype.addWord$S = function (words) {
+ /** @type {Array.<undefined|!string>} */
+ var str;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var charCode;
+ /** @type {undefined|!string} */
+ var newCharCode;
+ str = [ ];
+ str.length = words.length;
+ for (i = 0; i < words.length; i++) {
+ charCode = words.charCodeAt(i);
+ newCharCode = this._utf162compressCode[charCode];
+ if (newCharCode == null) {
+ newCharCode = String.fromCharCode(this._compressCode2utf16.length);
+ this._utf162compressCode[charCode] = newCharCode;
+ this._compressCode2utf16.push(String.fromCharCode(charCode));
+ }
+ str.push(newCharCode);
+ }
+ this._fmindex.push$S(str.join(''));
+};
+
+/**
+ * @param {!string} words
+ * @param {!boolean} stemming
+ */
+Oktavia.prototype.addWord$SB = function (words, stemming) {
+ /** @type {Array.<undefined|!string>} */
+ var wordList;
+ /** @type {!number} */
+ var i;
+ /** @type {undefined|!string} */
+ var originalWord;
+ /** @type {!string} */
+ var smallWord;
+ /** @type {undefined|!string} */
+ var registerWord;
+ /** @type {!string} */
+ var baseWord;
+ /** @type {!string} */
+ var compressedCodeWord;
+ /** @type {Array.<undefined|!string>} */
+ var stemmedList;
+ this.addWord$S(words);
+ wordList = words.split(/\s+/);
+ for (i = 0; i < wordList.length; i++) {
+ originalWord = wordList[i];
+ smallWord = originalWord.slice(0, 1).toLowerCase() + originalWord.slice(1);
+ registerWord = null;
+ if (stemming && this._stemmer) {
+ baseWord = this._stemmer.stemWord$S(originalWord.toLowerCase());
+ if (originalWord.indexOf(baseWord) === -1) {
+ registerWord = baseWord;
+ }
+ } else {
+ if (originalWord != smallWord) {
+ registerWord = smallWord;
+ }
+ }
+ if (registerWord) {
+ compressedCodeWord = this._convertToCompressionCode$S(originalWord);
+ stemmedList = this._stemmingResult[registerWord];
+ if (! stemmedList) {
+ stemmedList = [ compressedCodeWord ];
+ this._stemmingResult[registerWord] = stemmedList;
+ } else {
+ if (stemmedList.indexOf(compressedCodeWord) === -1) {
+ stemmedList.push(compressedCodeWord);
+ }
+ }
+ }
+ }
+};
+
+/**
+ * @param {!string} keyword
+ * @return {!string}
+ */
+Oktavia.prototype._convertToCompressionCode$S = function (keyword) {
+ /** @type {Array.<undefined|!string>} */
+ var resultChars;
+ /** @type {!number} */
+ var i;
+ /** @type {undefined|!string} */
+ var chr;
+ resultChars = [ ];
+ for (i = 0; i < keyword.length; i++) {
+ chr = this._utf162compressCode[keyword.charCodeAt(i)];
+ if (chr == null) {
+ resultChars.push(Oktavia.unknown);
+ } else {
+ resultChars.push(chr);
+ }
+ }
+ return resultChars.join('');
+};
+
+/**
+ * @param {!string} keyword
+ * @param {!boolean} stemming
+ * @return {Array.<undefined|!number>}
+ */
+Oktavia.prototype.rawSearch$SB = function (keyword, stemming) {
+ /** @type {Array.<undefined|!number>} */
+ var result;
+ /** @type {!string} */
+ var baseWord;
+ /** @type {Array.<undefined|!string>} */
+ var stemmedList;
+ /** @type {!number} */
+ var i;
+ /** @type {undefined|!string} */
+ var word;
+ if (stemming) {
+ result = [ ];
+ if (this._stemmer) {
+ baseWord = this._stemmer.stemWord$S(keyword.toLowerCase());
+ stemmedList = this._stemmingResult[baseWord];
+ if (stemmedList) {
+ for (i = 0; i < stemmedList.length; i++) {
+ word = stemmedList[i];
+ result = result.concat(this._fmindex.search$S(word));
+ }
+ }
+ }
+ } else {
+ result = this._fmindex.search$S(this._convertToCompressionCode$S(keyword));
+ }
+ return result;
+};
+
+/**
+ * @param {Array.<undefined|Query>} queries
+ * @return {SearchSummary}
+ */
+Oktavia.prototype.search$ALQuery$ = function (queries) {
+ /** @type {SearchSummary} */
+ var summary;
+ /** @type {!number} */
+ var i;
+ /** @type {SingleResult} */
+ var result$0;
+ summary = ({sourceResults: [ ], result: null, oktavia: this});
+ for (i = 0; i < queries.length; i++) {
+ result$0 = this._searchQuery$LQuery$(queries[i]);
+ summary.sourceResults.push(result$0);
+ }
+ summary.result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$(summary, summary.sourceResults);
+ return summary;
+};
+
+/**
+ * @param {Query} query
+ * @return {SingleResult}
+ */
+Oktavia.prototype._searchQuery$LQuery$ = function (query) {
+ /** @type {SingleResult} */
+ var result;
+ /** @type {Array.<undefined|!number>} */
+ var positions;
+ result = new SingleResult$SBB(query.word, query.or, query.not);
+ if (query.raw) {
+ positions = this.rawSearch$SB(query.word, false);
+ } else {
+ positions = this.rawSearch$SB(query.word, false).concat(this.rawSearch$SB(query.word, true));
+ }
+ this._metadatas[this._metadataLabels[0]].grouping$LSingleResult$AISB(result, positions, query.word, ! query.raw);
+ return result;
+};
+
+/**
+ */
+Oktavia.prototype.build$ = function () {
+ this.build$IB(5, false);
+};
+
+/**
+ * @param {!number} cacheDensity
+ * @param {!boolean} verbose
+ */
+Oktavia.prototype.build$IB = function (cacheDensity, verbose) {
+ /** @type {!string} */
+ var key;
+ /** @type {!number} */
+ var cacheRange;
+ /** @type {!number} */
+ var maxChar;
+ for (key in this._metadatas) {
+ this._metadatas[key]._build$();
+ }
+ cacheRange = Math.round(Math.max(1, 100 / Math.min(100, Math.max(0.01, cacheDensity))));
+ maxChar = this._compressCode2utf16.length;
+ this._fmindex.build$SIIB(Oktavia.eof, maxChar, cacheRange, verbose);
+};
+
+/**
+ * @return {!string}
+ */
+Oktavia.prototype.dump$ = function () {
+ return this.dump$B(false);
+};
+
+/**
+ * @param {!boolean} verbose
+ * @return {!string}
+ */
+Oktavia.prototype.dump$B = function (verbose) {
+ /** @type {!string} */
+ var header;
+ /** @type {!string} */
+ var fmdata;
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ /** @type {!number} */
+ var i;
+ /** @type {CompressionReport} */
+ var report;
+ /** @type {undefined|!string} */
+ var name;
+ /** @type {!string} */
+ var data;
+ header = Binary$dumpString$SLCompressionReport$("oktavia-01", null).slice(1);
+ if (verbose) {
+ console.log("Source text size: " + (this._fmindex.size$() * 2 + "") + ' bytes');
+ }
+ fmdata = this._fmindex.dump$B(verbose);
+ result = [ header, fmdata ];
+ result.push(Binary$dump16bitNumber$I(this._compressCode2utf16.length));
+ for (i = 3; i < this._compressCode2utf16.length; i++) {
+ result.push(this._compressCode2utf16[i]);
+ }
+ if (verbose) {
+ console.log('Char Code Map: ' + (this._compressCode2utf16.length * 2 - 2 + "") + ' bytes');
+ }
+ report = ({source: 0, result: 0});
+ result.push(Binary$dumpStringListMap$HASLCompressionReport$(this._stemmingResult, report));
+ if (verbose) {
+ console.log('Stemmed Word Table: ' + (result[result.length - 1].length + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)');
+ }
+ result.push(Binary$dump16bitNumber$I(this._metadataLabels.length));
+ for (i = 0; i < this._metadataLabels.length; i++) {
+ report = ({source: 0, result: 0});
+ name = this._metadataLabels[i];
+ data = this._metadatas[name]._dump$LCompressionReport$(report);
+ result.push(Binary$dumpString$SLCompressionReport$(name, report), data);
+ if (verbose) {
+ console.log('Meta Data ' + name + ': ' + (data.length * 2 + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)');
+ }
+ }
+ return result.join('');
+};
+
+/**
+ * @param {!string} data
+ */
+Oktavia.prototype.load$S = function (data) {
+ /** @type {!string} */
+ var header;
+ /** @type {!number} */
+ var offset;
+ /** @type {!number} */
+ var charCodeCount;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var charCode;
+ /** @type {LoadedStringListMapResult} */
+ var stemmedWords;
+ /** @type {!number} */
+ var metadataCount;
+ /** @type {LoadedStringResult} */
+ var nameResult;
+ /** @type {!string} */
+ var name;
+ /** @type {!number} */
+ var type;
+ header = Binary$dumpString$SLCompressionReport$("oktavia-01", null).slice(1);
+ if (data.slice(0, 5) !== header) {
+ throw new Error('Invalid data file');
+ }
+ this._metadatas = ({ });
+ this._metadataLabels = [ ];
+ offset = 5;
+ offset = this._fmindex.load$SI(data, offset);
+ charCodeCount = Binary$load16bitNumber$SI(data, offset++);
+ this._compressCode2utf16 = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ];
+ this._utf162compressCode = [ Oktavia.eof, Oktavia.eob, Oktavia.unknown ];
+ for (i = 3; i < charCodeCount; i++) {
+ charCode = Binary$load16bitNumber$SI(data, offset++);
+ this._compressCode2utf16.push(String.fromCharCode(charCode));
+ this._utf162compressCode[charCode] = String.fromCharCode(i);
+ }
+ stemmedWords = Binary$loadStringListMap$SI(data, offset);
+ this._stemmingResult = stemmedWords.result;
+ offset = stemmedWords.offset;
+ metadataCount = Binary$load16bitNumber$SI(data, offset++);
+ for (i = 0; i < metadataCount; i++) {
+ nameResult = Binary$loadString$SI(data, offset);
+ name = nameResult.result;
+ offset = nameResult.offset;
+ type = Binary$load16bitNumber$SI(data, offset++);
+ switch (type) {
+ case 0:
+ offset = Section$_load$LOktavia$SSI(this, name, data, offset);
+ break;
+ case 1:
+ offset = Splitter$_load$LOktavia$SSI(this, name, data, offset);
+ break;
+ case 2:
+ offset = Table$_load$LOktavia$SSI(this, name, data, offset);
+ break;
+ case 3:
+ offset = Block$_load$LOktavia$SSI(this, name, data, offset);
+ break;
+ }
+ }
+};
+
+/**
+ * @return {!number}
+ */
+Oktavia.prototype.contentSize$ = function () {
+ /** @type {FMIndex} */
+ var this$0;
+ this$0 = this._fmindex;
+ return this$0._substr.length;
+};
+
+/**
+ * @param {!number} position
+ * @return {!number}
+ */
+Oktavia.prototype.wordPositionType$I = function (position) {
+ /** @type {!number} */
+ var result;
+ /** @type {!string} */
+ var ahead;
+ result = 0;
+ if (position === 0) {
+ result = 4;
+ } else {
+ ahead = this._fmindex.getSubstring$II(position - 1, 1);
+ if (/\s/.test(ahead)) {
+ result = 2;
+ } else {
+ if (/\W/.test(ahead)) {
+ result = 1;
+ } else {
+ if (Oktavia.eob === ahead) {
+ result = 3;
+ }
+ }
+ }
+ }
+ return (result | 0);
+};
+
+/**
+ * @param {!number} position
+ * @param {!number} length
+ * @return {!string}
+ */
+Oktavia.prototype._getSubstring$II = function (position, length) {
+ /** @type {!string} */
+ var result;
+ /** @type {Array.<undefined|!string>} */
+ var str;
+ /** @type {!number} */
+ var i;
+ result = this._fmindex.getSubstring$II(position, length);
+ str = [ ];
+ for (i = 0; i < result.length; i++) {
+ str.push(this._compressCode2utf16[result.charCodeAt(i)]);
+ }
+ return str.join('');
+};
+
+/**
+ * class CommandOption extends Object
+ * @constructor
+ */
+function CommandOption() {
+}
+
+/**
+ * @constructor
+ * @param {!string} option
+ */
+function CommandOption$S(option) {
+ this.option = option;
+ this.optarg = null;
+ this.error = false;
+};
+
+CommandOption$S.prototype = new CommandOption;
+
+/**
+ * @constructor
+ * @param {!string} option
+ * @param {!string} optarg
+ */
+function CommandOption$SS(option, optarg) {
+ this.option = option;
+ this.optarg = optarg;
+ this.error = false;
+};
+
+CommandOption$SS.prototype = new CommandOption;
+
+/**
+ * @constructor
+ * @param {!string} option
+ * @param {!string} optarg
+ * @param {!boolean} error
+ */
+function CommandOption$SSB(option, optarg, error) {
+ this.option = option;
+ this.optarg = optarg;
+ this.error = error;
+};
+
+CommandOption$SSB.prototype = new CommandOption;
+
+/**
+ * class BasicParser extends Object
+ * @constructor
+ */
+function BasicParser() {
+}
+
+/**
+ * @constructor
+ * @param {!string} optstring
+ * @param {Array.<undefined|!string>} argv
+ */
+function BasicParser$SAS(optstring, argv) {
+ this._silent = false;
+ this._argv = argv;
+ this._options = ({ });
+ this._aliases = ({ });
+ this._optind = 0;
+ this._subind = 0;
+ this._extraoptions = false;
+ this._parseOptstr$S(optstring);
+};
+
+BasicParser$SAS.prototype = new BasicParser;
+
+/**
+ * @param {!string} msg
+ * @return {Error}
+ */
+BasicParser._makeError$S = function (msg) {
+ return new Error('getopt: ' + msg);
+};
+
+var BasicParser$_makeError$S = BasicParser._makeError$S;
+
+/**
+ * @param {!string} optstr
+ */
+BasicParser.prototype._parseOptstr$S = function (optstr) {
+ /** @type {!number} */
+ var i;
+ /** @type {!string} */
+ var chr;
+ /** @type {!boolean} */
+ var arg;
+ /** @type {!number} */
+ var cp;
+ /** @type {!string} */
+ var alias;
+ i = 0;
+ if (optstr.length > 0 && optstr.slice(0, 1) === ':') {
+ this._silent = true;
+ i++;
+ } else {
+ this._silent = false;
+ }
+ while (i < optstr.length) {
+ chr = optstr.slice(i, i + 1);
+ arg = false;
+ if (! /^[\w\d]$/.test(chr)) {
+ throw new Error("invalid optstring: only alphanumeric characters may be used as options: " + chr);
+ }
+ if (i + 1 < optstr.length && optstr.slice(i + 1, i + 2) === ':') {
+ arg = true;
+ i++;
+ }
+ this._options[chr] = arg;
+ while (i + 1 < optstr.length && optstr.slice(i + 1, i + 2) === '(') {
+ i++;
+ cp = optstr.indexOf(')', i + 1);
+ if (cp === -1) {
+ throw new Error("invalid optstring: missing \")\" to match \"(\" at char " + (i + ""));
+ }
+ alias = optstr.substring(i + 1, cp);
+ this._aliases[alias] = chr;
+ i = cp;
+ }
+ i++;
+ }
+};
+
+/**
+ * @return {!number}
+ */
+BasicParser.prototype.optind$ = function () {
+ return this._optind;
+};
+
+/**
+ * @return {CommandOption}
+ */
+BasicParser.prototype.getopt$ = function () {
+ /** @type {undefined|!string} */
+ var arg;
+ if (this._optind >= this._argv.length) {
+ return null;
+ }
+ arg = this._argv[this._optind];
+ if (this._extraoptions) {
+ this._optind++;
+ return ({option: arg, optarg: null, error: false});
+ }
+ if (this._subind === 0) {
+ if (arg == '-' || arg == '') {
+ return null;
+ }
+ if (arg.charAt(0) !== '-') {
+ this._extraoptions = true;
+ this._optind++;
+ return ({option: arg, optarg: null, error: false});
+ }
+ if (arg == '--') {
+ this._optind++;
+ this._subind = 0;
+ return null;
+ }
+ if (arg.slice(1, 2) === '-') {
+ return this._getoptLong$();
+ }
+ this._subind++;
+ }
+ return this._getoptShort$();
+};
+
+/**
+ * @return {CommandOption}
+ */
+BasicParser.prototype._getoptShort$ = function () {
+ /** @type {undefined|!string} */
+ var arg;
+ /** @type {!string} */
+ var chr;
+ /** @type {!number} */
+ var _subind$0;
+ arg = this._argv[this._optind];
+ chr = arg.slice(_subind$0 = this._subind, _subind$0 + 1);
+ if (++ this._subind >= arg.length) {
+ this._optind++;
+ this._subind = 0;
+ }
+ return (! (chr in this._options) ? this._errInvalidOption$S(chr) : ! this._options[chr] ? ({option: chr, optarg: null, error: false}) : this._getoptArgument$S(chr));
+};
+
+/**
+ * @return {CommandOption}
+ */
+BasicParser.prototype._getoptLong$ = function () {
+ /** @type {undefined|!string} */
+ var arg;
+ /** @type {!number} */
+ var eq;
+ /** @type {!string} */
+ var alias;
+ /** @type {undefined|!string} */
+ var chr;
+ arg = this._argv[this._optind];
+ eq = arg.indexOf('=');
+ alias = arg.substring(2, eq === -1 ? arg.length : eq);
+ if (! (alias in this._aliases)) {
+ return this._errInvalidOption$S(alias);
+ }
+ chr = this._aliases[alias];
+ if (! this._options[chr]) {
+ if (eq !== -1) {
+ return this._errExtraArg$S(alias);
+ }
+ this._optind++;
+ return ({option: chr, optarg: null, error: false});
+ }
+ if (eq === -1) {
+ this._optind++;
+ } else {
+ this._subind = (eq + 1 | 0);
+ }
+ return this._getoptArgument$S(chr);
+};
+
+/**
+ * @param {!string} chr
+ * @return {CommandOption}
+ */
+BasicParser.prototype._getoptArgument$S = function (chr) {
+ /** @type {!string} */
+ var arg;
+ if (this._optind >= this._argv.length) {
+ return this._errMissingArg$S(chr);
+ }
+ arg = this._argv[this._optind].substring(this._subind);
+ this._optind++;
+ this._subind = 0;
+ return ({option: chr, optarg: arg, error: false});
+};
+
+/**
+ * @param {!string} chr
+ * @return {CommandOption}
+ */
+BasicParser.prototype._errMissingArg$S = function (chr) {
+ if (this._silent) {
+ return ({option: ':', optarg: chr, error: false});
+ }
+ console.error('option requires an argument -- ' + chr + '\n');
+ return ({option: '?', optarg: chr, error: true});
+};
+
+/**
+ * @param {!string} chr
+ * @return {CommandOption}
+ */
+BasicParser.prototype._errInvalidOption$S = function (chr) {
+ if (! this._silent) {
+ console.error('illegal option -- ' + chr + '\n');
+ }
+ return ({option: '?', optarg: chr, error: true});
+};
+
+/**
+ * @param {!string} chr
+ * @return {CommandOption}
+ */
+BasicParser.prototype._errExtraArg$S = function (chr) {
+ if (! this._silent) {
+ console.error('option expects no argument -- ' + chr + '\n');
+ }
+ return ({option: '?', optarg: chr, error: true});
+};
+
+/**
+ * class QueryParser extends Object
+ * @constructor
+ */
+function QueryParser() {
+}
+
+/**
+ * @constructor
+ */
+function QueryParser$() {
+ this.queries = [ ];
+};
+
+QueryParser$.prototype = new QueryParser;
+
+/**
+ * @param {QueryParser} $this
+ * @param {Array.<undefined|!string>} queryStrings
+ * @return {Array.<undefined|Query>}
+ */
+QueryParser.parse$LQueryParser$AS = function ($this, queryStrings) {
+ /** @type {!boolean} */
+ var nextOr;
+ /** @type {!number} */
+ var i;
+ /** @type {undefined|!string} */
+ var word;
+ /** @type {Query} */
+ var query;
+ nextOr = false;
+ for (i = 0; i < queryStrings.length; i++) {
+ word = queryStrings[i];
+ if (word == 'OR') {
+ nextOr = true;
+ } else {
+ query = new Query$();
+ if (nextOr) {
+ query.or = true;
+ nextOr = false;
+ }
+ if (word.slice(0, 1) === '-') {
+ query.not = true;
+ word = word.slice(1);
+ }
+ if (word.slice(0, 1) === '"' && word.slice(word.length - 1) === '"') {
+ query.raw = true;
+ word = word.slice(1, word.length - 1);
+ }
+ query.word = word;
+ $this.queries.push(query);
+ }
+ }
+ return $this.queries;
+};
+
+var QueryParser$parse$LQueryParser$AS = QueryParser.parse$LQueryParser$AS;
+
+/**
+ * @param {QueryParser} $this
+ * @return {!string}
+ */
+QueryParser.highlight$LQueryParser$ = function ($this) {
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ /** @type {!number} */
+ var i;
+ /** @type {Query} */
+ var query;
+ result = [ ];
+ for (i = 0; i < $this.queries.length; i++) {
+ query = $this.queries[i];
+ if (! query.not) {
+ result.push("highlight=" + $__jsx_encodeURIComponent(query.word));
+ }
+ }
+ return '?' + result.join('&');
+};
+
+var QueryParser$highlight$LQueryParser$ = QueryParser.highlight$LQueryParser$;
+
+/**
+ * class Proposal extends Object
+ * @constructor
+ */
+function Proposal() {
+}
+
+/**
+ * @constructor
+ * @param {!number} omit
+ * @param {!number} expect
+ */
+function Proposal$II(omit, expect) {
+ this.omit = omit;
+ this.expect = expect;
+};
+
+Proposal$II.prototype = new Proposal;
+
+/**
+ * class Position extends Object
+ * @constructor
+ */
+function Position() {
+}
+
+/**
+ * @constructor
+ * @param {!string} word
+ * @param {!number} position
+ * @param {!boolean} stemmed
+ */
+function Position$SIB(word, position, stemmed) {
+ this.word = word;
+ this.position = position;
+ this.stemmed = stemmed;
+};
+
+Position$SIB.prototype = new Position;
+
+/**
+ * class SearchUnit extends Object
+ * @constructor
+ */
+function SearchUnit() {
+}
+
+/**
+ * @constructor
+ * @param {!number} id
+ */
+function SearchUnit$I(id) {
+ this.positions = ({ });
+ this.id = id;
+ this._size = 0;
+ this.score = 0;
+ this.startPosition = -1;
+};
+
+SearchUnit$I.prototype = new SearchUnit;
+
+/**
+ * @param {SearchUnit} $this
+ * @param {!string} word
+ * @param {!number} position
+ * @param {!boolean} stemmed
+ */
+SearchUnit.addPosition$LSearchUnit$SIB = function ($this, word, position, stemmed) {
+ /** @type {Position} */
+ var positionObj;
+ positionObj = $this.positions[position + ""];
+ if (! positionObj) {
+ $this._size++;
+ $this.positions[position + ""] = ({word: word, position: position, stemmed: stemmed});
+ } else {
+ if (positionObj.word.length < word.length) {
+ positionObj.word = word;
+ }
+ positionObj.stemmed = positionObj.stemmed && stemmed;
+ }
+};
+
+var SearchUnit$addPosition$LSearchUnit$SIB = SearchUnit.addPosition$LSearchUnit$SIB;
+
+/**
+ * @param {SearchUnit} $this
+ * @param {!number} position
+ * @return {Position}
+ */
+SearchUnit.get$LSearchUnit$I = function ($this, position) {
+ return $this.positions[position + ""];
+};
+
+var SearchUnit$get$LSearchUnit$I = SearchUnit.get$LSearchUnit$I;
+
+/**
+ * @param {SearchUnit} $this
+ * @return {!number}
+ */
+SearchUnit.size$LSearchUnit$ = function ($this) {
+ return $this._size;
+};
+
+var SearchUnit$size$LSearchUnit$ = SearchUnit.size$LSearchUnit$;
+
+/**
+ * @param {SearchUnit} $this
+ * @param {SearchUnit} rhs
+ */
+SearchUnit.merge$LSearchUnit$LSearchUnit$ = function ($this, rhs) {
+ /** @type {!string} */
+ var position;
+ /** @type {Position} */
+ var pos;
+ for (position in rhs.positions) {
+ pos = rhs.positions[position];
+ SearchUnit$addPosition$LSearchUnit$SIB($this, pos.word, pos.position, pos.stemmed);
+ }
+};
+
+var SearchUnit$merge$LSearchUnit$LSearchUnit$ = SearchUnit.merge$LSearchUnit$LSearchUnit$;
+
+/**
+ * @param {SearchUnit} $this
+ * @return {Array.<undefined|Position>}
+ */
+SearchUnit.getPositions$LSearchUnit$ = function ($this) {
+ /** @type {Array.<undefined|Position>} */
+ var result;
+ /** @type {!string} */
+ var pos;
+ result = [ ];
+ for (pos in $this.positions) {
+ result.push($this.positions[pos]);
+ }
+ result.sort((function (a, b) {
+ return a.position - b.position;
+ }));
+ return result;
+};
+
+var SearchUnit$getPositions$LSearchUnit$ = SearchUnit.getPositions$LSearchUnit$;
+
+/**
+ * class SingleResult extends Object
+ * @constructor
+ */
+function SingleResult() {
+}
+
+/**
+ * @constructor
+ */
+function SingleResult$() {
+ this.units = [ ];
+ this.unitIds = [ ];
+ this.or = false;
+ this.not = false;
+ this.searchWord = '';
+};
+
+SingleResult$.prototype = new SingleResult;
+
+/**
+ * @constructor
+ * @param {!string} searchWord
+ * @param {!boolean} or
+ * @param {!boolean} not
+ */
+function SingleResult$SBB(searchWord, or, not) {
+ this.units = [ ];
+ this.unitIds = [ ];
+ this.or = or;
+ this.not = not;
+ this.searchWord = searchWord;
+};
+
+SingleResult$SBB.prototype = new SingleResult;
+
+/**
+ * @param {SingleResult} $this
+ * @param {!number} unitId
+ * @return {SearchUnit}
+ */
+SingleResult.getSearchUnit$LSingleResult$I = function ($this, unitId) {
+ /** @type {!number} */
+ var existing;
+ /** @type {SearchUnit} */
+ var result;
+ existing = $this.unitIds.indexOf(unitId);
+ if (existing === -1) {
+ result = ({positions: ({ }), id: unitId, _size: 0, score: 0, startPosition: -1});
+ $this.units.push(result);
+ $this.unitIds.push(unitId);
+ } else {
+ result = $this.units[existing];
+ }
+ return result;
+};
+
+var SingleResult$getSearchUnit$LSingleResult$I = SingleResult.getSearchUnit$LSingleResult$I;
+
+/**
+ * @param {SingleResult} $this
+ * @param {SingleResult} rhs
+ * @return {SingleResult}
+ */
+SingleResult.merge$LSingleResult$LSingleResult$ = function ($this, rhs) {
+ /** @type {SingleResult} */
+ var result;
+ result = ({units: [ ], unitIds: [ ], or: false, not: false, searchWord: ''});
+ if (rhs.or) {
+ SingleResult$_orMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs);
+ } else {
+ if (rhs.not) {
+ SingleResult$_notMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs);
+ } else {
+ SingleResult$_andMerge$LSingleResult$LSingleResult$LSingleResult$($this, result, rhs);
+ }
+ }
+ return result;
+};
+
+var SingleResult$merge$LSingleResult$LSingleResult$ = SingleResult.merge$LSingleResult$LSingleResult$;
+
+/**
+ * @param {SingleResult} $this
+ * @return {!number}
+ */
+SingleResult.size$LSingleResult$ = function ($this) {
+ return ($this.units.length | 0);
+};
+
+var SingleResult$size$LSingleResult$ = SingleResult.size$LSingleResult$;
+
+/**
+ * @param {SingleResult} $this
+ * @param {SingleResult} result
+ * @param {SingleResult} rhs
+ */
+SingleResult._andMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) {
+ /** @type {!number} */
+ var i;
+ /** @type {undefined|!number} */
+ var id;
+ /** @type {SearchUnit} */
+ var lhsSection;
+ for (i = 0; i < $this.unitIds.length; i++) {
+ id = $this.unitIds[i];
+ if (rhs.unitIds.indexOf(id) !== -1) {
+ lhsSection = $this.units[i];
+ result.unitIds.push(id);
+ result.units.push(lhsSection);
+ }
+ }
+};
+
+var SingleResult$_andMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._andMerge$LSingleResult$LSingleResult$LSingleResult$;
+
+/**
+ * @param {SingleResult} $this
+ * @param {SingleResult} result
+ * @param {SingleResult} rhs
+ */
+SingleResult._orMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) {
+ /** @type {!number} */
+ var i;
+ /** @type {undefined|!number} */
+ var id;
+ /** @type {SearchUnit} */
+ var rhsSection;
+ /** @type {SearchUnit} */
+ var lhsSection;
+ /** @type {Array.<undefined|!number>} */
+ var unitIds$0;
+ /** @type {Array.<undefined|SearchUnit>} */
+ var units$0;
+ result.unitIds = (unitIds$0 = $this.unitIds).slice(0, unitIds$0.length);
+ result.units = (units$0 = $this.units).slice(0, units$0.length);
+ for (i = 0; i < rhs.unitIds.length; i++) {
+ id = rhs.unitIds[i];
+ rhsSection = rhs.units[i];
+ if (result.unitIds.indexOf(id) !== -1) {
+ lhsSection = result.units[result.unitIds.indexOf(id)];
+ SearchUnit$merge$LSearchUnit$LSearchUnit$(lhsSection, rhsSection);
+ } else {
+ result.unitIds.push(id);
+ result.units.push(rhsSection);
+ }
+ }
+};
+
+var SingleResult$_orMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._orMerge$LSingleResult$LSingleResult$LSingleResult$;
+
+/**
+ * @param {SingleResult} $this
+ * @param {SingleResult} result
+ * @param {SingleResult} rhs
+ */
+SingleResult._notMerge$LSingleResult$LSingleResult$LSingleResult$ = function ($this, result, rhs) {
+ /** @type {!number} */
+ var i;
+ /** @type {undefined|!number} */
+ var id;
+ /** @type {SearchUnit} */
+ var lhsSection;
+ for (i = 0; i < $this.unitIds.length; i++) {
+ id = $this.unitIds[i];
+ if (rhs.unitIds.indexOf(id) === -1) {
+ lhsSection = $this.units[i];
+ result.unitIds.push(id);
+ result.units.push(lhsSection);
+ }
+ }
+};
+
+var SingleResult$_notMerge$LSingleResult$LSingleResult$LSingleResult$ = SingleResult._notMerge$LSingleResult$LSingleResult$LSingleResult$;
+
+/**
+ * class SearchSummary extends Object
+ * @constructor
+ */
+function SearchSummary() {
+}
+
+/**
+ * @constructor
+ */
+function SearchSummary$() {
+ this.sourceResults = [ ];
+ this.result = null;
+ this.oktavia = null;
+};
+
+SearchSummary$.prototype = new SearchSummary;
+
+/**
+ * @constructor
+ * @param {Oktavia} oktavia
+ */
+function SearchSummary$LOktavia$(oktavia) {
+ this.sourceResults = [ ];
+ this.result = null;
+ this.oktavia = oktavia;
+};
+
+SearchSummary$LOktavia$.prototype = new SearchSummary;
+
+/**
+ * @param {SearchSummary} $this
+ * @param {SingleResult} result
+ */
+SearchSummary.addQuery$LSearchSummary$LSingleResult$ = function ($this, result) {
+ $this.sourceResults.push(result);
+};
+
+var SearchSummary$addQuery$LSearchSummary$LSingleResult$ = SearchSummary.addQuery$LSearchSummary$LSingleResult$;
+
+/**
+ * @param {SearchSummary} $this
+ */
+SearchSummary.mergeResult$LSearchSummary$ = function ($this) {
+ $this.result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$($this, $this.sourceResults);
+};
+
+var SearchSummary$mergeResult$LSearchSummary$ = SearchSummary.mergeResult$LSearchSummary$;
+
+/**
+ * @param {SearchSummary} $this
+ * @param {Array.<undefined|SingleResult>} results
+ * @return {SingleResult}
+ */
+SearchSummary.mergeResult$LSearchSummary$ALSingleResult$ = function ($this, results) {
+ /** @type {SingleResult} */
+ var rhs;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var results$len$0;
+ rhs = results[0];
+ for ((i = 1, results$len$0 = results.length); i < results$len$0; i++) {
+ rhs = SingleResult$merge$LSingleResult$LSingleResult$(rhs, results[i]);
+ }
+ return rhs;
+};
+
+var SearchSummary$mergeResult$LSearchSummary$ALSingleResult$ = SearchSummary.mergeResult$LSearchSummary$ALSingleResult$;
+
+/**
+ * @param {SearchSummary} $this
+ * @return {Array.<undefined|Proposal>}
+ */
+SearchSummary.getProposal$LSearchSummary$ = function ($this) {
+ /** @type {Array.<undefined|Proposal>} */
+ var proposals;
+ /** @type {!number} */
+ var i;
+ /** @type {Array.<undefined|SingleResult>} */
+ var tmpSource;
+ /** @type {!number} */
+ var j;
+ /** @type {SingleResult} */
+ var result;
+ proposals = [ ];
+ for (i = 0; i < $this.sourceResults.length; i++) {
+ tmpSource = [ ];
+ for (j = 0; j < $this.sourceResults.length; j++) {
+ if (i !== j) {
+ tmpSource.push($this.sourceResults[j]);
+ }
+ }
+ result = SearchSummary$mergeResult$LSearchSummary$ALSingleResult$($this, tmpSource);
+ proposals.push(({omit: i, expect: result.units.length}));
+ }
+ proposals.sort((function (a, b) {
+ return b.expect - a.expect;
+ }));
+ return proposals;
+};
+
+var SearchSummary$getProposal$LSearchSummary$ = SearchSummary.getProposal$LSearchSummary$;
+
+/**
+ * @param {SearchSummary} $this
+ * @return {Array.<undefined|SearchUnit>}
+ */
+SearchSummary.getSortedResult$LSearchSummary$ = function ($this) {
+ /** @type {Array.<undefined|SearchUnit>} */
+ var result;
+ /** @type {Array.<undefined|SearchUnit>} */
+ var units$0;
+ result = (units$0 = $this.result.units).slice(0, units$0.length);
+ result.sort((function (a, b) {
+ return b.score - a.score;
+ }));
+ return result;
+};
+
+var SearchSummary$getSortedResult$LSearchSummary$ = SearchSummary.getSortedResult$LSearchSummary$;
+
+/**
+ * @param {SearchSummary} $this
+ * @return {!number}
+ */
+SearchSummary.size$LSearchSummary$ = function ($this) {
+ /** @type {SingleResult} */
+ var this$0;
+ this$0 = $this.result;
+ return (this$0.units.length | 0);
+};
+
+var SearchSummary$size$LSearchSummary$ = SearchSummary.size$LSearchSummary$;
+
+/**
+ * @param {SearchSummary} $this
+ * @param {SingleResult} result
+ */
+SearchSummary.add$LSearchSummary$LSingleResult$ = function ($this, result) {
+ $this.sourceResults.push(result);
+};
+
+var SearchSummary$add$LSearchSummary$LSingleResult$ = SearchSummary.add$LSearchSummary$LSingleResult$;
+
+/**
+ * class Style extends Object
+ * @constructor
+ */
+function Style() {
+}
+
+/**
+ * @constructor
+ * @param {!string} mode
+ */
+function Style$S(mode) {
+ this.styles = null;
+ this.escapeHTML = false;
+ switch (mode) {
+ case 'console':
+ this.styles = Style.console;
+ break;
+ case 'html':
+ this.styles = Style.html;
+ break;
+ case 'ignore':
+ this.styles = Style.ignore;
+ break;
+ default:
+ this.styles = Style.ignore;
+ break;
+ }
+ this.escapeHTML = mode === 'html';
+};
+
+Style$S.prototype = new Style;
+
+/**
+ * @param {!string} source
+ * @return {!string}
+ */
+Style.prototype.convert$S = function (source) {
+ /** @type {_HTMLHandler} */
+ var handler;
+ /** @type {SAXParser} */
+ var parser;
+ handler = new _HTMLHandler$HASB(this.styles, this.escapeHTML);
+ parser = new SAXParser$LSAXHandler$(handler);
+ parser.parse$S(source);
+ return handler.text.join('');
+};
+
+/**
+ * class Binary extends Object
+ * @constructor
+ */
+function Binary() {
+}
+
+/**
+ * @constructor
+ */
+function Binary$() {
+};
+
+Binary$.prototype = new Binary;
+
+/**
+ * @param {!number} num
+ * @return {!string}
+ */
+Binary.dump32bitNumber$N = function (num) {
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ result = [ String.fromCharCode(Math.floor(num / 65536)) ];
+ result.push(String.fromCharCode(num % 65536));
+ return result.join("");
+};
+
+var Binary$dump32bitNumber$N = Binary.dump32bitNumber$N;
+
+/**
+ * @param {!string} buffer
+ * @param {!number} offset
+ * @return {!number}
+ */
+Binary.load32bitNumber$SI = function (buffer, offset) {
+ /** @type {!number} */
+ var result;
+ result = buffer.charCodeAt(offset) * 65536 + buffer.charCodeAt(offset + 1);
+ return result;
+};
+
+var Binary$load32bitNumber$SI = Binary.load32bitNumber$SI;
+
+/**
+ * @param {!number} num
+ * @return {!string}
+ */
+Binary.dump16bitNumber$I = function (num) {
+ return String.fromCharCode(num % 65536);
+};
+
+var Binary$dump16bitNumber$I = Binary.dump16bitNumber$I;
+
+/**
+ * @param {!string} buffer
+ * @param {!number} offset
+ * @return {!number}
+ */
+Binary.load16bitNumber$SI = function (buffer, offset) {
+ return (buffer.charCodeAt(offset) | 0);
+};
+
+var Binary$load16bitNumber$SI = Binary.load16bitNumber$SI;
+
+/**
+ * @param {!string} str
+ * @return {!string}
+ */
+Binary.dumpString$S = function (str) {
+ return Binary$dumpString$SLCompressionReport$(str, null);
+};
+
+var Binary$dumpString$S = Binary.dumpString$S;
+
+/**
+ * @param {!string} str
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+Binary.dumpString$SLCompressionReport$ = function (str, report) {
+ /** @type {!number} */
+ var length;
+ /** @type {!boolean} */
+ var compress;
+ /** @type {Array.<undefined|!number>} */
+ var charCodes;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var charCode;
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ /** @type {undefined|!number} */
+ var bytes;
+ if (str.length > 32768) {
+ str = str.slice(0, 32768);
+ }
+ length = str.length;
+ compress = true;
+ charCodes = [ ];
+ for (i = 0; i < length; i++) {
+ charCode = str.charCodeAt(i);
+ if (charCode > 255) {
+ compress = false;
+ break;
+ }
+ charCodes.push(charCode);
+ }
+ if (compress) {
+ result = [ Binary$dump16bitNumber$I(length + 32768) ];
+ for (i = 0; i < length; i += 2) {
+ bytes = charCodes[i];
+ if (i !== length - 1) {
+ bytes += charCodes[i + 1] << 8;
+ }
+ result.push(String.fromCharCode(bytes % 65536));
+ }
+ if (report) {
+ CompressionReport$add$LCompressionReport$II(report, length, Math.ceil(length / 2));
+ }
+ } else {
+ result = [ Binary$dump16bitNumber$I(length), str ];
+ if (report) {
+ CompressionReport$add$LCompressionReport$II(report, length, length);
+ }
+ }
+ return result.join('');
+};
+
+var Binary$dumpString$SLCompressionReport$ = Binary.dumpString$SLCompressionReport$;
+
+/**
+ * @param {!string} buffer
+ * @param {!number} offset
+ * @return {LoadedStringResult}
+ */
+Binary.loadString$SI = function (buffer, offset) {
+ return new LoadedStringResult$SI(buffer, offset);
+};
+
+var Binary$loadString$SI = Binary.loadString$SI;
+
+/**
+ * @param {Array.<undefined|!string>} strList
+ * @return {!string}
+ */
+Binary.dumpStringList$AS = function (strList) {
+ return Binary$dumpStringList$ASLCompressionReport$(strList, null);
+};
+
+var Binary$dumpStringList$AS = Binary.dumpStringList$AS;
+
+/**
+ * @param {Array.<undefined|!string>} strList
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+Binary.dumpStringList$ASLCompressionReport$ = function (strList, report) {
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ /** @type {!number} */
+ var i;
+ result = [ Binary$dump32bitNumber$N(strList.length) ];
+ for (i = 0; i < strList.length; i++) {
+ result.push(Binary$dumpString$SLCompressionReport$(strList[i], report));
+ }
+ return result.join('');
+};
+
+var Binary$dumpStringList$ASLCompressionReport$ = Binary.dumpStringList$ASLCompressionReport$;
+
+/**
+ * @param {!string} buffer
+ * @param {!number} offset
+ * @return {LoadedStringListResult}
+ */
+Binary.loadStringList$SI = function (buffer, offset) {
+ return new LoadedStringListResult$SI(buffer, offset);
+};
+
+var Binary$loadStringList$SI = Binary.loadStringList$SI;
+
+/**
+ * @param {Object.<string, undefined|Array.<undefined|!string>>} strMap
+ * @return {!string}
+ */
+Binary.dumpStringListMap$HAS = function (strMap) {
+ return Binary$dumpStringListMap$HASLCompressionReport$(strMap, null);
+};
+
+var Binary$dumpStringListMap$HAS = Binary.dumpStringListMap$HAS;
+
+/**
+ * @param {Object.<string, undefined|Array.<undefined|!string>>} strMap
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+Binary.dumpStringListMap$HASLCompressionReport$ = function (strMap, report) {
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ /** @type {!number} */
+ var counter;
+ /** @type {!string} */
+ var key;
+ result = [ ];
+ counter = 0;
+ for (key in strMap) {
+ result.push(Binary$dumpString$SLCompressionReport$(key, report));
+ result.push(Binary$dumpStringList$ASLCompressionReport$(strMap[key], report));
+ counter++;
+ }
+ return Binary$dump32bitNumber$N(counter) + result.join('');
+};
+
+var Binary$dumpStringListMap$HASLCompressionReport$ = Binary.dumpStringListMap$HASLCompressionReport$;
+
+/**
+ * @param {!string} buffer
+ * @param {!number} offset
+ * @return {LoadedStringListMapResult}
+ */
+Binary.loadStringListMap$SI = function (buffer, offset) {
+ return new LoadedStringListMapResult$SI(buffer, offset);
+};
+
+var Binary$loadStringListMap$SI = Binary.loadStringListMap$SI;
+
+/**
+ * @param {Array.<undefined|!number>} array
+ * @return {!string}
+ */
+Binary.dump32bitNumberList$AN = function (array) {
+ return Binary$dump32bitNumberList$ANLCompressionReport$(array, null);
+};
+
+var Binary$dump32bitNumberList$AN = Binary.dump32bitNumberList$AN;
+
+/**
+ * @param {Array.<undefined|!number>} array
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+Binary.dump32bitNumberList$ANLCompressionReport$ = function (array, report) {
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ /** @type {!number} */
+ var index;
+ /** @type {!number} */
+ var inputLength;
+ /** @type {!number} */
+ var length;
+ /** @type {!string} */
+ var resultString;
+ /** @type {!number} */
+ var value1$0;
+ /** @type {!number} */
+ var value2$0;
+ result = [ Binary$dump32bitNumber$N(array.length) ];
+ index = 0;
+ inputLength = array.length;
+ while (index < inputLength) {
+ if (array[index] == 0) {
+ length = Binary$_countZero$ANI(array, index);
+ result.push(Binary$_zeroBlock$I(length));
+ index += length;
+ } else {
+ if (Binary$_shouldZebraCode$ANI(array, index)) {
+ result.push(Binary$_createZebraCode$ANI(array, index));
+ value1$0 = array.length;
+ value2$0 = index + 15;
+ index = (value1$0 <= value2$0 ? value1$0 : value2$0);
+ } else {
+ length = Binary$_searchDoubleZero$ANI(array, index);
+ result.push(Binary$_nonZeroBlock$ANII(array, index, length));
+ if (length === 0) {
+ throw new Error('');
+ }
+ index += length;
+ }
+ }
+ }
+ resultString = result.join('');
+ if (report) {
+ CompressionReport$add$LCompressionReport$II(report, array.length * 2 + 2, resultString.length);
+ }
+ return resultString;
+};
+
+var Binary$dump32bitNumberList$ANLCompressionReport$ = Binary.dump32bitNumberList$ANLCompressionReport$;
+
+/**
+ * @param {!string} buffer
+ * @param {!number} offset
+ * @return {LoadedNumberListResult}
+ */
+Binary.load32bitNumberList$SI = function (buffer, offset) {
+ return new LoadedNumberListResult$SI(buffer, offset);
+};
+
+var Binary$load32bitNumberList$SI = Binary.load32bitNumberList$SI;
+
+/**
+ * @param {Array.<undefined|!number>} array
+ * @param {!number} offset
+ * @return {!number}
+ */
+Binary._countZero$ANI = function (array, offset) {
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var array$len$0;
+ for ((i = offset, array$len$0 = array.length); i < array$len$0; i++) {
+ if (array[i] != 0) {
+ return (i - offset | 0);
+ }
+ }
+ return (array.length - offset | 0);
+};
+
+var Binary$_countZero$ANI = Binary._countZero$ANI;
+
+/**
+ * @param {!number} length
+ * @return {!string}
+ */
+Binary._zeroBlock$I = function (length) {
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ result = [ ];
+ while (length > 0) {
+ if (length > 16384) {
+ result.push(Binary$dump16bitNumber$I(16383));
+ length -= 16384;
+ } else {
+ result.push(Binary$dump16bitNumber$I(length - 1));
+ length = 0;
+ }
+ }
+ return result.join('');
+};
+
+var Binary$_zeroBlock$I = Binary._zeroBlock$I;
+
+/**
+ * @param {Array.<undefined|!number>} array
+ * @param {!number} offset
+ * @return {!boolean}
+ */
+Binary._shouldZebraCode$ANI = function (array, offset) {
+ /** @type {!number} */
+ var change;
+ /** @type {!boolean} */
+ var isLastZero;
+ /** @type {!number} */
+ var i;
+ if (array.length - offset < 16) {
+ return true;
+ }
+ change = 0;
+ isLastZero = false;
+ for (i = offset; i < offset + 15; i++) {
+ if (array[i] == 0) {
+ if (! isLastZero) {
+ isLastZero = true;
+ change++;
+ }
+ } else {
+ if (isLastZero) {
+ isLastZero = false;
+ change++;
+ }
+ }
+ }
+ return change > 2;
+};
+
+var Binary$_shouldZebraCode$ANI = Binary._shouldZebraCode$ANI;
+
+/**
+ * @param {Array.<undefined|!number>} array
+ * @param {!number} offset
+ * @return {!number}
+ */
+Binary._searchDoubleZero$ANI = function (array, offset) {
+ /** @type {!boolean} */
+ var isLastZero;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var array$len$0;
+ isLastZero = false;
+ for ((i = offset, array$len$0 = array.length); i < array$len$0; i++) {
+ if (array[i] == 0) {
+ if (isLastZero) {
+ return (i - offset - 1 | 0);
+ }
+ isLastZero = true;
+ } else {
+ isLastZero = false;
+ }
+ }
+ return (array.length - offset | 0);
+};
+
+var Binary$_searchDoubleZero$ANI = Binary._searchDoubleZero$ANI;
+
+/**
+ * @param {Array.<undefined|!number>} array
+ * @param {!number} offset
+ * @param {!number} length
+ * @return {!string}
+ */
+Binary._nonZeroBlock$ANII = function (array, offset, length) {
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ /** @type {!number} */
+ var blockLength;
+ /** @type {!number} */
+ var i;
+ result = [ ];
+ while (length > 0) {
+ if (length > 16384) {
+ blockLength = 16384;
+ length -= 16384;
+ } else {
+ blockLength = length;
+ length = 0;
+ }
+ result.push(Binary$dump16bitNumber$I(blockLength - 1 + 0x4000));
+ for (i = offset; i < offset + blockLength; i++) {
+ result.push(Binary$dump32bitNumber$N(array[i]));
+ }
+ offset += blockLength;
+ }
+ return result.join('');
+};
+
+var Binary$_nonZeroBlock$ANII = Binary._nonZeroBlock$ANII;
+
+/**
+ * @param {Array.<undefined|!number>} array
+ * @param {!number} offset
+ * @return {!string}
+ */
+Binary._createZebraCode$ANI = function (array, offset) {
+ /** @type {!number} */
+ var last;
+ /** @type {!number} */
+ var code;
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var value1$0;
+ /** @type {!number} */
+ var value2$0;
+ value1$0 = offset + 15;
+ value2$0 = array.length;
+ last = (value1$0 <= value2$0 ? value1$0 : value2$0);
+ code = 0x8000;
+ result = [ ];
+ for (i = offset; i < last; i++) {
+ if (array[i] != 0) {
+ result.push(Binary$dump32bitNumber$N(array[i]));
+ code = code + (0x1 << i - offset);
+ }
+ }
+ return String.fromCharCode(code) + result.join('');
+};
+
+var Binary$_createZebraCode$ANI = Binary._createZebraCode$ANI;
+
+/**
+ * @param {!string} str
+ * @return {!string}
+ */
+Binary.base64encode$S = function (str) {
+ /** @type {Array.<undefined|!string>} */
+ var out;
+ /** @type {Array.<undefined|!number>} */
+ var source;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var code;
+ /** @type {!number} */
+ var len;
+ /** @type {!number} */
+ var c1;
+ /** @type {undefined|!number} */
+ var c2;
+ /** @type {undefined|!number} */
+ var c3;
+ out = [ ];
+ source = [ ];
+ for (i = 0; i < str.length; i++) {
+ code = str.charCodeAt(i);
+ source.push(code & 0x00ff, code >>> 8);
+ }
+ len = str.length * 2;
+ i = 0;
+ while (i < len) {
+ c1 = source[i++] & 0xff;
+ if (i === len) {
+ out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2));
+ out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4));
+ out.push("==");
+ break;
+ }
+ c2 = source[i++];
+ if (i === len) {
+ out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2));
+ out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4 | (c2 & 0xF0) >> 4));
+ out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c2 & 0xF) << 2));
+ out.push("=");
+ break;
+ }
+ c3 = source[i++];
+ out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c1 >> 2));
+ out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c1 & 0x3) << 4 | (c2 & 0xF0) >> 4));
+ out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt((c2 & 0xF) << 2 | (c3 & 0xC0) >> 6));
+ out.push("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".charAt(c3 & 0x3F));
+ }
+ return out.join('');
+};
+
+var Binary$base64encode$S = Binary.base64encode$S;
+
+/**
+ * @param {Array.<undefined|!number>} source
+ * @return {!string}
+ */
+Binary._mergeCharCode$AI = function (source) {
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ /** @type {!number} */
+ var i;
+ result = [ ];
+ for (i = 0; i < source.length; i += 2) {
+ result.push(String.fromCharCode(source[i] + (source[i + 1] << 8)));
+ }
+ return result.join('');
+};
+
+var Binary$_mergeCharCode$AI = Binary._mergeCharCode$AI;
+
+/**
+ * @param {!string} str
+ * @return {!string}
+ */
+Binary.base64decode$S = function (str) {
+ /** @type {!number} */
+ var len;
+ /** @type {!number} */
+ var i;
+ /** @type {Array.<undefined|!number>} */
+ var out;
+ /** @type {undefined|!number} */
+ var c1;
+ /** @type {undefined|!number} */
+ var c2;
+ /** @type {!number} */
+ var c3;
+ /** @type {!number} */
+ var c4;
+ len = str.length;
+ i = 0;
+ out = [ ];
+ while (i < len) {
+ do {
+ c1 = Binary._base64DecodeChars[str.charCodeAt(i++) & 0xff];
+ } while (i < len && c1 == -1);
+ if (c1 == -1) {
+ break;
+ }
+ do {
+ c2 = Binary._base64DecodeChars[str.charCodeAt(i++) & 0xff];
+ } while (i < len && c2 == -1);
+ if (c2 == -1) {
+ break;
+ }
+ out.push(c1 << 2 | (c2 & 0x30) >> 4);
+ do {
+ c3 = str.charCodeAt(i++) & 0xff;
+ if (c3 === 61) {
+ return Binary$_mergeCharCode$AI(out);
+ }
+ c3 = Binary._base64DecodeChars[c3];
+ } while (i < len && c3 === -1);
+ if (c3 === -1) {
+ break;
+ }
+ out.push((c2 & 0XF) << 4 | (c3 & 0x3C) >> 2);
+ do {
+ c4 = str.charCodeAt(i++) & 0xff;
+ if (c4 === 61) {
+ return Binary$_mergeCharCode$AI(out);
+ }
+ c4 = (Binary._base64DecodeChars[c4] | 0);
+ } while (i < len && c4 === -1);
+ if (c4 === -1) {
+ break;
+ }
+ out.push((c3 & 0x03) << 6 | c4);
+ }
+ return Binary$_mergeCharCode$AI(out);
+};
+
+var Binary$base64decode$S = Binary.base64decode$S;
+
+/**
+ * class LoadedStringResult extends Object
+ * @constructor
+ */
+function LoadedStringResult() {
+}
+
+/**
+ * @constructor
+ * @param {!string} data
+ * @param {!number} offset
+ */
+function LoadedStringResult$SI(data, offset) {
+ /** @type {!number} */
+ var strLength;
+ /** @type {Array.<undefined|!string>} */
+ var bytes;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var code;
+ /** @type {!number} */
+ var offset$0;
+ this.result = "";
+ this.offset = 0;
+ offset$0 = offset++;
+ strLength = data.charCodeAt(offset$0);
+ if (strLength > 32767) {
+ strLength = strLength - 32768;
+ bytes = [ ];
+ for (i = 0; i < strLength; i += 2) {
+ code = data.charCodeAt(offset);
+ bytes.push(String.fromCharCode(code & 0x00ff));
+ if (i !== strLength - 1) {
+ bytes.push(String.fromCharCode(code >>> 8));
+ }
+ offset++;
+ }
+ this.result = bytes.join('');
+ this.offset = offset;
+ } else {
+ this.result = data.slice(offset, offset + strLength);
+ this.offset = (offset + strLength | 0);
+ }
+};
+
+LoadedStringResult$SI.prototype = new LoadedStringResult;
+
+/**
+ * class LoadedStringListResult extends Object
+ * @constructor
+ */
+function LoadedStringListResult() {
+}
+
+/**
+ * @constructor
+ * @param {!string} data
+ * @param {!number} offset
+ */
+function LoadedStringListResult$SI(data, offset) {
+ /** @type {!number} */
+ var length;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var strLength;
+ /** @type {!string} */
+ var resultStr;
+ /** @type {Array.<undefined|!string>} */
+ var bytes;
+ /** @type {!number} */
+ var j;
+ /** @type {!number} */
+ var code;
+ /** @type {!number} */
+ var result$0;
+ /** @type {!number} */
+ var offset$0;
+ this.offset = 0;
+ this.result = [ ];
+ result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1);
+ length = result$0;
+ offset += 2;
+ for (i = 0; i < length; i++) {
+ offset$0 = offset++;
+ strLength = data.charCodeAt(offset$0);
+ if (strLength > 32767) {
+ strLength = strLength - 32768;
+ bytes = [ ];
+ for (j = 0; j < strLength; j += 2) {
+ code = data.charCodeAt(offset);
+ bytes.push(String.fromCharCode(code & 0x00ff));
+ if (j !== strLength - 1) {
+ bytes.push(String.fromCharCode(code >>> 8));
+ }
+ offset++;
+ }
+ resultStr = bytes.join('');
+ } else {
+ resultStr = data.slice(offset, offset + strLength);
+ offset = (offset + strLength | 0);
+ }
+ this.result.push(resultStr);
+ }
+ this.offset = offset;
+};
+
+LoadedStringListResult$SI.prototype = new LoadedStringListResult;
+
+/**
+ * class LoadedStringListMapResult extends Object
+ * @constructor
+ */
+function LoadedStringListMapResult() {
+}
+
+/**
+ * @constructor
+ * @param {!string} data
+ * @param {!number} offset
+ */
+function LoadedStringListMapResult$SI(data, offset) {
+ /** @type {!number} */
+ var length;
+ /** @type {!number} */
+ var i;
+ /** @type {LoadedStringResult} */
+ var keyResult;
+ /** @type {LoadedStringListResult} */
+ var valueResult;
+ /** @type {!number} */
+ var result$0;
+ /** @type {!number} */
+ var offset$0;
+ this.offset = 0;
+ this.result = ({ });
+ result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1);
+ length = result$0;
+ offset += 2;
+ for (i = 0; i < length; i++) {
+ keyResult = new LoadedStringResult$SI(data, offset);
+ offset$0 = keyResult.offset;
+ valueResult = new LoadedStringListResult$SI(data, offset$0);
+ this.result[keyResult.result] = valueResult.result;
+ offset = valueResult.offset;
+ }
+ this.offset = offset;
+};
+
+LoadedStringListMapResult$SI.prototype = new LoadedStringListMapResult;
+
+/**
+ * class LoadedNumberListResult extends Object
+ * @constructor
+ */
+function LoadedNumberListResult() {
+}
+
+/**
+ * @constructor
+ * @param {!string} data
+ * @param {!number} offset
+ */
+function LoadedNumberListResult$SI(data, offset) {
+ /** @type {!number} */
+ var resultLength;
+ /** @type {!number} */
+ var originalOffset;
+ /** @type {Array.<undefined|!number>} */
+ var result;
+ /** @type {!number} */
+ var tag;
+ /** @type {!number} */
+ var length;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var result$0;
+ /** @type {!number} */
+ var value1$0;
+ this.result = null;
+ this.offset = 0;
+ result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1);
+ resultLength = result$0;
+ originalOffset = offset;
+ offset += 2;
+ result = [ ];
+ while (result.length < resultLength) {
+ tag = data.charCodeAt(offset++);
+ if (tag >>> 15 === 1) {
+ value1$0 = resultLength - result.length;
+ length = (value1$0 <= 15 ? value1$0 : 15);
+ for (i = 0; i < length; i++) {
+ if (tag >>> i & 0x1) {
+ result.push(Binary$load32bitNumber$SI(data, offset));
+ offset += 2;
+ } else {
+ result.push(0);
+ }
+ }
+ } else {
+ if (tag >>> 14 === 1) {
+ length = tag - 0x4000 + 1;
+ for (i = 0; i < length; i++) {
+ result.push(Binary$load32bitNumber$SI(data, offset));
+ offset += 2;
+ }
+ } else {
+ length = tag + 1;
+ for (i = 0; i < length; i++) {
+ result.push(0);
+ }
+ }
+ }
+ }
+ this.result = result;
+ this.offset = offset;
+};
+
+LoadedNumberListResult$SI.prototype = new LoadedNumberListResult;
+
+/**
+ * class CompressionReport extends Object
+ * @constructor
+ */
+function CompressionReport() {
+}
+
+/**
+ * @constructor
+ */
+function CompressionReport$() {
+ this.source = 0;
+ this.result = 0;
+};
+
+CompressionReport$.prototype = new CompressionReport;
+
+/**
+ * @param {CompressionReport} $this
+ * @param {!number} source
+ * @param {!number} result
+ */
+CompressionReport.add$LCompressionReport$II = function ($this, source, result) {
+ $this.source += source;
+ $this.result += result;
+};
+
+var CompressionReport$add$LCompressionReport$II = CompressionReport.add$LCompressionReport$II;
+
+/**
+ * @param {CompressionReport} $this
+ * @return {!number}
+ */
+CompressionReport.rate$LCompressionReport$ = function ($this) {
+ return (Math.round($this.result * 100.0 / $this.source) | 0);
+};
+
+var CompressionReport$rate$LCompressionReport$ = CompressionReport.rate$LCompressionReport$;
+
+/**
+ * class Stemmer
+ * @constructor
+ */
+function Stemmer() {
+}
+
+Stemmer.prototype.$__jsx_implements_Stemmer = true;
+
+/**
+ * @constructor
+ */
+function Stemmer$() {
+};
+
+Stemmer$.prototype = new Stemmer;
+
+/**
+ * class js extends Object
+ * @constructor
+ */
+function js() {
+}
+
+/**
+ * @constructor
+ */
+function js$() {
+};
+
+js$.prototype = new js;
+
+/**
+ * class Metadata extends Object
+ * @constructor
+ */
+function Metadata() {
+}
+
+/**
+ * @constructor
+ * @param {Oktavia} parent
+ */
+function Metadata$LOktavia$(parent) {
+ this._parent = parent;
+ this._bitVector = new BitVector$();
+};
+
+Metadata$LOktavia$.prototype = new Metadata;
+
+/**
+ * @return {!number}
+ */
+Metadata.prototype._size$ = function () {
+ /** @type {BitVector} */
+ var this$0;
+ /** @type {!number} */
+ var i$0;
+ /** @type {BitVector} */
+ var _bitVector$0;
+ this$0 = _bitVector$0 = this._bitVector;
+ i$0 = _bitVector$0._size;
+ return this$0.rank$IB(i$0, true);
+};
+
+/**
+ * @param {!number} index
+ * @return {!string}
+ */
+Metadata.prototype.getContent$I = function (index) {
+ /** @type {!number} */
+ var startPosition;
+ /** @type {!number} */
+ var length;
+ if (index < 0 || this._size$() <= index) {
+ throw new Error("Section.getContent() : range error " + (index + ""));
+ }
+ startPosition = 0;
+ if (index > 0) {
+ startPosition = this._bitVector.select$I(index - 1) + 1;
+ }
+ length = this._bitVector.select$I(index) - startPosition + 1;
+ return this._parent._getSubstring$II(startPosition, length);
+};
+
+/**
+ * @param {!number} index
+ * @return {!number}
+ */
+Metadata.prototype.getStartPosition$I = function (index) {
+ /** @type {!number} */
+ var startPosition;
+ if (index < 0 || this._size$() <= index) {
+ throw new Error("Section.getContent() : range error " + (index + ""));
+ }
+ startPosition = 0;
+ if (index > 0) {
+ startPosition = this._bitVector.select$I(index - 1) + 1;
+ }
+ return (startPosition | 0);
+};
+
+/**
+ * @param {SingleResult} result
+ * @param {Array.<undefined|!number>} positions
+ * @param {!string} word
+ * @param {!boolean} stemmed
+ */
+Metadata.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) {
+};
+
+/**
+ * @param {!number} index
+ * @return {!string}
+ */
+Metadata.prototype.getInformation$I = function (index) {
+ return '';
+};
+
+/**
+ */
+Metadata.prototype._build$ = function () {
+ this._bitVector.build$();
+};
+
+/**
+ * @param {!string} name
+ * @param {!string} data
+ * @param {!number} offset
+ * @return {!number}
+ */
+Metadata.prototype._load$SSI = function (name, data, offset) {
+ offset = this._bitVector.load$SI(data, offset);
+ this._parent._metadataLabels.push(name);
+ this._parent._metadatas[name] = this;
+ return offset;
+};
+
+/**
+ * @return {!string}
+ */
+Metadata.prototype._dump$ = function () {
+ /** @type {BitVector} */
+ var this$0;
+ /** @type {Array.<undefined|!string>} */
+ var contents$0;
+ this$0 = this._bitVector;
+ contents$0 = [ ];
+ contents$0.push(Binary$dump32bitNumber$N(this$0._size));
+ contents$0.push(Binary$dump32bitNumberList$AN(this$0._v));
+ return contents$0.join('');
+};
+
+/**
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+Metadata.prototype._dump$LCompressionReport$ = function (report) {
+ /** @type {BitVector} */
+ var this$0;
+ /** @type {Array.<undefined|!string>} */
+ var contents$0;
+ this$0 = this._bitVector;
+ contents$0 = [ ];
+ contents$0.push(Binary$dump32bitNumber$N(this$0._size));
+ CompressionReport$add$LCompressionReport$II(report, 2, 2);
+ contents$0.push(Binary$dump32bitNumberList$ANLCompressionReport$(this$0._v, report));
+ return contents$0.join('');
+};
+
+/**
+ * class Section extends Metadata
+ * @constructor
+ */
+function Section() {
+}
+
+Section.prototype = new Metadata;
+/**
+ * @constructor
+ * @param {Oktavia} parent
+ */
+function Section$LOktavia$(parent) {
+ this._parent = parent;
+ this._bitVector = new BitVector$();
+ this._names = [ ];
+};
+
+Section$LOktavia$.prototype = new Section;
+
+/**
+ * @param {!string} name
+ */
+Section.prototype.setTail$S = function (name) {
+ /** @type {!number} */
+ var index$0;
+ /** @type {Oktavia} */
+ var this$0;
+ /** @type {FMIndex} */
+ var this$0$0;
+ this$0 = this._parent;
+ this$0$0 = this$0._fmindex;
+ index$0 = this$0$0._substr.length;
+ this._names.push(name);
+ this._bitVector.set$I(index$0 - 1);
+};
+
+/**
+ * @param {!string} name
+ * @param {!number} index
+ */
+Section.prototype.setTail$SI = function (name, index) {
+ this._names.push(name);
+ this._bitVector.set$I(index - 1);
+};
+
+/**
+ * @return {!number}
+ */
+Section.prototype.size$ = function () {
+ return (this._names.length | 0);
+};
+
+/**
+ * @param {!number} position
+ * @return {!number}
+ */
+Section.prototype.getSectionIndex$I = function (position) {
+ /** @type {BitVector} */
+ var this$0;
+ if (position < 0 || this._bitVector.size$() <= position) {
+ throw new Error("Section.getSectionIndex() : range error " + (position + ""));
+ }
+ this$0 = this._bitVector;
+ return this$0.rank$IB(position, true);
+};
+
+/**
+ * @param {!number} index
+ * @return {!string}
+ */
+Section.prototype.getName$I = function (index) {
+ if (index < 0 || this._names.length <= index) {
+ throw new Error("Section.getName() : range error");
+ }
+ return this._names[index];
+};
+
+/**
+ * @param {SingleResult} result
+ * @param {Array.<undefined|!number>} positions
+ * @param {!string} word
+ * @param {!boolean} stemmed
+ */
+Section.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) {
+ /** @type {!number} */
+ var i;
+ /** @type {undefined|!number} */
+ var position;
+ /** @type {!number} */
+ var index;
+ /** @type {SearchUnit} */
+ var unit;
+ for (i = 0; i < positions.length; i++) {
+ position = positions[i];
+ index = this.getSectionIndex$I(position);
+ unit = SingleResult$getSearchUnit$LSingleResult$I(result, index);
+ if (unit.startPosition < 0) {
+ unit.startPosition = this.getStartPosition$I(index);
+ }
+ SearchUnit$addPosition$LSearchUnit$SIB(unit, word, position - unit.startPosition, stemmed);
+ }
+};
+
+/**
+ * @param {!number} index
+ * @return {!string}
+ */
+Section.prototype.getInformation$I = function (index) {
+ return this.getName$I(index);
+};
+
+/**
+ * @param {Oktavia} parent
+ * @param {!string} name
+ * @param {!string} data
+ * @param {!number} offset
+ * @return {!number}
+ */
+Section._load$LOktavia$SSI = function (parent, name, data, offset) {
+ /** @type {LoadedStringListResult} */
+ var strs;
+ /** @type {Section} */
+ var section;
+ /** @type {!number} */
+ var offset$0;
+ strs = new LoadedStringListResult$SI(data, offset);
+ section = new Section$LOktavia$(parent);
+ section._names = strs.result;
+ offset$0 = strs.offset;
+ offset$0 = section._bitVector.load$SI(data, offset$0);
+ section._parent._metadataLabels.push(name);
+ section._parent._metadatas[name] = section;
+ return offset$0;
+};
+
+var Section$_load$LOktavia$SSI = Section._load$LOktavia$SSI;
+
+/**
+ * @return {!string}
+ */
+Section.prototype._dump$ = function () {
+ return [ Binary$dump16bitNumber$I(0), Binary$dumpStringList$AS(this._names), Metadata.prototype._dump$.call(this) ].join('');
+};
+
+/**
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+Section.prototype._dump$LCompressionReport$ = function (report) {
+ CompressionReport$add$LCompressionReport$II(report, 1, 1);
+ return [ Binary$dump16bitNumber$I(0), Binary$dumpStringList$ASLCompressionReport$(this._names, report), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join('');
+};
+
+/**
+ * class Splitter extends Metadata
+ * @constructor
+ */
+function Splitter() {
+}
+
+Splitter.prototype = new Metadata;
+/**
+ * @constructor
+ * @param {Oktavia} parent
+ */
+function Splitter$LOktavia$(parent) {
+ this._parent = parent;
+ this._bitVector = new BitVector$();
+ this.name = null;
+};
+
+Splitter$LOktavia$.prototype = new Splitter;
+
+/**
+ * @constructor
+ * @param {Oktavia} parent
+ * @param {!string} name
+ */
+function Splitter$LOktavia$S(parent, name) {
+ this._parent = parent;
+ this._bitVector = new BitVector$();
+ this.name = name;
+};
+
+Splitter$LOktavia$S.prototype = new Splitter;
+
+/**
+ * @return {!number}
+ */
+Splitter.prototype.size$ = function () {
+ /** @type {BitVector} */
+ var this$0$0;
+ /** @type {!number} */
+ var i$0$0;
+ /** @type {BitVector} */
+ var _bitVector$0;
+ this$0$0 = _bitVector$0 = this._bitVector;
+ i$0$0 = _bitVector$0._size;
+ return this$0$0.rank$IB(i$0$0, true);
+};
+
+/**
+ */
+Splitter.prototype.split$ = function () {
+ /** @type {!number} */
+ var index$0;
+ /** @type {Oktavia} */
+ var this$0;
+ /** @type {FMIndex} */
+ var this$0$0;
+ this$0 = this._parent;
+ this$0$0 = this$0._fmindex;
+ index$0 = this$0$0._substr.length;
+ this._bitVector.set$I(index$0 - 1);
+};
+
+/**
+ * @param {!number} index
+ */
+Splitter.prototype.split$I = function (index) {
+ this._bitVector.set$I(index - 1);
+};
+
+/**
+ * @param {!number} position
+ * @return {!number}
+ */
+Splitter.prototype.getIndex$I = function (position) {
+ /** @type {BitVector} */
+ var this$0;
+ if (position < 0 || this._bitVector.size$() <= position) {
+ throw new Error("Section.getSectionIndex() : range error");
+ }
+ this$0 = this._bitVector;
+ return this$0.rank$IB(position, true);
+};
+
+/**
+ * @param {SingleResult} result
+ * @param {Array.<undefined|!number>} positions
+ * @param {!string} word
+ * @param {!boolean} stemmed
+ */
+Splitter.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) {
+ /** @type {!number} */
+ var i;
+ /** @type {undefined|!number} */
+ var position;
+ /** @type {!number} */
+ var index;
+ /** @type {SearchUnit} */
+ var unit;
+ for (i = 0; i < positions.length; i++) {
+ position = positions[i];
+ index = this.getIndex$I(position);
+ unit = SingleResult$getSearchUnit$LSingleResult$I(result, index);
+ if (unit.startPosition < 0) {
+ unit.startPosition = this.getStartPosition$I(index);
+ }
+ SearchUnit$addPosition$LSearchUnit$SIB(unit, word, position - unit.startPosition, stemmed);
+ }
+};
+
+/**
+ * @param {!number} index
+ * @return {!string}
+ */
+Splitter.prototype.getInformation$I = function (index) {
+ return (this.name != null ? this.name + (index + 1 + "") : '');
+};
+
+/**
+ * @param {Oktavia} parent
+ * @param {!string} name
+ * @param {!string} data
+ * @param {!number} offset
+ * @return {!number}
+ */
+Splitter._load$LOktavia$SSI = function (parent, name, data, offset) {
+ /** @type {Splitter} */
+ var section;
+ section = new Splitter$LOktavia$(parent);
+ offset = section._bitVector.load$SI(data, offset);
+ section._parent._metadataLabels.push(name);
+ section._parent._metadatas[name] = section;
+ return offset;
+};
+
+var Splitter$_load$LOktavia$SSI = Splitter._load$LOktavia$SSI;
+
+/**
+ * @return {!string}
+ */
+Splitter.prototype._dump$ = function () {
+ return [ Binary$dump16bitNumber$I(1), Metadata.prototype._dump$.call(this) ].join('');
+};
+
+/**
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+Splitter.prototype._dump$LCompressionReport$ = function (report) {
+ CompressionReport$add$LCompressionReport$II(report, 1, 1);
+ return [ Binary$dump16bitNumber$I(1), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join('');
+};
+
+/**
+ * class Table extends Metadata
+ * @constructor
+ */
+function Table() {
+}
+
+Table.prototype = new Metadata;
+/**
+ * @constructor
+ * @param {Oktavia} parent
+ * @param {Array.<undefined|!string>} headers
+ */
+function Table$LOktavia$AS(parent, headers) {
+ this._parent = parent;
+ this._bitVector = new BitVector$();
+ this._headers = headers;
+ this._columnTails = new BitVector$();
+};
+
+Table$LOktavia$AS.prototype = new Table;
+
+/**
+ * @return {!number}
+ */
+Table.prototype.rowSize$ = function () {
+ /** @type {BitVector} */
+ var this$0$0;
+ /** @type {!number} */
+ var i$0$0;
+ /** @type {BitVector} */
+ var _bitVector$0;
+ this$0$0 = _bitVector$0 = this._bitVector;
+ i$0$0 = _bitVector$0._size;
+ return this$0$0.rank$IB(i$0$0, true);
+};
+
+/**
+ * @return {!number}
+ */
+Table.prototype.columnSize$ = function () {
+ return (this._headers.length | 0);
+};
+
+/**
+ */
+Table.prototype.setColumnTail$ = function () {
+ /** @type {!number} */
+ var index;
+ /** @type {Oktavia} */
+ var this$0;
+ /** @type {FMIndex} */
+ var this$0$0;
+ /** @type {Oktavia} */
+ var _parent$0;
+ this$0 = _parent$0 = this._parent;
+ this$0$0 = this$0._fmindex;
+ index = this$0$0._substr.length;
+ _parent$0._fmindex.push$S(Oktavia.eob);
+ this._columnTails.set$I(index - 1);
+};
+
+/**
+ */
+Table.prototype.setRowTail$ = function () {
+ /** @type {!number} */
+ var index;
+ /** @type {Oktavia} */
+ var this$0;
+ /** @type {FMIndex} */
+ var this$0$0;
+ this$0 = this._parent;
+ this$0$0 = this$0._fmindex;
+ index = this$0$0._substr.length;
+ this._bitVector.set$I(index - 1);
+};
+
+/**
+ * @param {!number} position
+ * @return {Array.<undefined|!number>}
+ */
+Table.prototype.getCell$I = function (position) {
+ /** @type {!number} */
+ var row;
+ /** @type {!number} */
+ var currentColumn;
+ /** @type {!number} */
+ var lastRowColumn;
+ /** @type {!number} */
+ var startPosition;
+ /** @type {Array.<undefined|!number>} */
+ var result;
+ /** @type {BitVector} */
+ var this$0;
+ /** @type {BitVector} */
+ var this$1;
+ if (position < 0 || this._bitVector.size$() <= position) {
+ throw new Error("Section.getSectionIndex() : range error " + (position + ""));
+ }
+ this$0 = this._bitVector;
+ row = this$0.rank$IB(position, true);
+ this$1 = this._columnTails;
+ currentColumn = this$1.rank$IB(position, true);
+ lastRowColumn = 0;
+ if (row > 0) {
+ startPosition = this._bitVector.select$I(row - 1) + 1;
+ lastRowColumn = this._columnTails.rank$I(startPosition);
+ }
+ result = [ row, currentColumn - lastRowColumn ];
+ return result;
+};
+
+/**
+ * @param {!number} rowIndex
+ * @return {Object.<string, undefined|!string>}
+ */
+Table.prototype.getRowContent$I = function (rowIndex) {
+ /** @type {!string} */
+ var content;
+ /** @type {Array.<undefined|!string>} */
+ var values;
+ /** @type {Object.<string, undefined|!string>} */
+ var result;
+ /** @type {!number} */
+ var i;
+ content = this.getContent$I(rowIndex);
+ values = content.split(Oktavia.eob, this._headers.length);
+ result = ({ });
+ for (i in this._headers) {
+ if (i < values.length) {
+ result[this._headers[i]] = values[i];
+ } else {
+ result[this._headers[i]] = '';
+ }
+ }
+ return result;
+};
+
+/**
+ * @param {SingleResult} result
+ * @param {Array.<undefined|!number>} positions
+ * @param {!string} word
+ * @param {!boolean} stemmed
+ */
+Table.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) {
+};
+
+/**
+ * @param {!number} index
+ * @return {!string}
+ */
+Table.prototype.getInformation$I = function (index) {
+ return '';
+};
+
+/**
+ */
+Table.prototype._build$ = function () {
+ this._bitVector.build$();
+ this._columnTails.build$();
+};
+
+/**
+ * @param {Oktavia} parent
+ * @param {!string} name
+ * @param {!string} data
+ * @param {!number} offset
+ * @return {!number}
+ */
+Table._load$LOktavia$SSI = function (parent, name, data, offset) {
+ /** @type {LoadedStringListResult} */
+ var strs;
+ /** @type {Table} */
+ var table;
+ /** @type {!number} */
+ var offset$0;
+ strs = new LoadedStringListResult$SI(data, offset);
+ table = new Table$LOktavia$AS(parent, strs.result);
+ offset$0 = strs.offset;
+ offset$0 = table._bitVector.load$SI(data, offset$0);
+ table._parent._metadataLabels.push(name);
+ table._parent._metadatas[name] = table;
+ offset = offset$0;
+ return table._columnTails.load$SI(data, offset$0);
+};
+
+var Table$_load$LOktavia$SSI = Table._load$LOktavia$SSI;
+
+/**
+ * @return {!string}
+ */
+Table.prototype._dump$ = function () {
+ return [ Binary$dump16bitNumber$I(2), Binary$dumpStringList$AS(this._headers), Metadata.prototype._dump$.call(this), this._columnTails.dump$() ].join('');
+};
+
+/**
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+Table.prototype._dump$LCompressionReport$ = function (report) {
+ CompressionReport$add$LCompressionReport$II(report, 1, 1);
+ return [ Binary$dump16bitNumber$I(2), Binary$dumpStringList$ASLCompressionReport$(this._headers, report), Metadata.prototype._dump$LCompressionReport$.call(this, report), this._columnTails.dump$LCompressionReport$(report) ].join('');
+};
+
+/**
+ * class Block extends Metadata
+ * @constructor
+ */
+function Block() {
+}
+
+Block.prototype = new Metadata;
+/**
+ * @constructor
+ * @param {Oktavia} parent
+ */
+function Block$LOktavia$(parent) {
+ this._parent = parent;
+ this._bitVector = new BitVector$();
+ this._names = [ ];
+ this._start = false;
+};
+
+Block$LOktavia$.prototype = new Block;
+
+/**
+ * @param {!string} blockName
+ */
+Block.prototype.startBlock$S = function (blockName) {
+ this.startBlock$SI(blockName, this._parent.contentSize$());
+};
+
+/**
+ * @param {!string} blockName
+ * @param {!number} index
+ */
+Block.prototype.startBlock$SI = function (blockName, index) {
+ if (this._start) {
+ throw new Error('Splitter `' + this._names[this._names.length - 1] + '` is not closed');
+ }
+ this._start = true;
+ this._names.push(blockName);
+ this._bitVector.set$I(index - 1);
+};
+
+/**
+ */
+Block.prototype.endBlock$ = function () {
+ this.endBlock$I(this._parent.contentSize$());
+};
+
+/**
+ * @param {!number} index
+ */
+Block.prototype.endBlock$I = function (index) {
+ if (! this._start) {
+ throw new Error('Splitter is not started');
+ }
+ this._start = false;
+ this._bitVector.set$I(index - 1);
+};
+
+/**
+ * @return {!number}
+ */
+Block.prototype.size$ = function () {
+ return (this._names.length | 0);
+};
+
+/**
+ * @param {!number} position
+ * @return {!number}
+ */
+Block.prototype.blockIndex$I = function (position) {
+ /** @type {!number} */
+ var result;
+ /** @type {BitVector} */
+ var this$0;
+ if (position < 0 || this._parent._fmindex.size$() - 1 <= position) {
+ throw new Error("Block.blockIndex() : range error " + (position + ""));
+ }
+ if (position >= this._bitVector.size$()) {
+ position = (this._bitVector.size$() - 1 | 0);
+ result = (this._bitVector.rank$I(position) + 1 | 0);
+ } else {
+ this$0 = this._bitVector;
+ result = this$0.rank$IB(position, true);
+ }
+ return result;
+};
+
+/**
+ * @param {!number} position
+ * @return {!boolean}
+ */
+Block.prototype.inBlock$I = function (position) {
+ /** @type {!number} */
+ var blockIndex;
+ blockIndex = this.blockIndex$I(position);
+ return blockIndex % 2 !== 0;
+};
+
+/**
+ * @param {!number} position
+ * @return {!string}
+ */
+Block.prototype.getBlockContent$I = function (position) {
+ /** @type {!number} */
+ var blockIndex;
+ /** @type {!string} */
+ var result;
+ blockIndex = this.blockIndex$I(position);
+ if (blockIndex % 2 !== 0) {
+ result = this.getContent$I(blockIndex);
+ } else {
+ result = '';
+ }
+ return result;
+};
+
+/**
+ * @param {!number} position
+ * @return {!string}
+ */
+Block.prototype.getBlockName$I = function (position) {
+ /** @type {!number} */
+ var blockIndex;
+ /** @type {!string} */
+ var result;
+ blockIndex = this.blockIndex$I(position);
+ if (blockIndex % 2 !== 0) {
+ result = this._names[blockIndex >>> 1];
+ } else {
+ result = '';
+ }
+ return result;
+};
+
+/**
+ * @param {SingleResult} result
+ * @param {Array.<undefined|!number>} positions
+ * @param {!string} word
+ * @param {!boolean} stemmed
+ */
+Block.prototype.grouping$LSingleResult$AISB = function (result, positions, word, stemmed) {
+};
+
+/**
+ * @param {!number} index
+ * @return {!string}
+ */
+Block.prototype.getInformation$I = function (index) {
+ return '';
+};
+
+/**
+ * @param {Oktavia} parent
+ * @param {!string} name
+ * @param {!string} data
+ * @param {!number} offset
+ * @return {!number}
+ */
+Block._load$LOktavia$SSI = function (parent, name, data, offset) {
+ /** @type {LoadedStringListResult} */
+ var strs;
+ /** @type {Block} */
+ var block;
+ /** @type {!number} */
+ var offset$0;
+ strs = new LoadedStringListResult$SI(data, offset);
+ block = new Block$LOktavia$(parent);
+ block._names = strs.result;
+ offset$0 = strs.offset;
+ offset$0 = block._bitVector.load$SI(data, offset$0);
+ block._parent._metadataLabels.push(name);
+ block._parent._metadatas[name] = block;
+ return offset$0;
+};
+
+var Block$_load$LOktavia$SSI = Block._load$LOktavia$SSI;
+
+/**
+ * @return {!string}
+ */
+Block.prototype._dump$ = function () {
+ return [ Binary$dump16bitNumber$I(3), Binary$dumpStringList$AS(this._names), Metadata.prototype._dump$.call(this) ].join('');
+};
+
+/**
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+Block.prototype._dump$LCompressionReport$ = function (report) {
+ CompressionReport$add$LCompressionReport$II(report, 1, 1);
+ return [ Binary$dump16bitNumber$I(3), Binary$dumpStringList$ASLCompressionReport$(this._names, report), Metadata.prototype._dump$LCompressionReport$.call(this, report) ].join('');
+};
+
+/**
+ * class FMIndex extends Object
+ * @constructor
+ */
+function FMIndex() {
+}
+
+/**
+ * @constructor
+ */
+function FMIndex$() {
+ /** @type {Array.<undefined|!number>} */
+ var _rlt$0;
+ this._ssize = 0;
+ (this._ddic = 0, this._head = 0);
+ this._substr = "";
+ this._sv = new WaveletMatrix$();
+ this._posdic = [ ];
+ this._idic = [ ];
+ _rlt$0 = this._rlt = [ ];
+ _rlt$0.length = 65536;
+};
+
+FMIndex$.prototype = new FMIndex;
+
+/**
+ */
+FMIndex.prototype.clear$ = function () {
+ /** @type {WaveletMatrix} */
+ var this$0;
+ this$0 = this._sv;
+ this$0._bv.length = 0;
+ this$0._seps.length = 0;
+ this$0._size = 0;
+ this._posdic.length = 0;
+ this._idic.length = 0;
+ this._ddic = 0;
+ this._head = 0;
+ this._substr = "";
+};
+
+/**
+ * @return {!number}
+ */
+FMIndex.prototype.size$ = function () {
+ /** @type {WaveletMatrix} */
+ var this$0;
+ this$0 = this._sv;
+ return this$0._size;
+};
+
+/**
+ * @return {!number}
+ */
+FMIndex.prototype.contentSize$ = function () {
+ return this._substr.length;
+};
+
+/**
+ * @param {!string} key
+ * @return {!number}
+ */
+FMIndex.prototype.getRows$S = function (key) {
+ /** @type {Array.<undefined|!number>} */
+ var pos;
+ pos = [ ];
+ return this.getRows$SAI(key, pos);
+};
+
+/**
+ * @param {!string} key
+ * @param {Array.<undefined|!number>} pos
+ * @return {!number}
+ */
+FMIndex.prototype.getRows$SAI = function (key, pos) {
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var code;
+ /** @type {!number} */
+ var first;
+ /** @type {undefined|!number} */
+ var last;
+ /** @type {!number} */
+ var c;
+ /** @type {Array.<undefined|!number>} */
+ var _rlt$0;
+ i = key.length - 1;
+ code = key.charCodeAt(i);
+ first = (_rlt$0 = this._rlt)[code] + 1;
+ last = _rlt$0[code + 1];
+ while (first <= last) {
+ if (i === 0) {
+ pos[0] = (-- first | 0);
+ pos[1] = -- last;
+ return (last - first + 1 | 0);
+ }
+ i--;
+ c = key.charCodeAt(i);
+ first = this._rlt[c] + this._sv.rank$II(first - 1, c) + 1;
+ last = this._rlt[c] + this._sv.rank$II(last, c);
+ }
+ return 0;
+};
+
+/**
+ * @param {!number} i
+ * @return {!number}
+ */
+FMIndex.prototype.getPosition$I = function (i) {
+ /** @type {!number} */
+ var pos;
+ /** @type {!number} */
+ var c;
+ if (i >= this.size$()) {
+ throw new Error("FMIndex.getPosition() : range error");
+ }
+ pos = 0;
+ while (i !== this._head) {
+ if (i % this._ddic === 0) {
+ pos += this._posdic[i / this._ddic] + 1;
+ break;
+ }
+ c = this._sv.get$I(i);
+ i = this._rlt[c] + this._sv.rank$II(i, c);
+ pos++;
+ }
+ return (pos % this.size$() | 0);
+};
+
+/**
+ * @param {!number} pos
+ * @param {!number} len
+ * @return {!string}
+ */
+FMIndex.prototype.getSubstring$II = function (pos, len) {
+ /** @type {!number} */
+ var pos_end;
+ /** @type {!number} */
+ var pos_tmp;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var pos_idic;
+ /** @type {!string} */
+ var substr;
+ /** @type {!number} */
+ var c;
+ /** @type {!number} */
+ var _ddic$0;
+ if (pos >= this.size$()) {
+ throw new Error("FMIndex.getSubstring() : range error");
+ }
+ pos_end = Math.min(pos + len, this.size$());
+ pos_tmp = this.size$() - 1;
+ i = this._head;
+ pos_idic = Math.floor((pos_end + (_ddic$0 = this._ddic) - 2) / _ddic$0);
+ if (pos_idic < this._idic.length) {
+ pos_tmp = pos_idic * this._ddic;
+ i = this._idic[pos_idic];
+ }
+ substr = "";
+ while (pos_tmp >= pos) {
+ c = this._sv.get$I(i);
+ i = this._rlt[c] + this._sv.rank$II(i, c);
+ if (pos_tmp < pos_end) {
+ substr = String.fromCharCode(c) + substr;
+ }
+ if (pos_tmp === 0) {
+ break;
+ }
+ pos_tmp--;
+ }
+ return substr;
+};
+
+/**
+ */
+FMIndex.prototype.build$ = function () {
+ this.build$SIIB(String.fromCharCode(0), 65535, 20, false);
+};
+
+/**
+ * @param {!string} end_marker
+ * @param {!number} ddic
+ * @param {!boolean} verbose
+ */
+FMIndex.prototype.build$SIB = function (end_marker, ddic, verbose) {
+ this.build$SIIB(end_marker, 65535, ddic, verbose);
+};
+
+/**
+ * @param {!string} end_marker
+ * @param {!number} maxChar
+ * @param {!number} ddic
+ * @param {!boolean} verbose
+ */
+FMIndex.prototype.build$SIIB = function (end_marker, maxChar, ddic, verbose) {
+ /** @type {BurrowsWheelerTransform} */
+ var b;
+ /** @type {!string} */
+ var s;
+ /** @type {!number} */
+ var c;
+ /** @type {!string} */
+ var str$0;
+ /** @type {WaveletMatrix} */
+ var this$0;
+ /** @type {!string} */
+ var _str$0;
+ /** @type {Array.<undefined|!number>} */
+ var _suffixarray$0;
+ if (verbose) {
+ console.time("building burrows-wheeler transform");
+ }
+ this._substr += end_marker;
+ b = ({_str: "", _size: 0, _head: 0, _suffixarray: [ ]});
+ str$0 = this._substr;
+ _str$0 = b._str = str$0;
+ b._size = _str$0.length;
+ _suffixarray$0 = b._suffixarray = SAIS$make$S(str$0);
+ b._head = (_suffixarray$0.indexOf(0) | 0);
+ s = BurrowsWheelerTransform$get$LBurrowsWheelerTransform$(b);
+ this._ssize = s.length;
+ this._head = b._head;
+ b._str = "";
+ b._size = 0;
+ b._head = 0;
+ b._suffixarray.length = 0;
+ this._substr = "";
+ if (verbose) {
+ console.timeEnd("building burrows-wheeler transform");
+ }
+ if (verbose) {
+ console.time("building wavelet matrix");
+ }
+ this$0 = this._sv;
+ this$0._bitsize = (Math.ceil(Math.log(maxChar) / 0.6931471805599453) | 0);
+ if (verbose) {
+ console.log(" maxCharCode: ", maxChar);
+ console.log(" bitSize: ", this._sv.bitsize$());
+ }
+ this._sv.build$S(s);
+ if (verbose) {
+ console.timeEnd("building wavelet matrix");
+ }
+ if (verbose) {
+ console.time("caching rank less than");
+ }
+ for (c = 0; c < maxChar; c++) {
+ this._rlt[c] = this._sv.rank_less_than$II(this._sv.size$(), c);
+ }
+ if (verbose) {
+ console.timeEnd("caching rank less than");
+ }
+ this._ddic = ddic;
+ if (verbose) {
+ console.time("building dictionaries");
+ }
+ this._buildDictionaries$();
+ if (verbose) {
+ console.timeEnd("building dictionaries");
+ console.log('');
+ }
+};
+
+/**
+ */
+FMIndex.prototype._buildDictionaries$ = function () {
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var pos;
+ /** @type {!number} */
+ var c;
+ for (i = 0; i < this._ssize / this._ddic + 1; i++) {
+ this._posdic.push(0);
+ this._idic.push(0);
+ }
+ i = this._head;
+ pos = this.size$() - 1;
+ do {
+ if (i % this._ddic === 0) {
+ this._posdic[Math.floor(i / this._ddic)] = (pos | 0);
+ }
+ if (pos % this._ddic === 0) {
+ this._idic[Math.floor(pos / this._ddic)] = (i | 0);
+ }
+ c = this._sv.get$I(i);
+ i = this._rlt[c] + this._sv.rank$II(i, c);
+ pos--;
+ } while (i !== this._head);
+};
+
+/**
+ * @param {!string} doc
+ */
+FMIndex.prototype.push$S = function (doc) {
+ if (doc.length <= 0) {
+ throw new Error("FMIndex::push(): empty string");
+ }
+ this._substr += doc;
+};
+
+/**
+ * @param {!string} keyword
+ * @return {Array.<undefined|!number>}
+ */
+FMIndex.prototype.search$S = function (keyword) {
+ /** @type {Array.<undefined|!number>} */
+ var result;
+ /** @type {Array.<undefined|!number>} */
+ var position;
+ /** @type {!number} */
+ var rows;
+ /** @type {undefined|!number} */
+ var first;
+ /** @type {undefined|!number} */
+ var last;
+ /** @type {undefined|!number} */
+ var i;
+ result = [ ];
+ position = [ ];
+ rows = this.getRows$SAI(keyword, position);
+ if (rows > 0) {
+ first = position[0];
+ last = position[1];
+ for (i = first; i <= last; i++) {
+ result.push(this.getPosition$I(i));
+ }
+ }
+ return result;
+};
+
+/**
+ * @return {!string}
+ */
+FMIndex.prototype.dump$ = function () {
+ return this.dump$B(false);
+};
+
+/**
+ * @param {!boolean} verbose
+ * @return {!string}
+ */
+FMIndex.prototype.dump$B = function (verbose) {
+ /** @type {Array.<undefined|!string>} */
+ var contents;
+ /** @type {CompressionReport} */
+ var report;
+ /** @type {!number} */
+ var i;
+ contents = [ ];
+ report = ({source: 0, result: 0});
+ contents.push(Binary$dump32bitNumber$N(this._ddic));
+ contents.push(Binary$dump32bitNumber$N(this._ssize));
+ contents.push(Binary$dump32bitNumber$N(this._head));
+ CompressionReport$add$LCompressionReport$II(report, 6, 6);
+ contents.push(this._sv.dump$LCompressionReport$(report));
+ if (verbose) {
+ console.log("Serializing FM-index");
+ console.log(' Wavelet Matrix: ' + (contents[3].length * 2 + "") + ' bytes (' + (Math.round(report.result * 100.0 / report.source) + "") + '%)');
+ }
+ contents.push(Binary$dump32bitNumber$N(this._posdic.length));
+ for (i in this._posdic) {
+ contents.push(Binary$dump32bitNumber$N(this._posdic[i]));
+ }
+ for (i in this._idic) {
+ contents.push(Binary$dump32bitNumber$N(this._idic[i]));
+ }
+ if (verbose) {
+ console.log(' Dictionary Cache: ' + (this._idic.length * 16 + "") + ' bytes');
+ }
+ return contents.join("");
+};
+
+/**
+ * @param {!string} data
+ * @return {!number}
+ */
+FMIndex.prototype.load$S = function (data) {
+ return this.load$SI(data, 0);
+};
+
+/**
+ * @param {!string} data
+ * @param {!number} offset
+ * @return {!number}
+ */
+FMIndex.prototype.load$SI = function (data, offset) {
+ /** @type {!number} */
+ var maxChar;
+ /** @type {!number} */
+ var c;
+ /** @type {!number} */
+ var size;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var result$0;
+ /** @type {!number} */
+ var result$1;
+ result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1);
+ this._ddic = (result$0 | 0);
+ this._ssize = (Binary$load32bitNumber$SI(data, offset + 2) | 0);
+ this._head = (Binary$load32bitNumber$SI(data, offset + 4) | 0);
+ offset = this._sv.load$SI(data, offset + 6);
+ maxChar = Math.pow(2, this._sv.bitsize$());
+ for (c = 0; c < maxChar; c++) {
+ this._rlt[c] = this._sv.rank_less_than$II(this._sv.size$(), c);
+ }
+ result$1 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1);
+ size = result$1;
+ offset += 2;
+ for (i = 0; i < size; (i++, offset += 2)) {
+ this._posdic.push(Binary$load32bitNumber$SI(data, offset));
+ }
+ for (i = 0; i < size; (i++, offset += 2)) {
+ this._idic.push(Binary$load32bitNumber$SI(data, offset));
+ }
+ return offset;
+};
+
+/**
+ * class Query extends Object
+ * @constructor
+ */
+function Query() {
+}
+
+/**
+ * @constructor
+ */
+function Query$() {
+ this.word = '';
+ this.or = false;
+ this.not = false;
+ this.raw = false;
+};
+
+Query$.prototype = new Query;
+
+/**
+ * @return {!string}
+ */
+Query.prototype.toString = function () {
+ /** @type {Array.<undefined|!string>} */
+ var result;
+ result = [ ];
+ if (this.or) {
+ result.push("OR ");
+ }
+ if (this.not) {
+ result.push("-");
+ }
+ if (this.raw) {
+ result.push('"', this.word, '"');
+ } else {
+ result.push(this.word);
+ }
+ return result.join('');
+};
+
+/**
+ * class Tag extends Object
+ * @constructor
+ */
+function Tag() {
+}
+
+/**
+ * @constructor
+ * @param {!string} name
+ */
+function Tag$S(name) {
+ this.name = name;
+ this.attributes = ({ });
+ this.isSelfClosing = false;
+};
+
+Tag$S.prototype = new Tag;
+
+/**
+ * class _Common extends Object
+ * @constructor
+ */
+function _Common() {
+}
+
+/**
+ * @constructor
+ */
+function _Common$() {
+};
+
+_Common$.prototype = new _Common;
+
+/**
+ * class _State extends Object
+ * @constructor
+ */
+function _State() {
+}
+
+/**
+ * @constructor
+ */
+function _State$() {
+};
+
+_State$.prototype = new _State;
+
+/**
+ * class SAXHandler extends Object
+ * @constructor
+ */
+function SAXHandler() {
+}
+
+/**
+ * @constructor
+ */
+function SAXHandler$() {
+ this.position = 0;
+ this.column = 0;
+ this.line = 0;
+};
+
+SAXHandler$.prototype = new SAXHandler;
+
+/**
+ * @param {Error} error
+ */
+SAXHandler.prototype.onerror$LError$ = function (error) {
+};
+
+/**
+ * @param {!string} text
+ */
+SAXHandler.prototype.ontext$S = function (text) {
+};
+
+/**
+ * @param {!string} doctype
+ */
+SAXHandler.prototype.ondoctype$S = function (doctype) {
+};
+
+/**
+ * @param {!string} name
+ * @param {!string} body
+ */
+SAXHandler.prototype.onprocessinginstruction$SS = function (name, body) {
+};
+
+/**
+ * @param {!string} sgmlDecl
+ */
+SAXHandler.prototype.onsgmldeclaration$S = function (sgmlDecl) {
+};
+
+/**
+ * @param {!string} tagname
+ * @param {Object.<string, undefined|!string>} attributes
+ */
+SAXHandler.prototype.onopentag$SHS = function (tagname, attributes) {
+};
+
+/**
+ * @param {!string} tagname
+ */
+SAXHandler.prototype.onclosetag$S = function (tagname) {
+};
+
+/**
+ * @param {!string} name
+ * @param {!string} value
+ */
+SAXHandler.prototype.onattribute$SS = function (name, value) {
+};
+
+/**
+ * @param {!string} comment
+ */
+SAXHandler.prototype.oncomment$S = function (comment) {
+};
+
+/**
+ */
+SAXHandler.prototype.onopencdata$ = function () {
+};
+
+/**
+ * @param {!string} cdata
+ */
+SAXHandler.prototype.oncdata$S = function (cdata) {
+};
+
+/**
+ */
+SAXHandler.prototype.onclosecdata$ = function () {
+};
+
+/**
+ */
+SAXHandler.prototype.onend$ = function () {
+};
+
+/**
+ */
+SAXHandler.prototype.onready$ = function () {
+};
+
+/**
+ * @param {!string} script
+ */
+SAXHandler.prototype.onscript$S = function (script) {
+};
+
+/**
+ * class _HTMLHandler extends SAXHandler
+ * @constructor
+ */
+function _HTMLHandler() {
+}
+
+_HTMLHandler.prototype = new SAXHandler;
+/**
+ * @constructor
+ * @param {Object.<string, undefined|Array.<undefined|!string>>} styles
+ * @param {!boolean} escape
+ */
+function _HTMLHandler$HASB(styles, escape) {
+ this.position = 0;
+ this.column = 0;
+ this.line = 0;
+ this.text = [ ];
+ this.escape = escape;
+ this.styles = styles;
+};
+
+_HTMLHandler$HASB.prototype = new _HTMLHandler;
+
+/**
+ * @param {!string} str
+ * @return {!string}
+ */
+_HTMLHandler.escapeHTML$S = function (str) {
+ return str.replace(/\n/g, "<br/>").replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
+};
+
+var _HTMLHandler$escapeHTML$S = _HTMLHandler.escapeHTML$S;
+
+/**
+ * @param {!string} tagname
+ * @param {Object.<string, undefined|!string>} attributes
+ */
+_HTMLHandler.prototype.onopentag$SHS = function (tagname, attributes) {
+ this.text.push(this.styles[tagname][0]);
+};
+
+/**
+ * @param {!string} tagname
+ */
+_HTMLHandler.prototype.onclosetag$S = function (tagname) {
+ this.text.push(this.styles[tagname][1]);
+};
+
+/**
+ * @param {!string} text
+ */
+_HTMLHandler.prototype.ontext$S = function (text) {
+ if (this.escape) {
+ this.text.push(text.replace(/\n/g, "<br/>").replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;"));
+ } else {
+ this.text.push(text);
+ }
+};
+
+/**
+ * @return {!string}
+ */
+_HTMLHandler.prototype.result$ = function () {
+ return this.text.join('');
+};
+
+/**
+ * class SAXParser extends Object
+ * @constructor
+ */
+function SAXParser() {
+}
+
+/**
+ * @constructor
+ * @param {SAXHandler} handler
+ */
+function SAXParser$LSAXHandler$(handler) {
+ this.q = "";
+ this.c = "";
+ this.bufferCheckPosition = 0;
+ this.looseCase = "";
+ this.tags = [ ];
+ this.closed = false;
+ this.closedRoot = false;
+ this.sawRoot = false;
+ this.tag = null;
+ this.error = null;
+ this.handler = null;
+ this.ENTITIES = null;
+ this.strict = false;
+ this.tagName = "";
+ this.state = 0;
+ this.line = 0;
+ this.column = 0;
+ this.position = 0;
+ this.startTagPosition = 0;
+ this.attribName = "";
+ this.attribValue = "";
+ this.script = "";
+ this.textNode = "";
+ this.attribList = null;
+ this.noscript = false;
+ this.cdata = "";
+ this.procInstBody = "";
+ this.procInstName = "";
+ this.doctype = "";
+ this.entity = "";
+ this.sgmlDecl = "";
+ this.comment = "";
+ this.preTags = 0;
+ this._init$LSAXHandler$B(handler, false);
+};
+
+SAXParser$LSAXHandler$.prototype = new SAXParser;
+
+/**
+ * @constructor
+ * @param {SAXHandler} handler
+ * @param {!boolean} strict
+ */
+function SAXParser$LSAXHandler$B(handler, strict) {
+ this.q = "";
+ this.c = "";
+ this.bufferCheckPosition = 0;
+ this.looseCase = "";
+ this.tags = [ ];
+ this.closed = false;
+ this.closedRoot = false;
+ this.sawRoot = false;
+ this.tag = null;
+ this.error = null;
+ this.handler = null;
+ this.ENTITIES = null;
+ this.strict = false;
+ this.tagName = "";
+ this.state = 0;
+ this.line = 0;
+ this.column = 0;
+ this.position = 0;
+ this.startTagPosition = 0;
+ this.attribName = "";
+ this.attribValue = "";
+ this.script = "";
+ this.textNode = "";
+ this.attribList = null;
+ this.noscript = false;
+ this.cdata = "";
+ this.procInstBody = "";
+ this.procInstName = "";
+ this.doctype = "";
+ this.entity = "";
+ this.sgmlDecl = "";
+ this.comment = "";
+ this.preTags = 0;
+ this._init$LSAXHandler$B(handler, strict);
+};
+
+SAXParser$LSAXHandler$B.prototype = new SAXParser;
+
+/**
+ * @param {SAXHandler} handler
+ * @param {!boolean} strict
+ */
+SAXParser.prototype._init$LSAXHandler$B = function (handler, strict) {
+ this.handler = handler;
+ this.clearBuffers$();
+ this.q = "";
+ this.bufferCheckPosition = 65536;
+ this.looseCase = 'toLowerCase';
+ this.tags = [ ];
+ this.closed = this.closedRoot = this.sawRoot = false;
+ this.tag = null;
+ this.error = null;
+ this.strict = strict;
+ this.noscript = strict;
+ this.state = 1;
+ this.ENTITIES = _Entities$entity_list$();
+ this.attribList = [ ];
+ this.noscript = false;
+ this.preTags = 0;
+};
+
+/**
+ * @param {!boolean} flag
+ */
+SAXParser.prototype.set_noscript$B = function (flag) {
+ this.noscript = flag;
+};
+
+/**
+ * @return {SAXParser}
+ */
+SAXParser.prototype.resume$ = function () {
+ this.error = null;
+ return this;
+};
+
+/**
+ * @return {SAXParser}
+ */
+SAXParser.prototype.close$ = function () {
+ return this.parse$S('');
+};
+
+/**
+ * @param {!string} chunk
+ * @return {SAXParser}
+ */
+SAXParser.prototype.parse$S = function (chunk) {
+ /** @type {Char} */
+ var _;
+ /** @type {!number} */
+ var i;
+ /** @type {!string} */
+ var c;
+ /** @type {!number} */
+ var starti;
+ /** @type {!number} */
+ var pad;
+ /** @type {!number} */
+ var returnState;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$0;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$1;
+ /** @type {RegExp} */
+ var charclass$2;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$3;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$4;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$5;
+ /** @type {!string} */
+ var text$0;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$6;
+ /** @type {RegExp} */
+ var charclass$7;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$8;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$9;
+ /** @type {RegExp} */
+ var charclass$10;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$11;
+ /** @type {RegExp} */
+ var charclass$12;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$13;
+ /** @type {RegExp} */
+ var charclass$14;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$15;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$16;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$17;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$18;
+ /** @type {RegExp} */
+ var charclass$19;
+ /** @type {RegExp} */
+ var charclass$20;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$21;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$22;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$23;
+ /** @type {Object.<string, undefined|!boolean>} */
+ var charclass$24;
+ /** @type {!string} */
+ var comment$0;
+ _ = new Char$();
+ if (this.error) {
+ throw this.error;
+ }
+ if (this.closed) {
+ return this.emiterror$S("Cannot write after close. Assign an onready handler.");
+ }
+ (i = 0, c = "");
+ while (this.c = c = chunk.charAt(i++)) {
+ this.position++;
+ if (c === "\n") {
+ this.handler.line++;
+ this.handler.column = 0;
+ } else {
+ this.handler.column++;
+ }
+ switch (this.state) {
+ case 1:
+ if (c === "<") {
+ this.state = 4;
+ this.startTagPosition = this.position;
+ } else {
+ charclass$0 = _.whitespace;
+ if (! $__jsx_ObjectHasOwnProperty.call(charclass$0, c)) {
+ this.strictFail$S("Non-whitespace before first tag.");
+ this.textNode = c;
+ this.state = 2;
+ }
+ }
+ continue;
+ case 2:
+ if (this.sawRoot && ! this.closedRoot) {
+ starti = i - 1;
+ while (c && c !== "<" && c !== "&") {
+ c = chunk.charAt(i++);
+ if (c) {
+ this.position++;
+ if (c === "\n") {
+ this.handler.line++;
+ this.handler.column = 0;
+ } else {
+ this.handler.column++;
+ }
+ }
+ }
+ this.textNode += chunk.substring(starti, i - 1);
+ }
+ if (c === "<") {
+ this.state = 4;
+ this.startTagPosition = this.position;
+ } else {
+ if (_.not$HBS(_.whitespace, c) && (! this.sawRoot || this.closedRoot)) {
+ this.strictFail$S("Text data outside of root node.");
+ }
+ if (c === "&") {
+ this.state = 3;
+ } else {
+ this.textNode += c;
+ }
+ }
+ continue;
+ case 33:
+ if (c === "<") {
+ this.state = 34;
+ } else {
+ this.script += c;
+ }
+ continue;
+ case 34:
+ if (c === "/") {
+ this.state = 31;
+ } else {
+ this.script += "<" + c;
+ this.state = 33;
+ }
+ continue;
+ case 4:
+ if (c === "!") {
+ this.state = 5;
+ this.sgmlDecl = "";
+ } else {
+ charclass$1 = _.whitespace;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$1, c)) {
+ } else {
+ charclass$2 = _.nameStart;
+ if (charclass$2.test(c)) {
+ this.state = 21;
+ this.tagName = c;
+ } else {
+ if (c === "/") {
+ this.state = 31;
+ this.tagName = "";
+ } else {
+ if (c === "?") {
+ this.state = 18;
+ this.procInstName = this.procInstBody = "";
+ } else {
+ this.strictFail$S("Unencoded <");
+ if (this.startTagPosition + 1 < this.position) {
+ pad = this.position - this.startTagPosition;
+ for (i = 0; i < pad; i++) {
+ c = " " + c;
+ }
+ }
+ this.textNode += "<" + c;
+ this.state = 2;
+ }
+ }
+ }
+ }
+ }
+ continue;
+ case 5:
+ if ((this.sgmlDecl + c).toUpperCase() === _.CDATA) {
+ this.closetext_if_exist$();
+ this.state = 15;
+ this.sgmlDecl = "";
+ this.cdata = "";
+ } else {
+ if (this.sgmlDecl + c === "--") {
+ this.state = 12;
+ this.comment = "";
+ this.sgmlDecl = "";
+ } else {
+ if ((this.sgmlDecl + c).toUpperCase() === _.DOCTYPE) {
+ this.state = 7;
+ if (this.doctype || this.sawRoot) {
+ this.strictFail$S("Inappropriately located doctype declaration");
+ }
+ this.doctype = "";
+ this.sgmlDecl = "";
+ } else {
+ if (c === ">") {
+ this.closetext_if_exist$();
+ this.sgmlDecl = "";
+ this.state = 2;
+ } else {
+ charclass$3 = _.quote;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$3, c)) {
+ this.state = 6;
+ this.sgmlDecl += c;
+ } else {
+ this.sgmlDecl += c;
+ }
+ }
+ }
+ }
+ }
+ continue;
+ case 6:
+ if (c === this.q) {
+ this.state = 5;
+ this.q = "";
+ }
+ this.sgmlDecl += c;
+ continue;
+ case 7:
+ if (c === ">") {
+ this.state = 2;
+ this.closetext_if_exist$();
+ this.doctype.trim();
+ } else {
+ this.doctype += c;
+ if (c === "[") {
+ this.state = 9;
+ } else {
+ charclass$4 = _.quote;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$4, c)) {
+ this.state = 8;
+ this.q = c;
+ }
+ }
+ }
+ continue;
+ case 8:
+ this.doctype += c;
+ if (c === this.q) {
+ this.q = "";
+ this.state = 7;
+ }
+ continue;
+ case 9:
+ this.doctype += c;
+ if (c === "]") {
+ this.state = 7;
+ } else {
+ charclass$5 = _.quote;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$5, c)) {
+ this.state = 10;
+ this.q = c;
+ }
+ }
+ continue;
+ case 10:
+ this.doctype += c;
+ if (c === this.q) {
+ this.state = 9;
+ this.q = "";
+ }
+ continue;
+ case 12:
+ if (c === "-") {
+ this.state = 13;
+ } else {
+ this.comment += c;
+ }
+ continue;
+ case 13:
+ if (c === "-") {
+ this.state = 14;
+ text$0 = this.comment;
+ text$0 = text$0.replace(/[\n\t]/g, ' ');
+ text$0 = text$0.replace(/\s\s+/g, " ");
+ comment$0 = this.comment = text$0;
+ if (comment$0) {
+ this.closetext_if_exist$();
+ this.comment.trim();
+ }
+ this.comment = "";
+ } else {
+ this.comment += "-" + c;
+ this.state = 12;
+ }
+ continue;
+ case 14:
+ if (c !== ">") {
+ this.strictFail$S("Malformed comment");
+ this.comment += "--" + c;
+ this.state = 12;
+ } else {
+ this.state = 2;
+ }
+ continue;
+ case 15:
+ if (c === "]") {
+ this.state = 16;
+ } else {
+ this.cdata += c;
+ }
+ continue;
+ case 16:
+ if (c === "]") {
+ this.state = 17;
+ } else {
+ this.cdata += "]" + c;
+ this.state = 15;
+ }
+ continue;
+ case 17:
+ if (c === ">") {
+ if (this.cdata) {
+ this.closetext_if_exist$();
+ }
+ this.cdata = "";
+ this.state = 2;
+ } else {
+ if (c === "]") {
+ this.cdata += "]";
+ } else {
+ this.cdata += "]]" + c;
+ this.state = 15;
+ }
+ }
+ continue;
+ case 18:
+ if (c === "?") {
+ this.state = 20;
+ } else {
+ charclass$6 = _.whitespace;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$6, c)) {
+ this.state = 19;
+ } else {
+ this.procInstName += c;
+ }
+ }
+ continue;
+ case 19:
+ if (! this.procInstBody && _.is$HBS(_.whitespace, c)) {
+ continue;
+ } else {
+ if (c === "?") {
+ this.state = 20;
+ } else {
+ this.procInstBody += c;
+ }
+ }
+ continue;
+ case 20:
+ if (c === ">") {
+ this.closetext_if_exist$();
+ this.procInstName = this.procInstBody = "";
+ this.state = 2;
+ } else {
+ this.procInstBody += "?" + c;
+ this.state = 19;
+ }
+ continue;
+ case 21:
+ charclass$7 = _.nameBody;
+ if (charclass$7.test(c)) {
+ this.tagName += c;
+ } else {
+ this.newTag$();
+ if (c === ">") {
+ this.openTag$B(false);
+ } else {
+ if (c === "/") {
+ this.state = 22;
+ } else {
+ charclass$8 = _.whitespace;
+ if (! $__jsx_ObjectHasOwnProperty.call(charclass$8, c)) {
+ this.strictFail$S("Invalid character in tag name");
+ }
+ this.state = 23;
+ }
+ }
+ }
+ continue;
+ case 22:
+ if (c === ">") {
+ this.openTag$B(true);
+ this.closeTag$();
+ } else {
+ this.strictFail$S("Forward-slash in opening tag not followed by >");
+ this.state = 23;
+ }
+ continue;
+ case 23:
+ charclass$9 = _.whitespace;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$9, c)) {
+ continue;
+ } else {
+ if (c === ">") {
+ this.openTag$B(false);
+ } else {
+ if (c === "/") {
+ this.state = 22;
+ } else {
+ charclass$10 = _.nameStart;
+ if (charclass$10.test(c)) {
+ this.attribName = c;
+ this.attribValue = "";
+ this.state = 24;
+ } else {
+ this.strictFail$S("Invalid attribute name");
+ }
+ }
+ }
+ }
+ continue;
+ case 24:
+ if (c === "=") {
+ this.state = 26;
+ } else {
+ if (c === ">") {
+ this.strictFail$S("Attribute without value");
+ this.attribValue = this.attribName;
+ this.attrib$();
+ this.openTag$B(false);
+ } else {
+ charclass$11 = _.whitespace;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$11, c)) {
+ this.state = 25;
+ } else {
+ charclass$12 = _.nameBody;
+ if (charclass$12.test(c)) {
+ this.attribName += c;
+ } else {
+ this.strictFail$S("Invalid attribute name");
+ }
+ }
+ }
+ }
+ continue;
+ case 25:
+ if (c === "=") {
+ this.state = 26;
+ } else {
+ charclass$13 = _.whitespace;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$13, c)) {
+ continue;
+ } else {
+ this.strictFail$S("Attribute without value");
+ this.tag.attributes[this.attribName] = "";
+ this.attribValue = "";
+ this.closetext_if_exist$();
+ this.attribName = "";
+ if (c === ">") {
+ this.openTag$B(false);
+ } else {
+ charclass$14 = _.nameStart;
+ if (charclass$14.test(c)) {
+ this.attribName = c;
+ this.state = 24;
+ } else {
+ this.strictFail$S("Invalid attribute name");
+ this.state = 23;
+ }
+ }
+ }
+ }
+ continue;
+ case 26:
+ charclass$15 = _.whitespace;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$15, c)) {
+ continue;
+ } else {
+ charclass$16 = _.quote;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$16, c)) {
+ this.q = c;
+ this.state = 27;
+ } else {
+ this.strictFail$S("Unquoted attribute value");
+ this.state = 28;
+ this.attribValue = c;
+ }
+ }
+ continue;
+ case 27:
+ if (c !== this.q) {
+ if (c === "&") {
+ this.state = 29;
+ } else {
+ this.attribValue += c;
+ }
+ continue;
+ }
+ this.attrib$();
+ this.q = "";
+ this.state = 23;
+ continue;
+ case 28:
+ charclass$17 = _.attribEnd;
+ if (! $__jsx_ObjectHasOwnProperty.call(charclass$17, c)) {
+ if (c === "&") {
+ this.state = 30;
+ } else {
+ this.attribValue += c;
+ }
+ continue;
+ }
+ this.attrib$();
+ if (c === ">") {
+ this.openTag$B(false);
+ } else {
+ this.state = 23;
+ }
+ continue;
+ case 31:
+ if (! this.tagName) {
+ charclass$18 = _.whitespace;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$18, c)) {
+ continue;
+ } else {
+ charclass$19 = _.nameStart;
+ if (! charclass$19.test(c)) {
+ if (this.script) {
+ this.script += "</" + c;
+ this.state = 33;
+ } else {
+ this.strictFail$S("Invalid tagname in closing tag.");
+ }
+ } else {
+ this.tagName = c;
+ }
+ }
+ } else {
+ if (c === ">") {
+ this.closeTag$();
+ } else {
+ charclass$20 = _.nameBody;
+ if (charclass$20.test(c)) {
+ this.tagName += c;
+ } else {
+ if (this.script) {
+ this.script += "</" + this.tagName;
+ this.tagName = "";
+ this.state = 33;
+ } else {
+ charclass$21 = _.whitespace;
+ if (! $__jsx_ObjectHasOwnProperty.call(charclass$21, c)) {
+ this.strictFail$S("Invalid tagname in closing tag");
+ }
+ this.state = 32;
+ }
+ }
+ }
+ }
+ continue;
+ case 32:
+ charclass$22 = _.whitespace;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$22, c)) {
+ continue;
+ }
+ if (c === ">") {
+ this.closeTag$();
+ } else {
+ this.strictFail$S("Invalid characters in closing tag");
+ }
+ continue;
+ case 3:
+ if (c === ";") {
+ this.textNode += this.parseEntity$();
+ this.entity = "";
+ this.state = 2;
+ } else {
+ charclass$23 = _.entity;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$23, c)) {
+ this.entity += c;
+ } else {
+ this.strictFail$S("Invalid character entity");
+ this.textNode += "&" + this.entity + c;
+ this.entity = "";
+ this.state = 2;
+ }
+ }
+ continue;
+ case 29:
+ case 30:
+ if (this.state === 29) {
+ returnState = 27;
+ } else {
+ returnState = 28;
+ }
+ if (c === ";") {
+ this.attribValue += this.parseEntity$();
+ this.entity = "";
+ this.state = (returnState | 0);
+ } else {
+ charclass$24 = _.entity;
+ if ($__jsx_ObjectHasOwnProperty.call(charclass$24, c)) {
+ this.entity += c;
+ } else {
+ this.strictFail$S("Invalid character entity");
+ this.attribValue += "&" + this.entity + c;
+ this.entity = "";
+ this.state = (returnState | 0);
+ }
+ }
+ continue;
+ default:
+ throw new Error("Unknown state: " + (this.state + ""));
+ }
+ }
+ this.end$();
+ return this;
+};
+
+/**
+ */
+SAXParser.prototype.clearBuffers$ = function () {
+ this.comment = '';
+ this.sgmlDecl = '';
+ this.textNode = '';
+ this.tagName = '';
+ this.doctype = '';
+ this.procInstName = '';
+ this.procInstBody = '';
+ this.entity = '';
+ this.attribName = '';
+ this.attribValue = '';
+ this.cdata = '';
+ this.script = '';
+};
+
+/**
+ */
+SAXParser.prototype.closetext_if_exist$ = function () {
+ if (this.textNode !== '') {
+ this.closetext$();
+ }
+};
+
+/**
+ */
+SAXParser.prototype.closetext$ = function () {
+ /** @type {!string} */
+ var text;
+ /** @type {!string} */
+ var text$0;
+ if (this.preTags === 0) {
+ text$0 = this.textNode;
+ text$0 = text$0.replace(/[\n\t]/g, ' ');
+ text$0 = text$0.replace(/\s\s+/g, " ");
+ text = text$0;
+ if (text$0) {
+ this.handler.ontext$S(text);
+ }
+ } else {
+ if (this.textNode) {
+ this.handler.ontext$S(this.textNode);
+ }
+ }
+ this.textNode = "";
+};
+
+/**
+ * @param {!string} text
+ * @return {!string}
+ */
+SAXParser.prototype.textopts$S = function (text) {
+ text = text.replace(/[\n\t]/g, ' ');
+ text = text.replace(/\s\s+/g, " ");
+ return text;
+};
+
+/**
+ * @param {!string} er
+ * @return {SAXParser}
+ */
+SAXParser.prototype.emiterror$S = function (er) {
+ /** @type {Error} */
+ var error;
+ this.closetext$();
+ er += "\nLine: " + (this.line + "") + "\nColumn: " + (this.column + "") + "\nChar: " + this.c;
+ error = new Error(er);
+ this.error = error;
+ return this;
+};
+
+/**
+ */
+SAXParser.prototype.end$ = function () {
+ if (! this.closedRoot) {
+ this.strictFail$S("Unclosed root tag");
+ }
+ if (this.state !== 2) {
+ this.emiterror$S("Unexpected end");
+ }
+ this.closetext$();
+ this.c = "";
+ this.closed = true;
+};
+
+/**
+ * @param {!string} message
+ */
+SAXParser.prototype.strictFail$S = function (message) {
+ if (this.strict) {
+ this.emiterror$S(message);
+ }
+};
+
+/**
+ */
+SAXParser.prototype.newTag$ = function () {
+ if (! this.strict) {
+ this.tagName = this.tagName.toLowerCase();
+ }
+ this.tag = ({name: this.tagName, attributes: ({ }), isSelfClosing: false});
+ this.attribList.length = 0;
+};
+
+/**
+ */
+SAXParser.prototype.attrib$ = function () {
+ if (! this.strict) {
+ this.attribName = this.attribName.toLowerCase();
+ }
+ if ($__jsx_ObjectHasOwnProperty.call(this.tag.attributes, this.attribName)) {
+ this.attribName = this.attribValue = "";
+ return;
+ }
+ this.tag.attributes[this.attribName] = this.attribValue;
+ this.closetext_if_exist$();
+ this.attribName = this.attribValue = "";
+};
+
+/**
+ */
+SAXParser.prototype.openTag$ = function () {
+ this.openTag$B(false);
+};
+
+/**
+ * @param {!boolean} selfClosing
+ */
+SAXParser.prototype.openTag$B = function (selfClosing) {
+ /** @type {Tag} */
+ var tag$0;
+ /** @type {Tag} */
+ var tag$1;
+ (tag$0 = this.tag).isSelfClosing = selfClosing;
+ this.sawRoot = true;
+ this.tags.push(tag$0);
+ this.closetext_if_exist$();
+ this.handler.onopentag$SHS((tag$1 = this.tag).name, tag$1.attributes);
+ if (this.tag.name === 'pre') {
+ this.preTags++;
+ }
+ if (! selfClosing) {
+ if (! this.noscript && this.tagName.toLowerCase() === "script") {
+ this.state = 33;
+ } else {
+ this.state = 2;
+ }
+ this.tag = null;
+ this.tagName = "";
+ }
+ this.attribName = this.attribValue = "";
+ this.attribList.length = 0;
+};
+
+/**
+ */
+SAXParser.prototype.closeTag$ = function () {
+ /** @type {!number} */
+ var t;
+ /** @type {!string} */
+ var tagName;
+ /** @type {!string} */
+ var closeTo;
+ /** @type {Tag} */
+ var close;
+ /** @type {!number} */
+ var s;
+ /** @type {Tag} */
+ var tag$0;
+ if (! this.tagName) {
+ this.strictFail$S("Weird empty close tag.");
+ this.textNode += "</>";
+ this.state = 2;
+ return;
+ }
+ if (this.script) {
+ if (this.tagName !== "script") {
+ this.script += "</" + this.tagName + ">";
+ this.tagName = "";
+ this.state = 33;
+ return;
+ }
+ this.closetext_if_exist$();
+ this.script = "";
+ }
+ t = this.tags.length;
+ tagName = this.tagName;
+ if (! this.strict) {
+ tagName = tagName.toLowerCase();
+ }
+ closeTo = tagName;
+ while (t--) {
+ close = this.tags[t];
+ if (close.name !== closeTo) {
+ this.strictFail$S("Unexpected close tag");
+ } else {
+ break;
+ }
+ }
+ if (t < 0) {
+ this.strictFail$S("Unmatched closing tag: " + this.tagName);
+ this.textNode += "</" + this.tagName + ">";
+ this.state = 2;
+ return;
+ }
+ this.tagName = tagName;
+ s = this.tags.length;
+ while (s-- > t) {
+ tag$0 = this.tag = this.tags.pop();
+ this.tagName = tag$0.name;
+ this.closetext_if_exist$();
+ this.handler.onclosetag$S(this.tagName);
+ if (this.tagName === 'pre') {
+ this.preTags--;
+ }
+ }
+ if (t === 0) {
+ this.closedRoot = true;
+ }
+ this.tagName = this.attribValue = this.attribName = "";
+ this.attribList.length = 0;
+ this.state = 2;
+};
+
+/**
+ * @return {!string}
+ */
+SAXParser.prototype.parseEntity$ = function () {
+ /** @type {!string} */
+ var entity;
+ /** @type {!string} */
+ var entityLC;
+ /** @type {!number} */
+ var num;
+ /** @type {!string} */
+ var numStr;
+ entity = this.entity;
+ entityLC = entity.toLowerCase();
+ num = 0;
+ numStr = "";
+ if (this.ENTITIES[entity]) {
+ return this.ENTITIES[entity];
+ }
+ if (this.ENTITIES[entityLC]) {
+ return this.ENTITIES[entityLC];
+ }
+ entity = entityLC;
+ if (entityLC.charAt(0) === "#") {
+ if (entity.charAt(1) === "x") {
+ entity = entity.slice(2);
+ num = $__jsx_parseInt(entity, 16);
+ numStr = num.toString(16);
+ } else {
+ entity = entity.slice(1);
+ num = $__jsx_parseInt(entity, 10);
+ numStr = num.toString(10);
+ }
+ }
+ entity = entity.replace(/^0+/, "");
+ if (numStr.toLowerCase() !== entity) {
+ this.strictFail$S("Invalid character entity");
+ return "&" + this.entity + ";";
+ }
+ return String.fromCharCode(num);
+};
+
+/**
+ * class Char extends Object
+ * @constructor
+ */
+function Char() {
+}
+
+/**
+ * @constructor
+ */
+function Char$() {
+ this.CDATA = "[CDATA[";
+ this.DOCTYPE = "DOCTYPE";
+ this.XML_NAMESPACE = "http://www.w3.org/XML/1998/namespace";
+ this.whitespace = this._charClass$S("\r\n\t ");
+ this.number = this._charClass$S("0124356789");
+ this.letter = this._charClass$S("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ");
+ this.quote = this._charClass$S("'\"");
+ this.entity = this._charClass$S("0124356789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ#");
+ this.attribEnd = this._charClass$S("\r\n\t >");
+ this.nameStart = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/;
+ this.nameBody = /[:_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u00B7\u0300-\u036F\u203F-\u2040\.\d-]/;
+};
+
+Char$.prototype = new Char;
+
+/**
+ * @param {!string} str
+ * @return {Object.<string, undefined|!boolean>}
+ */
+Char.prototype._charClass$S = function (str) {
+ /** @type {Object.<string, undefined|!boolean>} */
+ var result;
+ /** @type {!number} */
+ var i;
+ result = ({ });
+ for (i = 0; i < str.length; i++) {
+ result[str.slice(i, i + 1)] = true;
+ }
+ return result;
+};
+
+/**
+ * @param {RegExp} charclass
+ * @param {!string} c
+ * @return {!boolean}
+ */
+Char.prototype.is$LRegExp$S = function (charclass, c) {
+ return charclass.test(c);
+};
+
+/**
+ * @param {Object.<string, undefined|!boolean>} charclass
+ * @param {!string} c
+ * @return {!boolean}
+ */
+Char.prototype.is$HBS = function (charclass, c) {
+ return $__jsx_ObjectHasOwnProperty.call(charclass, c);
+};
+
+/**
+ * @param {RegExp} charclass
+ * @param {!string} c
+ * @return {!boolean}
+ */
+Char.prototype.not$LRegExp$S = function (charclass, c) {
+ return ! charclass.test(c);
+};
+
+/**
+ * @param {Object.<string, undefined|!boolean>} charclass
+ * @param {!string} c
+ * @return {!boolean}
+ */
+Char.prototype.not$HBS = function (charclass, c) {
+ return ! $__jsx_ObjectHasOwnProperty.call(charclass, c);
+};
+
+/**
+ * class _Entities extends Object
+ * @constructor
+ */
+function _Entities() {
+}
+
+/**
+ * @constructor
+ */
+function _Entities$() {
+};
+
+_Entities$.prototype = new _Entities;
+
+/**
+ * @return {Object.<string, undefined|!string>}
+ */
+_Entities.entity_list$ = function () {
+ /** @type {Object.<string, undefined|!string>} */
+ var result;
+ /** @type {!string} */
+ var key;
+ /** @type {*} */
+ var value;
+ result = ({ });
+ for (key in _Entities._entities) {
+ value = _Entities._entities[key];
+ if (typeof value === 'string') {
+ result[key] = value + "";
+ } else {
+ if (typeof value === 'number') {
+ result[key] = String.fromCharCode(value | 0);
+ }
+ }
+ }
+ return result;
+};
+
+var _Entities$entity_list$ = _Entities.entity_list$;
+
+/**
+ * class BaseStemmer extends Object
+ * @constructor
+ */
+function BaseStemmer() {
+}
+
+$__jsx_merge_interface(BaseStemmer, Stemmer);
+
+/**
+ * @constructor
+ */
+function BaseStemmer$() {
+ /** @type {!string} */
+ var current$0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ this.cache = ({ });
+ current$0 = this.current = "";
+ cursor$0 = this.cursor = 0;
+ limit$0 = this.limit = current$0.length;
+ this.limit_backward = 0;
+ this.bra = cursor$0;
+ this.ket = limit$0;
+};
+
+BaseStemmer$.prototype = new BaseStemmer;
+
+/**
+ * @param {!string} value
+ */
+BaseStemmer.prototype.setCurrent$S = function (value) {
+ /** @type {!string} */
+ var current$0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ current$0 = this.current = value;
+ cursor$0 = this.cursor = 0;
+ limit$0 = this.limit = current$0.length;
+ this.limit_backward = 0;
+ this.bra = cursor$0;
+ this.ket = limit$0;
+};
+
+/**
+ * @return {!string}
+ */
+BaseStemmer.prototype.getCurrent$ = function () {
+ return this.current;
+};
+
+/**
+ * @param {BaseStemmer} other
+ */
+BaseStemmer.prototype.copy_from$LBaseStemmer$ = function (other) {
+ this.current = other.current;
+ this.cursor = other.cursor;
+ this.limit = other.limit;
+ this.limit_backward = other.limit_backward;
+ this.bra = other.bra;
+ this.ket = other.ket;
+};
+
+/**
+ * @param {Array.<undefined|!number>} s
+ * @param {!number} min
+ * @param {!number} max
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.in_grouping$AIII = function (s, min, max) {
+ /** @type {!number} */
+ var ch;
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ ch = this.current.charCodeAt(this.cursor);
+ if (ch > max || ch < min) {
+ return false;
+ }
+ ch -= min;
+ if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) {
+ return false;
+ }
+ this.cursor++;
+ return true;
+};
+
+/**
+ * @param {Array.<undefined|!number>} s
+ * @param {!number} min
+ * @param {!number} max
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.in_grouping_b$AIII = function (s, min, max) {
+ /** @type {!number} */
+ var ch;
+ if (this.cursor <= this.limit_backward) {
+ return false;
+ }
+ ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch > max || ch < min) {
+ return false;
+ }
+ ch -= min;
+ if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) {
+ return false;
+ }
+ this.cursor--;
+ return true;
+};
+
+/**
+ * @param {Array.<undefined|!number>} s
+ * @param {!number} min
+ * @param {!number} max
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.out_grouping$AIII = function (s, min, max) {
+ /** @type {!number} */
+ var ch;
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ ch = this.current.charCodeAt(this.cursor);
+ if (ch > max || ch < min) {
+ this.cursor++;
+ return true;
+ }
+ ch -= min;
+ if ((s[ch >>> 3] & 0X1 << (ch & 0x7)) === 0) {
+ this.cursor++;
+ return true;
+ }
+ return false;
+};
+
+/**
+ * @param {Array.<undefined|!number>} s
+ * @param {!number} min
+ * @param {!number} max
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.out_grouping_b$AIII = function (s, min, max) {
+ /** @type {!number} */
+ var ch;
+ if (this.cursor <= this.limit_backward) {
+ return false;
+ }
+ ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch > max || ch < min) {
+ this.cursor--;
+ return true;
+ }
+ ch -= min;
+ if ((s[ch >>> 3] & 0x1 << (ch & 0x7)) === 0) {
+ this.cursor--;
+ return true;
+ }
+ return false;
+};
+
+/**
+ * @param {!number} min
+ * @param {!number} max
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.in_range$II = function (min, max) {
+ /** @type {!number} */
+ var ch;
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ ch = this.current.charCodeAt(this.cursor);
+ if (ch > max || ch < min) {
+ return false;
+ }
+ this.cursor++;
+ return true;
+};
+
+/**
+ * @param {!number} min
+ * @param {!number} max
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.in_range_b$II = function (min, max) {
+ /** @type {!number} */
+ var ch;
+ if (this.cursor <= this.limit_backward) {
+ return false;
+ }
+ ch = this.current.charCodeAt(this.cursor - 1);
+ if (ch > max || ch < min) {
+ return false;
+ }
+ this.cursor--;
+ return true;
+};
+
+/**
+ * @param {!number} min
+ * @param {!number} max
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.out_range$II = function (min, max) {
+ /** @type {!number} */
+ var ch;
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ ch = this.current.charCodeAt(this.cursor);
+ if (! (ch > max || ch < min)) {
+ return false;
+ }
+ this.cursor++;
+ return true;
+};
+
+/**
+ * @param {!number} min
+ * @param {!number} max
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.out_range_b$II = function (min, max) {
+ /** @type {!number} */
+ var ch;
+ if (this.cursor <= this.limit_backward) {
+ return false;
+ }
+ ch = this.current.charCodeAt(this.cursor - 1);
+ if (! (ch > max || ch < min)) {
+ return false;
+ }
+ this.cursor--;
+ return true;
+};
+
+/**
+ * @param {!number} s_size
+ * @param {!string} s
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.eq_s$IS = function (s_size, s) {
+ /** @type {!number} */
+ var cursor$0;
+ if (this.limit - this.cursor < s_size) {
+ return false;
+ }
+ if (this.current.slice(cursor$0 = this.cursor, cursor$0 + s_size) !== s) {
+ return false;
+ }
+ this.cursor += s_size;
+ return true;
+};
+
+/**
+ * @param {!number} s_size
+ * @param {!string} s
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.eq_s_b$IS = function (s_size, s) {
+ /** @type {!number} */
+ var cursor$0;
+ if (this.cursor - this.limit_backward < s_size) {
+ return false;
+ }
+ if (this.current.slice((cursor$0 = this.cursor) - s_size, cursor$0) !== s) {
+ return false;
+ }
+ this.cursor -= s_size;
+ return true;
+};
+
+/**
+ * @param {!string} s
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.eq_v$S = function (s) {
+ return this.eq_s$IS(s.length, s);
+};
+
+/**
+ * @param {!string} s
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.eq_v_b$S = function (s) {
+ return this.eq_s_b$IS(s.length, s);
+};
+
+/**
+ * @param {Array.<undefined|Among>} v
+ * @param {!number} v_size
+ * @return {!number}
+ */
+BaseStemmer.prototype.find_among$ALAmong$I = function (v, v_size) {
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var j;
+ /** @type {!number} */
+ var c;
+ /** @type {!number} */
+ var l;
+ /** @type {!number} */
+ var common_i;
+ /** @type {!number} */
+ var common_j;
+ /** @type {!boolean} */
+ var first_key_inspected;
+ /** @type {!number} */
+ var k;
+ /** @type {!number} */
+ var diff;
+ /** @type {!number} */
+ var common;
+ /** @type {Among} */
+ var w;
+ /** @type {!number} */
+ var i2;
+ /** @type {!boolean} */
+ var res;
+ i = 0;
+ j = v_size;
+ c = this.cursor;
+ l = this.limit;
+ common_i = 0;
+ common_j = 0;
+ first_key_inspected = false;
+ while (true) {
+ k = i + (j - i >>> 1);
+ diff = 0;
+ common = (common_i < common_j ? common_i : common_j);
+ w = v[k];
+ for (i2 = common; i2 < w.s_size; i2++) {
+ if (c + common === l) {
+ diff = -1;
+ break;
+ }
+ diff = this.current.charCodeAt(c + common) - w.s.charCodeAt(i2);
+ if (diff !== 0) {
+ break;
+ }
+ common++;
+ }
+ if (diff < 0) {
+ j = k;
+ common_j = common;
+ } else {
+ i = k;
+ common_i = common;
+ }
+ if (j - i <= 1) {
+ if (i > 0) {
+ break;
+ }
+ if (j === i) {
+ break;
+ }
+ if (first_key_inspected) {
+ break;
+ }
+ first_key_inspected = true;
+ }
+ }
+ while (true) {
+ w = v[i];
+ if (common_i >= w.s_size) {
+ this.cursor = (c + w.s_size | 0);
+ if (w.method == null) {
+ return w.result;
+ }
+ res = w.method(w.instance);
+ this.cursor = (c + w.s_size | 0);
+ if (res) {
+ return w.result;
+ }
+ }
+ i = w.substring_i;
+ if (i < 0) {
+ return 0;
+ }
+ }
+ return -1;
+};
+
+/**
+ * @param {Array.<undefined|Among>} v
+ * @param {!number} v_size
+ * @return {!number}
+ */
+BaseStemmer.prototype.find_among_b$ALAmong$I = function (v, v_size) {
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var j;
+ /** @type {!number} */
+ var c;
+ /** @type {!number} */
+ var lb;
+ /** @type {!number} */
+ var common_i;
+ /** @type {!number} */
+ var common_j;
+ /** @type {!boolean} */
+ var first_key_inspected;
+ /** @type {!number} */
+ var k;
+ /** @type {!number} */
+ var diff;
+ /** @type {!number} */
+ var common;
+ /** @type {Among} */
+ var w;
+ /** @type {!number} */
+ var i2;
+ /** @type {!boolean} */
+ var res;
+ i = 0;
+ j = v_size;
+ c = this.cursor;
+ lb = this.limit_backward;
+ common_i = 0;
+ common_j = 0;
+ first_key_inspected = false;
+ while (true) {
+ k = i + (j - i >> 1);
+ diff = 0;
+ common = (common_i < common_j ? common_i : common_j);
+ w = v[k];
+ for (i2 = w.s_size - 1 - common; i2 >= 0; i2--) {
+ if (c - common === lb) {
+ diff = -1;
+ break;
+ }
+ diff = this.current.charCodeAt(c - 1 - common) - w.s.charCodeAt(i2);
+ if (diff !== 0) {
+ break;
+ }
+ common++;
+ }
+ if (diff < 0) {
+ j = k;
+ common_j = common;
+ } else {
+ i = k;
+ common_i = common;
+ }
+ if (j - i <= 1) {
+ if (i > 0) {
+ break;
+ }
+ if (j === i) {
+ break;
+ }
+ if (first_key_inspected) {
+ break;
+ }
+ first_key_inspected = true;
+ }
+ }
+ while (true) {
+ w = v[i];
+ if (common_i >= w.s_size) {
+ this.cursor = (c - w.s_size | 0);
+ if (w.method == null) {
+ return w.result;
+ }
+ res = w.method(this);
+ this.cursor = (c - w.s_size | 0);
+ if (res) {
+ return w.result;
+ }
+ }
+ i = w.substring_i;
+ if (i < 0) {
+ return 0;
+ }
+ }
+ return -1;
+};
+
+/**
+ * @param {!number} c_bra
+ * @param {!number} c_ket
+ * @param {!string} s
+ * @return {!number}
+ */
+BaseStemmer.prototype.replace_s$IIS = function (c_bra, c_ket, s) {
+ /** @type {!number} */
+ var adjustment;
+ adjustment = s.length - (c_ket - c_bra);
+ this.current = this.current.slice(0, c_bra) + s + this.current.slice(c_ket);
+ this.limit += (adjustment | 0);
+ if (this.cursor >= c_ket) {
+ this.cursor += (adjustment | 0);
+ } else {
+ if (this.cursor > c_bra) {
+ this.cursor = c_bra;
+ }
+ }
+ return (adjustment | 0);
+};
+
+/**
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.slice_check$ = function () {
+ /** @type {!number} */
+ var bra$0;
+ /** @type {!number} */
+ var ket$0;
+ /** @type {!number} */
+ var limit$0;
+ return ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true);
+};
+
+/**
+ * @param {!string} s
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.slice_from$S = function (s) {
+ /** @type {!boolean} */
+ var result;
+ /** @type {!number} */
+ var bra$0;
+ /** @type {!number} */
+ var ket$0;
+ /** @type {!number} */
+ var limit$0;
+ result = false;
+ if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) {
+ this.replace_s$IIS(this.bra, this.ket, s);
+ result = true;
+ }
+ return result;
+};
+
+/**
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.slice_del$ = function () {
+ return this.slice_from$S("");
+};
+
+/**
+ * @param {!number} c_bra
+ * @param {!number} c_ket
+ * @param {!string} s
+ */
+BaseStemmer.prototype.insert$IIS = function (c_bra, c_ket, s) {
+ /** @type {!number} */
+ var adjustment;
+ adjustment = this.replace_s$IIS(c_bra, c_ket, s);
+ if (c_bra <= this.bra) {
+ this.bra += (adjustment | 0);
+ }
+ if (c_bra <= this.ket) {
+ this.ket += (adjustment | 0);
+ }
+};
+
+/**
+ * @param {!string} s
+ * @return {!string}
+ */
+BaseStemmer.prototype.slice_to$S = function (s) {
+ /** @type {!string} */
+ var result;
+ /** @type {!number} */
+ var bra$0;
+ /** @type {!number} */
+ var ket$0;
+ /** @type {!number} */
+ var limit$0;
+ result = '';
+ if ((bra$0 = this.bra) < 0 || bra$0 > (ket$0 = this.ket) || ket$0 > (limit$0 = this.limit) || limit$0 > this.current.length ? false : true) {
+ result = this.current.slice(this.bra, this.ket);
+ }
+ return result;
+};
+
+/**
+ * @param {!string} s
+ * @return {!string}
+ */
+BaseStemmer.prototype.assign_to$S = function (s) {
+ return this.current.slice(0, this.limit);
+};
+
+/**
+ * @return {!boolean}
+ */
+BaseStemmer.prototype.stem$ = function () {
+ return false;
+};
+
+/**
+ * @param {!string} word
+ * @return {!string}
+ */
+BaseStemmer.prototype.stemWord$S = function (word) {
+ /** @type {undefined|!string} */
+ var result;
+ /** @type {!string} */
+ var current$0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ result = this.cache['.' + word];
+ if (result == null) {
+ current$0 = this.current = word;
+ cursor$0 = this.cursor = 0;
+ limit$0 = this.limit = current$0.length;
+ this.limit_backward = 0;
+ this.bra = cursor$0;
+ this.ket = limit$0;
+ this.stem$();
+ result = this.current;
+ this.cache['.' + word] = result;
+ }
+ return result;
+};
+
+/**
+ * @param {Array.<undefined|!string>} words
+ * @return {Array.<undefined|!string>}
+ */
+BaseStemmer.prototype.stemWords$AS = function (words) {
+ /** @type {Array.<undefined|!string>} */
+ var results;
+ /** @type {!number} */
+ var i;
+ /** @type {undefined|!string} */
+ var word;
+ /** @type {undefined|!string} */
+ var result;
+ /** @type {!string} */
+ var current$0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ results = [ ];
+ for (i = 0; i < words.length; i++) {
+ word = words[i];
+ result = this.cache['.' + word];
+ if (result == null) {
+ current$0 = this.current = word;
+ cursor$0 = this.cursor = 0;
+ limit$0 = this.limit = current$0.length;
+ this.limit_backward = 0;
+ this.bra = cursor$0;
+ this.ket = limit$0;
+ this.stem$();
+ result = this.current;
+ this.cache['.' + word] = result;
+ }
+ results.push(result);
+ }
+ return results;
+};
+
+/**
+ * class TurkishStemmer extends BaseStemmer
+ * @constructor
+ */
+function TurkishStemmer() {
+}
+
+TurkishStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function TurkishStemmer$() {
+ BaseStemmer$.call(this);
+ this.B_continue_stemming_noun_suffixes = false;
+ this.I_strlen = 0;
+};
+
+TurkishStemmer$.prototype = new TurkishStemmer;
+
+/**
+ * @param {TurkishStemmer} other
+ */
+TurkishStemmer.prototype.copy_from$LTurkishStemmer$ = function (other) {
+ this.B_continue_stemming_noun_suffixes = other.B_continue_stemming_noun_suffixes;
+ this.I_strlen = other.I_strlen;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_check_vowel_harmony$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!number} */
+ var v_11;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab11;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab14;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!boolean} */
+ var lab17;
+ /** @type {!boolean} */
+ var lab18;
+ /** @type {!boolean} */
+ var lab20;
+ /** @type {!boolean} */
+ var lab21;
+ /** @type {!boolean} */
+ var lab23;
+ /** @type {!boolean} */
+ var lab25;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var cursor$6;
+ /** @type {!number} */
+ var cursor$7;
+ /** @type {!number} */
+ var cursor$8;
+ v_1 = this.limit - this.cursor;
+golab0:
+ while (true) {
+ v_2 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ break lab1;
+ }
+ this.cursor = this.limit - v_2;
+ break golab0;
+ }
+ cursor$0 = this.cursor = this.limit - v_2;
+ if (cursor$0 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ }
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_3 = this.limit - this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.eq_s_b$IS(1, "a")) {
+ break lab3;
+ }
+ golab4:
+ while (true) {
+ v_4 = this.limit - this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel1, 97, 305)) {
+ break lab5;
+ }
+ this.cursor = this.limit - v_4;
+ break golab4;
+ }
+ cursor$1 = this.cursor = this.limit - v_4;
+ if (cursor$1 <= this.limit_backward) {
+ break lab3;
+ }
+ this.cursor--;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_3;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.eq_s_b$IS(1, "e")) {
+ break lab6;
+ }
+ golab7:
+ while (true) {
+ v_5 = this.limit - this.cursor;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel2, 101, 252)) {
+ break lab8;
+ }
+ this.cursor = this.limit - v_5;
+ break golab7;
+ }
+ cursor$2 = this.cursor = this.limit - v_5;
+ if (cursor$2 <= this.limit_backward) {
+ break lab6;
+ }
+ this.cursor--;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_3;
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! this.eq_s_b$IS(1, "\u0131")) {
+ break lab9;
+ }
+ golab10:
+ while (true) {
+ v_6 = this.limit - this.cursor;
+ lab11 = true;
+ lab11:
+ while (lab11 === true) {
+ lab11 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel3, 97, 305)) {
+ break lab11;
+ }
+ this.cursor = this.limit - v_6;
+ break golab10;
+ }
+ cursor$3 = this.cursor = this.limit - v_6;
+ if (cursor$3 <= this.limit_backward) {
+ break lab9;
+ }
+ this.cursor--;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_3;
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! this.eq_s_b$IS(1, "i")) {
+ break lab12;
+ }
+ golab13:
+ while (true) {
+ v_7 = this.limit - this.cursor;
+ lab14 = true;
+ lab14:
+ while (lab14 === true) {
+ lab14 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel4, 101, 105)) {
+ break lab14;
+ }
+ this.cursor = this.limit - v_7;
+ break golab13;
+ }
+ cursor$4 = this.cursor = this.limit - v_7;
+ if (cursor$4 <= this.limit_backward) {
+ break lab12;
+ }
+ this.cursor--;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_3;
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ if (! this.eq_s_b$IS(1, "o")) {
+ break lab15;
+ }
+ golab16:
+ while (true) {
+ v_8 = this.limit - this.cursor;
+ lab17 = true;
+ lab17:
+ while (lab17 === true) {
+ lab17 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel5, 111, 117)) {
+ break lab17;
+ }
+ this.cursor = this.limit - v_8;
+ break golab16;
+ }
+ cursor$5 = this.cursor = this.limit - v_8;
+ if (cursor$5 <= this.limit_backward) {
+ break lab15;
+ }
+ this.cursor--;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_3;
+ lab18 = true;
+ lab18:
+ while (lab18 === true) {
+ lab18 = false;
+ if (! this.eq_s_b$IS(1, "\u00F6")) {
+ break lab18;
+ }
+ golab19:
+ while (true) {
+ v_9 = this.limit - this.cursor;
+ lab20 = true;
+ lab20:
+ while (lab20 === true) {
+ lab20 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel6, 246, 252)) {
+ break lab20;
+ }
+ this.cursor = this.limit - v_9;
+ break golab19;
+ }
+ cursor$6 = this.cursor = this.limit - v_9;
+ if (cursor$6 <= this.limit_backward) {
+ break lab18;
+ }
+ this.cursor--;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_3;
+ lab21 = true;
+ lab21:
+ while (lab21 === true) {
+ lab21 = false;
+ if (! this.eq_s_b$IS(1, "u")) {
+ break lab21;
+ }
+ golab22:
+ while (true) {
+ v_10 = this.limit - this.cursor;
+ lab23 = true;
+ lab23:
+ while (lab23 === true) {
+ lab23 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel5, 111, 117)) {
+ break lab23;
+ }
+ this.cursor = this.limit - v_10;
+ break golab22;
+ }
+ cursor$7 = this.cursor = this.limit - v_10;
+ if (cursor$7 <= this.limit_backward) {
+ break lab21;
+ }
+ this.cursor--;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_3;
+ if (! this.eq_s_b$IS(1, "\u00FC")) {
+ return false;
+ }
+ golab24:
+ while (true) {
+ v_11 = this.limit - this.cursor;
+ lab25 = true;
+ lab25:
+ while (lab25 === true) {
+ lab25 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel6, 246, 252)) {
+ break lab25;
+ }
+ this.cursor = this.limit - v_11;
+ break golab24;
+ }
+ cursor$8 = this.cursor = this.limit - v_11;
+ if (cursor$8 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ }
+ }
+ this.cursor = this.limit - v_1;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_suffix_with_optional_n_consonant$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.limit - this.cursor;
+ if (! this.eq_s_b$IS(1, "n")) {
+ break lab1;
+ }
+ cursor$0 = this.cursor = this.limit - v_2;
+ if (cursor$0 <= this.limit_backward) {
+ break lab1;
+ }
+ this.cursor--;
+ v_3 = this.limit - this.cursor;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ break lab1;
+ }
+ this.cursor = this.limit - v_3;
+ break lab0;
+ }
+ cursor$1 = this.cursor = (limit$0 = this.limit) - v_1;
+ v_4 = limit$0 - cursor$1;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_5 = this.limit - this.cursor;
+ if (! this.eq_s_b$IS(1, "n")) {
+ break lab2;
+ }
+ this.cursor = this.limit - v_5;
+ return false;
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_4;
+ v_6 = limit$1 - cursor$2;
+ if (cursor$2 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ return false;
+ }
+ this.cursor = this.limit - v_6;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_suffix_with_optional_s_consonant$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.limit - this.cursor;
+ if (! this.eq_s_b$IS(1, "s")) {
+ break lab1;
+ }
+ cursor$0 = this.cursor = this.limit - v_2;
+ if (cursor$0 <= this.limit_backward) {
+ break lab1;
+ }
+ this.cursor--;
+ v_3 = this.limit - this.cursor;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ break lab1;
+ }
+ this.cursor = this.limit - v_3;
+ break lab0;
+ }
+ cursor$1 = this.cursor = (limit$0 = this.limit) - v_1;
+ v_4 = limit$0 - cursor$1;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_5 = this.limit - this.cursor;
+ if (! this.eq_s_b$IS(1, "s")) {
+ break lab2;
+ }
+ this.cursor = this.limit - v_5;
+ return false;
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_4;
+ v_6 = limit$1 - cursor$2;
+ if (cursor$2 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ return false;
+ }
+ this.cursor = this.limit - v_6;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_suffix_with_optional_y_consonant$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.limit - this.cursor;
+ if (! this.eq_s_b$IS(1, "y")) {
+ break lab1;
+ }
+ cursor$0 = this.cursor = this.limit - v_2;
+ if (cursor$0 <= this.limit_backward) {
+ break lab1;
+ }
+ this.cursor--;
+ v_3 = this.limit - this.cursor;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ break lab1;
+ }
+ this.cursor = this.limit - v_3;
+ break lab0;
+ }
+ cursor$1 = this.cursor = (limit$0 = this.limit) - v_1;
+ v_4 = limit$0 - cursor$1;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_5 = this.limit - this.cursor;
+ if (! this.eq_s_b$IS(1, "y")) {
+ break lab2;
+ }
+ this.cursor = this.limit - v_5;
+ return false;
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_4;
+ v_6 = limit$1 - cursor$2;
+ if (cursor$2 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ return false;
+ }
+ this.cursor = this.limit - v_6;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_suffix_with_optional_U_vowel$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.limit - this.cursor;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305)) {
+ break lab1;
+ }
+ cursor$0 = this.cursor = this.limit - v_2;
+ if (cursor$0 <= this.limit_backward) {
+ break lab1;
+ }
+ this.cursor--;
+ v_3 = this.limit - this.cursor;
+ if (! this.out_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ break lab1;
+ }
+ this.cursor = this.limit - v_3;
+ break lab0;
+ }
+ cursor$1 = this.cursor = (limit$0 = this.limit) - v_1;
+ v_4 = limit$0 - cursor$1;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_5 = this.limit - this.cursor;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305)) {
+ break lab2;
+ }
+ this.cursor = this.limit - v_5;
+ return false;
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_4;
+ v_6 = limit$1 - cursor$2;
+ if (cursor$2 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ if (! this.out_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ return false;
+ }
+ this.cursor = this.limit - v_6;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_possessives$ = function () {
+ return (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_sU$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_lArI$ = function () {
+ return (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_yU$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_nU$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_2, 4) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_nUn$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_3, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_yA$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_4, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_nA$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_5, 2) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_DA$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_6, 4) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_ndA$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_7, 2) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_DAn$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_8, 4) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_ndAn$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_9, 2) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_ylA$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_10, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_ki$ = function () {
+ return (! this.eq_s_b$IS(2, "ki") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_ncA$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_11, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_yUm$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_sUn$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_yUz$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_sUnUz$ = function () {
+ return (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_lAr$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_nUz$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_17, 4) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_DUr$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_18, 8) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_cAsInA$ = function () {
+ return (this.find_among_b$ALAmong$I(TurkishStemmer.a_19, 2) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_yDU$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_ysA$ = function () {
+ return (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_ymUs_$ = function () {
+ return (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_mark_yken$ = function () {
+ return (! this.eq_s_b$IS(3, "ken") ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_stem_nominal_verb_suffixes$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab11;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!boolean} */
+ var lab14;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!boolean} */
+ var lab16;
+ /** @type {!boolean} */
+ var lab17;
+ /** @type {!boolean} */
+ var lab18;
+ /** @type {!boolean} */
+ var lab19;
+ /** @type {!boolean} */
+ var lab20;
+ /** @type {!boolean} */
+ var lab21;
+ /** @type {!boolean} */
+ var lab22;
+ /** @type {!boolean} */
+ var lab23;
+ /** @type {!boolean} */
+ var lab24;
+ /** @type {!boolean} */
+ var lab25;
+ /** @type {!boolean} */
+ var lab26;
+ /** @type {!boolean} */
+ var lab27;
+ /** @type {!boolean} */
+ var lab28;
+ /** @type {!boolean} */
+ var lab29;
+ /** @type {!boolean} */
+ var lab30;
+ /** @type {!boolean} */
+ var lab31;
+ /** @type {!boolean} */
+ var lab32;
+ /** @type {!boolean} */
+ var lab33;
+ /** @type {!boolean} */
+ var lab34;
+ this.ket = this.cursor;
+ this.B_continue_stemming_noun_suffixes = true;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_2 = this.limit - this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab3;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_2;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab4;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_2;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab5;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_2;
+ if (! (! this.eq_s_b$IS(3, "ken") ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab1;
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_19, 2) === 0 ? false : true)) {
+ break lab6;
+ }
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ v_3 = this.limit - this.cursor;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true)) {
+ break lab8;
+ }
+ break lab7;
+ }
+ this.cursor = this.limit - v_3;
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ break lab9;
+ }
+ break lab7;
+ }
+ this.cursor = this.limit - v_3;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab10;
+ }
+ break lab7;
+ }
+ this.cursor = this.limit - v_3;
+ lab11 = true;
+ lab11:
+ while (lab11 === true) {
+ lab11 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true)) {
+ break lab11;
+ }
+ break lab7;
+ }
+ this.cursor = this.limit - v_3;
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab12;
+ }
+ break lab7;
+ }
+ this.cursor = this.limit - v_3;
+ }
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab6;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab13 = true;
+ lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ break lab13;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_4 = this.limit - this.cursor;
+ lab14 = true;
+ lab14:
+ while (lab14 === true) {
+ lab14 = false;
+ this.ket = this.cursor;
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ v_5 = this.limit - this.cursor;
+ lab16 = true;
+ lab16:
+ while (lab16 === true) {
+ lab16 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_18, 8) === 0 ? false : true)) {
+ break lab16;
+ }
+ break lab15;
+ }
+ this.cursor = this.limit - v_5;
+ lab17 = true;
+ lab17:
+ while (lab17 === true) {
+ lab17 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab17;
+ }
+ break lab15;
+ }
+ this.cursor = this.limit - v_5;
+ lab18 = true;
+ lab18:
+ while (lab18 === true) {
+ lab18 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab18;
+ }
+ break lab15;
+ }
+ this.cursor = this.limit - v_5;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ this.cursor = this.limit - v_4;
+ break lab14;
+ }
+ }
+ }
+ this.B_continue_stemming_noun_suffixes = false;
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab19 = true;
+ lab19:
+ while (lab19 === true) {
+ lab19 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_17, 4) === 0 ? false : true)) {
+ break lab19;
+ }
+ lab20 = true;
+ lab20:
+ while (lab20 === true) {
+ lab20 = false;
+ v_6 = this.limit - this.cursor;
+ lab21 = true;
+ lab21:
+ while (lab21 === true) {
+ lab21 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_20, 32) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab21;
+ }
+ break lab20;
+ }
+ this.cursor = this.limit - v_6;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_21, 8) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab19;
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab22 = true;
+ lab22:
+ while (lab22 === true) {
+ lab22 = false;
+ lab23 = true;
+ lab23:
+ while (lab23 === true) {
+ lab23 = false;
+ v_7 = this.limit - this.cursor;
+ lab24 = true;
+ lab24:
+ while (lab24 === true) {
+ lab24 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true)) {
+ break lab24;
+ }
+ break lab23;
+ }
+ this.cursor = this.limit - v_7;
+ lab25 = true;
+ lab25:
+ while (lab25 === true) {
+ lab25 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab25;
+ }
+ break lab23;
+ }
+ this.cursor = this.limit - v_7;
+ lab26 = true;
+ lab26:
+ while (lab26 === true) {
+ lab26 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true)) {
+ break lab26;
+ }
+ break lab23;
+ }
+ this.cursor = this.limit - v_7;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab22;
+ }
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_8 = this.limit - this.cursor;
+ lab27 = true;
+ lab27:
+ while (lab27 === true) {
+ lab27 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ this.cursor = this.limit - v_8;
+ break lab27;
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_18, 8) === 0 ? false : true)) {
+ return false;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_9 = this.limit - this.cursor;
+ lab28 = true;
+ lab28:
+ while (lab28 === true) {
+ lab28 = false;
+ this.ket = this.cursor;
+ lab29 = true;
+ lab29:
+ while (lab29 === true) {
+ lab29 = false;
+ v_10 = this.limit - this.cursor;
+ lab30 = true;
+ lab30:
+ while (lab30 === true) {
+ lab30 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_15, 4) === 0 ? false : true)) {
+ break lab30;
+ }
+ break lab29;
+ }
+ this.cursor = this.limit - v_10;
+ lab31 = true;
+ lab31:
+ while (lab31 === true) {
+ lab31 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ break lab31;
+ }
+ break lab29;
+ }
+ this.cursor = this.limit - v_10;
+ lab32 = true;
+ lab32:
+ while (lab32 === true) {
+ lab32 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_12, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab32;
+ }
+ break lab29;
+ }
+ this.cursor = this.limit - v_10;
+ lab33 = true;
+ lab33:
+ while (lab33 === true) {
+ lab33 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_13, 4) === 0 ? false : true)) {
+ break lab33;
+ }
+ break lab29;
+ }
+ this.cursor = this.limit - v_10;
+ lab34 = true;
+ lab34:
+ while (lab34 === true) {
+ lab34 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_14, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab34;
+ }
+ break lab29;
+ }
+ this.cursor = this.limit - v_10;
+ }
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_22, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ this.cursor = this.limit - v_9;
+ break lab28;
+ }
+ }
+ }
+ this.bra = this.cursor;
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_stem_suffix_chain_before_ki$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!number} */
+ var v_11;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab11;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!boolean} */
+ var lab14;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!boolean} */
+ var lab16;
+ /** @type {!boolean} */
+ var lab17;
+ /** @type {!boolean} */
+ var lab18;
+ this.ket = this.cursor;
+ if (! (! this.eq_s_b$IS(2, "ki") ? false : true)) {
+ return false;
+ }
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_6, 4) === 0 ? false : true)) {
+ break lab1;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_2 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ this.ket = this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ v_3 = this.limit - this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ break lab4;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_4 = this.limit - this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_4;
+ break lab5;
+ }
+ }
+ break lab3;
+ }
+ this.cursor = this.limit - v_3;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) {
+ this.cursor = this.limit - v_2;
+ break lab2;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_5 = this.limit - this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_5;
+ break lab6;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_5;
+ break lab6;
+ }
+ }
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_3, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true)) {
+ break lab7;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_6 = this.limit - this.cursor;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ this.ket = this.cursor;
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ v_7 = this.limit - this.cursor;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) {
+ break lab10;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab9;
+ }
+ this.cursor = this.limit - v_7;
+ lab11 = true;
+ lab11:
+ while (lab11 === true) {
+ lab11 = false;
+ this.ket = this.cursor;
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ v_8 = this.limit - this.cursor;
+ lab13 = true;
+ lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) {
+ break lab13;
+ }
+ break lab12;
+ }
+ this.cursor = this.limit - v_8;
+ if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) {
+ break lab11;
+ }
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_9 = this.limit - this.cursor;
+ lab14 = true;
+ lab14:
+ while (lab14 === true) {
+ lab14 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_9;
+ break lab14;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_9;
+ break lab14;
+ }
+ }
+ break lab9;
+ }
+ this.cursor = this.limit - v_7;
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_6;
+ break lab8;
+ }
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_7, 2) === 0 ? false : true)) {
+ return false;
+ }
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ v_10 = this.limit - this.cursor;
+ lab16 = true;
+ lab16:
+ while (lab16 === true) {
+ lab16 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) {
+ break lab16;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab15;
+ }
+ this.cursor = this.limit - v_10;
+ lab17 = true;
+ lab17:
+ while (lab17 === true) {
+ lab17 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) {
+ break lab17;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_11 = this.limit - this.cursor;
+ lab18 = true;
+ lab18:
+ while (lab18 === true) {
+ lab18 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_11;
+ break lab18;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_11;
+ break lab18;
+ }
+ }
+ break lab15;
+ }
+ this.cursor = this.limit - v_10;
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ return false;
+ }
+ }
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_stem_noun_suffixes$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!number} */
+ var v_11;
+ /** @type {!number} */
+ var v_12;
+ /** @type {!number} */
+ var v_13;
+ /** @type {!number} */
+ var v_14;
+ /** @type {!number} */
+ var v_15;
+ /** @type {!number} */
+ var v_16;
+ /** @type {!number} */
+ var v_17;
+ /** @type {!number} */
+ var v_18;
+ /** @type {!number} */
+ var v_19;
+ /** @type {!number} */
+ var v_20;
+ /** @type {!number} */
+ var v_21;
+ /** @type {!number} */
+ var v_22;
+ /** @type {!number} */
+ var v_23;
+ /** @type {!number} */
+ var v_24;
+ /** @type {!number} */
+ var v_25;
+ /** @type {!number} */
+ var v_26;
+ /** @type {!number} */
+ var v_27;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab11;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!boolean} */
+ var lab14;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!boolean} */
+ var lab16;
+ /** @type {!boolean} */
+ var lab17;
+ /** @type {!boolean} */
+ var lab18;
+ /** @type {!boolean} */
+ var lab19;
+ /** @type {!boolean} */
+ var lab20;
+ /** @type {!boolean} */
+ var lab21;
+ /** @type {!boolean} */
+ var lab22;
+ /** @type {!boolean} */
+ var lab23;
+ /** @type {!boolean} */
+ var lab24;
+ /** @type {!boolean} */
+ var lab25;
+ /** @type {!boolean} */
+ var lab26;
+ /** @type {!boolean} */
+ var lab27;
+ /** @type {!boolean} */
+ var lab28;
+ /** @type {!boolean} */
+ var lab29;
+ /** @type {!boolean} */
+ var lab30;
+ /** @type {!boolean} */
+ var lab31;
+ /** @type {!boolean} */
+ var lab32;
+ /** @type {!boolean} */
+ var lab33;
+ /** @type {!boolean} */
+ var lab34;
+ /** @type {!boolean} */
+ var lab35;
+ /** @type {!boolean} */
+ var lab36;
+ /** @type {!boolean} */
+ var lab37;
+ /** @type {!boolean} */
+ var lab38;
+ /** @type {!boolean} */
+ var lab39;
+ /** @type {!boolean} */
+ var lab40;
+ /** @type {!boolean} */
+ var lab41;
+ /** @type {!boolean} */
+ var lab42;
+ /** @type {!boolean} */
+ var lab43;
+ /** @type {!boolean} */
+ var lab44;
+ /** @type {!boolean} */
+ var lab45;
+ /** @type {!boolean} */
+ var lab46;
+ /** @type {!boolean} */
+ var lab47;
+ /** @type {!boolean} */
+ var lab48;
+ /** @type {!boolean} */
+ var lab49;
+ /** @type {!boolean} */
+ var lab50;
+ /** @type {!boolean} */
+ var lab51;
+ /** @type {!boolean} */
+ var lab52;
+ /** @type {!boolean} */
+ var lab53;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ break lab1;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_2 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_2;
+ break lab2;
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_11, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true)) {
+ break lab3;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_3 = this.limit - this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ v_4 = this.limit - this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ this.ket = this.cursor;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) {
+ break lab6;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab5;
+ }
+ this.cursor = this.limit - v_4;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ this.ket = this.cursor;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ v_5 = this.limit - this.cursor;
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) {
+ break lab9;
+ }
+ break lab8;
+ }
+ this.cursor = this.limit - v_5;
+ if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) {
+ break lab7;
+ }
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_6 = this.limit - this.cursor;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_6;
+ break lab10;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_6;
+ break lab10;
+ }
+ }
+ break lab5;
+ }
+ cursor$0 = this.cursor = this.limit - v_4;
+ this.ket = cursor$0;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_3;
+ break lab4;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_3;
+ break lab4;
+ }
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab11 = true;
+ lab11:
+ while (lab11 === true) {
+ lab11 = false;
+ this.ket = this.cursor;
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ v_7 = this.limit - this.cursor;
+ lab13 = true;
+ lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_7, 2) === 0 ? false : true)) {
+ break lab13;
+ }
+ break lab12;
+ }
+ this.cursor = this.limit - v_7;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_5, 2) === 0 ? false : true)) {
+ break lab11;
+ }
+ }
+ lab14 = true;
+ lab14:
+ while (lab14 === true) {
+ lab14 = false;
+ v_8 = this.limit - this.cursor;
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) {
+ break lab15;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab14;
+ }
+ this.cursor = this.limit - v_8;
+ lab16 = true;
+ lab16:
+ while (lab16 === true) {
+ lab16 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) {
+ break lab16;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_9 = this.limit - this.cursor;
+ lab17 = true;
+ lab17:
+ while (lab17 === true) {
+ lab17 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_9;
+ break lab17;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_9;
+ break lab17;
+ }
+ }
+ break lab14;
+ }
+ this.cursor = this.limit - v_8;
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ break lab11;
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab18 = true;
+ lab18:
+ while (lab18 === true) {
+ lab18 = false;
+ this.ket = this.cursor;
+ lab19 = true;
+ lab19:
+ while (lab19 === true) {
+ lab19 = false;
+ v_10 = this.limit - this.cursor;
+ lab20 = true;
+ lab20:
+ while (lab20 === true) {
+ lab20 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_9, 2) === 0 ? false : true)) {
+ break lab20;
+ }
+ break lab19;
+ }
+ this.cursor = this.limit - v_10;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_2, 4) === 0 ? false : true)) {
+ break lab18;
+ }
+ }
+ lab21 = true;
+ lab21:
+ while (lab21 === true) {
+ lab21 = false;
+ v_11 = this.limit - this.cursor;
+ lab22 = true;
+ lab22:
+ while (lab22 === true) {
+ lab22 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) {
+ break lab22;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_12 = this.limit - this.cursor;
+ lab23 = true;
+ lab23:
+ while (lab23 === true) {
+ lab23 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_12;
+ break lab23;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_12;
+ break lab23;
+ }
+ }
+ break lab21;
+ }
+ this.cursor = this.limit - v_11;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) {
+ break lab18;
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab24 = true;
+ lab24:
+ while (lab24 === true) {
+ lab24 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_8, 4) === 0 ? false : true)) {
+ break lab24;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_13 = this.limit - this.cursor;
+ lab25 = true;
+ lab25:
+ while (lab25 === true) {
+ lab25 = false;
+ this.ket = this.cursor;
+ lab26 = true;
+ lab26:
+ while (lab26 === true) {
+ lab26 = false;
+ v_14 = this.limit - this.cursor;
+ lab27 = true;
+ lab27:
+ while (lab27 === true) {
+ lab27 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) {
+ break lab27;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_15 = this.limit - this.cursor;
+ lab28 = true;
+ lab28:
+ while (lab28 === true) {
+ lab28 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_15;
+ break lab28;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_15;
+ break lab28;
+ }
+ }
+ break lab26;
+ }
+ this.cursor = this.limit - v_14;
+ lab29 = true;
+ lab29:
+ while (lab29 === true) {
+ lab29 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ break lab29;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_16 = this.limit - this.cursor;
+ lab30 = true;
+ lab30:
+ while (lab30 === true) {
+ lab30 = false;
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_16;
+ break lab30;
+ }
+ }
+ break lab26;
+ }
+ this.cursor = this.limit - v_14;
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_13;
+ break lab25;
+ }
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab31 = true;
+ lab31:
+ while (lab31 === true) {
+ lab31 = false;
+ this.ket = this.cursor;
+ lab32 = true;
+ lab32:
+ while (lab32 === true) {
+ lab32 = false;
+ v_17 = this.limit - this.cursor;
+ lab33 = true;
+ lab33:
+ while (lab33 === true) {
+ lab33 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_3, 4) === 0 ? false : ! this.r_mark_suffix_with_optional_n_consonant$() ? false : true)) {
+ break lab33;
+ }
+ break lab32;
+ }
+ this.cursor = this.limit - v_17;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_10, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab31;
+ }
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_18 = this.limit - this.cursor;
+ lab34 = true;
+ lab34:
+ while (lab34 === true) {
+ lab34 = false;
+ lab35 = true;
+ lab35:
+ while (lab35 === true) {
+ lab35 = false;
+ v_19 = this.limit - this.cursor;
+ lab36 = true;
+ lab36:
+ while (lab36 === true) {
+ lab36 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ break lab36;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ break lab36;
+ }
+ break lab35;
+ }
+ this.cursor = this.limit - v_19;
+ lab37 = true;
+ lab37:
+ while (lab37 === true) {
+ lab37 = false;
+ this.ket = this.cursor;
+ lab38 = true;
+ lab38:
+ while (lab38 === true) {
+ lab38 = false;
+ v_20 = this.limit - this.cursor;
+ lab39 = true;
+ lab39:
+ while (lab39 === true) {
+ lab39 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) {
+ break lab39;
+ }
+ break lab38;
+ }
+ this.cursor = this.limit - v_20;
+ if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) {
+ break lab37;
+ }
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_21 = this.limit - this.cursor;
+ lab40 = true;
+ lab40:
+ while (lab40 === true) {
+ lab40 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_21;
+ break lab40;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_21;
+ break lab40;
+ }
+ }
+ break lab35;
+ }
+ this.cursor = this.limit - v_19;
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_18;
+ break lab34;
+ }
+ }
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab41 = true;
+ lab41:
+ while (lab41 === true) {
+ lab41 = false;
+ this.ket = this.cursor;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_1, 2) === 0 ? false : true)) {
+ break lab41;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab42 = true;
+ lab42:
+ while (lab42 === true) {
+ lab42 = false;
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ break lab42;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ lab43 = true;
+ lab43:
+ while (lab43 === true) {
+ lab43 = false;
+ this.ket = this.cursor;
+ lab44 = true;
+ lab44:
+ while (lab44 === true) {
+ lab44 = false;
+ v_22 = this.limit - this.cursor;
+ lab45 = true;
+ lab45:
+ while (lab45 === true) {
+ lab45 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_6, 4) === 0 ? false : true)) {
+ break lab45;
+ }
+ break lab44;
+ }
+ this.cursor = this.limit - v_22;
+ lab46 = true;
+ lab46:
+ while (lab46 === true) {
+ lab46 = false;
+ if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab46;
+ }
+ break lab44;
+ }
+ this.cursor = this.limit - v_22;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_4, 2) === 0 ? false : ! this.r_mark_suffix_with_optional_y_consonant$() ? false : true)) {
+ break lab43;
+ }
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_23 = this.limit - this.cursor;
+ lab47 = true;
+ lab47:
+ while (lab47 === true) {
+ lab47 = false;
+ this.ket = this.cursor;
+ lab48 = true;
+ lab48:
+ while (lab48 === true) {
+ lab48 = false;
+ v_24 = this.limit - this.cursor;
+ lab49 = true;
+ lab49:
+ while (lab49 === true) {
+ lab49 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) {
+ break lab49;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_25 = this.limit - this.cursor;
+ lab50 = true;
+ lab50:
+ while (lab50 === true) {
+ lab50 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_25;
+ break lab50;
+ }
+ }
+ break lab48;
+ }
+ this.cursor = this.limit - v_24;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_23;
+ break lab47;
+ }
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.ket = this.cursor;
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_23;
+ break lab47;
+ }
+ }
+ break lab0;
+ }
+ cursor$1 = this.cursor = this.limit - v_1;
+ this.ket = cursor$1;
+ lab51 = true;
+ lab51:
+ while (lab51 === true) {
+ lab51 = false;
+ v_26 = this.limit - this.cursor;
+ lab52 = true;
+ lab52:
+ while (lab52 === true) {
+ lab52 = false;
+ if (! (this.find_among_b$ALAmong$I(TurkishStemmer.a_0, 10) === 0 ? false : ! this.r_mark_suffix_with_optional_U_vowel$() ? false : true)) {
+ break lab52;
+ }
+ break lab51;
+ }
+ this.cursor = this.limit - v_26;
+ if (! (! this.r_check_vowel_harmony$() ? false : ! this.in_grouping_b$AIII(TurkishStemmer.g_U, 105, 305) ? false : ! this.r_mark_suffix_with_optional_s_consonant$() ? false : true)) {
+ return false;
+ }
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_27 = this.limit - this.cursor;
+ lab53 = true;
+ lab53:
+ while (lab53 === true) {
+ lab53 = false;
+ this.ket = this.cursor;
+ if (! (! this.r_check_vowel_harmony$() ? false : this.find_among_b$ALAmong$I(TurkishStemmer.a_16, 2) === 0 ? false : true)) {
+ this.cursor = this.limit - v_27;
+ break lab53;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_stem_suffix_chain_before_ki$()) {
+ this.cursor = this.limit - v_27;
+ break lab53;
+ }
+ }
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_post_process_last_consonants$ = function () {
+ /** @type {!number} */
+ var among_var;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(TurkishStemmer.a_23, 4);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("p")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("\u00E7")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("t")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("k")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_append_U_to_stems_ending_with_d_or_g$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!number} */
+ var v_11;
+ /** @type {!number} */
+ var v_12;
+ /** @type {!number} */
+ var v_13;
+ /** @type {!number} */
+ var v_14;
+ /** @type {!number} */
+ var v_15;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab11;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!boolean} */
+ var lab16;
+ /** @type {!boolean} */
+ var lab17;
+ /** @type {!boolean} */
+ var lab19;
+ /** @type {!boolean} */
+ var lab20;
+ /** @type {!boolean} */
+ var lab21;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var cursor$6;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$7;
+ /** @type {!number} */
+ var cursor$8;
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_2 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.eq_s_b$IS(1, "d")) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_2;
+ if (! this.eq_s_b$IS(1, "g")) {
+ return false;
+ }
+ }
+ this.cursor = this.limit - v_1;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_3 = this.limit - this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ v_4 = this.limit - this.cursor;
+ golab4:
+ while (true) {
+ v_5 = this.limit - this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ break lab5;
+ }
+ this.cursor = this.limit - v_5;
+ break golab4;
+ }
+ cursor$0 = this.cursor = this.limit - v_5;
+ if (cursor$0 <= this.limit_backward) {
+ break lab3;
+ }
+ this.cursor--;
+ }
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ v_6 = this.limit - this.cursor;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.eq_s_b$IS(1, "a")) {
+ break lab7;
+ }
+ break lab6;
+ }
+ this.cursor = this.limit - v_6;
+ if (! this.eq_s_b$IS(1, "\u0131")) {
+ break lab3;
+ }
+ }
+ cursor$1 = this.cursor = this.limit - v_4;
+ this.insert$IIS(cursor$1, cursor$1, "\u0131");
+ this.cursor = cursor$1;
+ break lab2;
+ }
+ this.cursor = this.limit - v_3;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ v_7 = this.limit - this.cursor;
+ golab9:
+ while (true) {
+ v_8 = this.limit - this.cursor;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ break lab10;
+ }
+ this.cursor = this.limit - v_8;
+ break golab9;
+ }
+ cursor$2 = this.cursor = this.limit - v_8;
+ if (cursor$2 <= this.limit_backward) {
+ break lab8;
+ }
+ this.cursor--;
+ }
+ lab11 = true;
+ lab11:
+ while (lab11 === true) {
+ lab11 = false;
+ v_9 = this.limit - this.cursor;
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! this.eq_s_b$IS(1, "e")) {
+ break lab12;
+ }
+ break lab11;
+ }
+ this.cursor = this.limit - v_9;
+ if (! this.eq_s_b$IS(1, "i")) {
+ break lab8;
+ }
+ }
+ cursor$3 = this.cursor = this.limit - v_7;
+ this.insert$IIS(cursor$3, cursor$3, "i");
+ this.cursor = cursor$3;
+ break lab2;
+ }
+ this.cursor = this.limit - v_3;
+ lab13 = true;
+ lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ v_10 = this.limit - this.cursor;
+ golab14:
+ while (true) {
+ v_11 = this.limit - this.cursor;
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ break lab15;
+ }
+ this.cursor = this.limit - v_11;
+ break golab14;
+ }
+ cursor$4 = this.cursor = this.limit - v_11;
+ if (cursor$4 <= this.limit_backward) {
+ break lab13;
+ }
+ this.cursor--;
+ }
+ lab16 = true;
+ lab16:
+ while (lab16 === true) {
+ lab16 = false;
+ v_12 = this.limit - this.cursor;
+ lab17 = true;
+ lab17:
+ while (lab17 === true) {
+ lab17 = false;
+ if (! this.eq_s_b$IS(1, "o")) {
+ break lab17;
+ }
+ break lab16;
+ }
+ this.cursor = this.limit - v_12;
+ if (! this.eq_s_b$IS(1, "u")) {
+ break lab13;
+ }
+ }
+ cursor$5 = this.cursor = this.limit - v_10;
+ this.insert$IIS(cursor$5, cursor$5, "u");
+ this.cursor = cursor$5;
+ break lab2;
+ }
+ cursor$7 = this.cursor = (limit$0 = this.limit) - v_3;
+ v_13 = limit$0 - cursor$7;
+ golab18:
+ while (true) {
+ v_14 = this.limit - this.cursor;
+ lab19 = true;
+ lab19:
+ while (lab19 === true) {
+ lab19 = false;
+ if (! this.in_grouping_b$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ break lab19;
+ }
+ this.cursor = this.limit - v_14;
+ break golab18;
+ }
+ cursor$6 = this.cursor = this.limit - v_14;
+ if (cursor$6 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ }
+ lab20 = true;
+ lab20:
+ while (lab20 === true) {
+ lab20 = false;
+ v_15 = this.limit - this.cursor;
+ lab21 = true;
+ lab21:
+ while (lab21 === true) {
+ lab21 = false;
+ if (! this.eq_s_b$IS(1, "\u00F6")) {
+ break lab21;
+ }
+ break lab20;
+ }
+ this.cursor = this.limit - v_15;
+ if (! this.eq_s_b$IS(1, "\u00FC")) {
+ return false;
+ }
+ }
+ cursor$8 = this.cursor = this.limit - v_13;
+ this.insert$IIS(cursor$8, cursor$8, "\u00FC");
+ this.cursor = cursor$8;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_more_than_one_syllable_word$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ v_1 = this.cursor;
+ v_2 = 2;
+replab0:
+ while (true) {
+ v_3 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ golab2:
+ while (true) {
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.in_grouping$AIII(TurkishStemmer.g_vowel, 97, 305)) {
+ break lab3;
+ }
+ break golab2;
+ }
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ }
+ v_2--;
+ continue replab0;
+ }
+ this.cursor = v_3;
+ break replab0;
+ }
+ if (v_2 > 0) {
+ return false;
+ }
+ this.cursor = v_1;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_is_reserved_word$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!number} */
+ var I_strlen$0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var I_strlen$1;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.cursor;
+ golab2:
+ while (true) {
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.eq_s$IS(2, "ad")) {
+ break lab3;
+ }
+ break golab2;
+ }
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ }
+ I_strlen$0 = this.I_strlen = 2;
+ if (! (I_strlen$0 === this.limit)) {
+ break lab1;
+ }
+ this.cursor = v_2;
+ break lab0;
+ }
+ cursor$0 = this.cursor = v_1;
+ v_4 = cursor$0;
+ golab4:
+ while (true) {
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.eq_s$IS(5, "soyad")) {
+ break lab5;
+ }
+ break golab4;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ I_strlen$1 = this.I_strlen = 5;
+ if (! (I_strlen$1 === this.limit)) {
+ return false;
+ }
+ this.cursor = v_4;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.r_postlude$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_is_reserved_word$()) {
+ break lab0;
+ }
+ return false;
+ }
+ cursor$0 = this.cursor = v_1;
+ this.limit_backward = cursor$0;
+ cursor$1 = this.cursor = limit$0 = this.limit;
+ v_2 = limit$0 - cursor$1;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_append_U_to_stems_ending_with_d_or_g$()) {
+ break lab1;
+ }
+ }
+ this.cursor = this.limit - v_2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_post_process_last_consonants$()) {
+ break lab2;
+ }
+ }
+ this.cursor = this.limit_backward;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ if (! this.r_more_than_one_syllable_word$()) {
+ return false;
+ }
+ this.limit_backward = this.cursor;
+ cursor$0 = this.cursor = limit$0 = this.limit;
+ v_1 = limit$0 - cursor$0;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_stem_nominal_verb_suffixes$()) {
+ break lab0;
+ }
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.B_continue_stemming_noun_suffixes) {
+ return false;
+ }
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_stem_noun_suffixes$()) {
+ break lab1;
+ }
+ }
+ this.cursor = this.limit_backward;
+ return (! this.r_postlude$() ? false : true);
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+TurkishStemmer.prototype.equals$X = function (o) {
+ return o instanceof TurkishStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+TurkishStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "TurkishStemmer";
+ hash = 0;
+ if ("TurkishStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class SwedishStemmer extends BaseStemmer
+ * @constructor
+ */
+function SwedishStemmer() {
+}
+
+SwedishStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function SwedishStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_x = 0;
+ this.I_p1 = 0;
+};
+
+SwedishStemmer$.prototype = new SwedishStemmer;
+
+/**
+ * @param {SwedishStemmer} other
+ */
+SwedishStemmer.prototype.copy_from$LSwedishStemmer$ = function (other) {
+ this.I_x = other.I_x;
+ this.I_p1 = other.I_p1;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+SwedishStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var c;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ this.I_p1 = limit$0 = this.limit;
+ v_1 = cursor$0 = this.cursor;
+ c = (cursor$0 + 3 | 0);
+ if (0 > c || c > limit$0) {
+ return false;
+ }
+ cursor$2 = this.cursor = c;
+ this.I_x = cursor$2;
+ this.cursor = v_1;
+golab0:
+ while (true) {
+ v_2 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping$AIII(SwedishStemmer.g_v, 97, 246)) {
+ break lab1;
+ }
+ this.cursor = v_2;
+ break golab0;
+ }
+ cursor$1 = this.cursor = v_2;
+ if (cursor$1 >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+golab2:
+ while (true) {
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.out_grouping$AIII(SwedishStemmer.g_v, 97, 246)) {
+ break lab3;
+ }
+ break golab2;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ lab4 = true;
+lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! (this.I_p1 < this.I_x)) {
+ break lab4;
+ }
+ this.I_p1 = this.I_x;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SwedishStemmer.prototype.r_main_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(SwedishStemmer.a_0, 37);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.in_grouping_b$AIII(SwedishStemmer.g_s_ending, 98, 121)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SwedishStemmer.prototype.r_consonant_pair$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = (limit$0 = this.limit) - v_1;
+ v_3 = limit$0 - cursor$2;
+ if (this.find_among_b$ALAmong$I(SwedishStemmer.a_1, 7) === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ cursor$3 = this.cursor = this.limit - v_3;
+ this.ket = cursor$3;
+ if (cursor$3 <= this.limit_backward) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.limit_backward = v_2;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SwedishStemmer.prototype.r_other_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(SwedishStemmer.a_2, 5);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.limit_backward = v_2;
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("l\u00F6s")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("full")) {
+ return false;
+ }
+ break;
+ }
+ this.limit_backward = v_2;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SwedishStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_mark_regions$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ this.limit_backward = cursor$0;
+ cursor$1 = this.cursor = limit$0 = this.limit;
+ v_2 = limit$0 - cursor$1;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_main_suffix$()) {
+ break lab1;
+ }
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_2;
+ v_3 = limit$1 - cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_consonant_pair$()) {
+ break lab2;
+ }
+ }
+ this.cursor = this.limit - v_3;
+ lab3 = true;
+lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.r_other_suffix$()) {
+ break lab3;
+ }
+ }
+ this.cursor = this.limit_backward;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+SwedishStemmer.prototype.equals$X = function (o) {
+ return o instanceof SwedishStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+SwedishStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "SwedishStemmer";
+ hash = 0;
+ if ("SwedishStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class SpanishStemmer extends BaseStemmer
+ * @constructor
+ */
+function SpanishStemmer() {
+}
+
+SpanishStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function SpanishStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_p2 = 0;
+ this.I_p1 = 0;
+ this.I_pV = 0;
+};
+
+SpanishStemmer$.prototype = new SpanishStemmer;
+
+/**
+ * @param {SpanishStemmer} other
+ */
+SpanishStemmer.prototype.copy_from$LSpanishStemmer$ = function (other) {
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ this.I_pV = other.I_pV;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!boolean} */
+ var lab17;
+ /** @type {!boolean} */
+ var lab19;
+ /** @type {!boolean} */
+ var lab21;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ this.I_pV = limit$0 = this.limit;
+ this.I_p1 = limit$0;
+ this.I_p2 = limit$0;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab2;
+ }
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ v_3 = this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab4;
+ }
+ golab5:
+ while (true) {
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab6;
+ }
+ break golab5;
+ }
+ if (this.cursor >= this.limit) {
+ break lab4;
+ }
+ this.cursor++;
+ }
+ break lab3;
+ }
+ this.cursor = v_3;
+ if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab2;
+ }
+ golab7:
+ while (true) {
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit) {
+ break lab2;
+ }
+ this.cursor++;
+ }
+ }
+ break lab1;
+ }
+ this.cursor = v_2;
+ if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab0;
+ }
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ v_6 = this.cursor;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab10;
+ }
+ golab11:
+ while (true) {
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab12;
+ }
+ break golab11;
+ }
+ if (this.cursor >= this.limit) {
+ break lab10;
+ }
+ this.cursor++;
+ }
+ break lab9;
+ }
+ this.cursor = v_6;
+ if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab0;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ }
+ this.I_pV = this.cursor;
+ }
+ cursor$0 = this.cursor = v_1;
+ v_8 = cursor$0;
+ lab13 = true;
+lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ golab14:
+ while (true) {
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab15;
+ }
+ break golab14;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ golab16:
+ while (true) {
+ lab17 = true;
+ lab17:
+ while (lab17 === true) {
+ lab17 = false;
+ if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab17;
+ }
+ break golab16;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ golab18:
+ while (true) {
+ lab19 = true;
+ lab19:
+ while (lab19 === true) {
+ lab19 = false;
+ if (! this.in_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab19;
+ }
+ break golab18;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ golab20:
+ while (true) {
+ lab21 = true;
+ lab21:
+ while (lab21 === true) {
+ lab21 = false;
+ if (! this.out_grouping$AIII(SpanishStemmer.g_v, 97, 252)) {
+ break lab21;
+ }
+ break golab20;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ }
+ this.cursor = v_8;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.r_postlude$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab1;
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(SpanishStemmer.a_0, 6);
+ if (among_var === 0) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab1;
+ case 1:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("o")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ break;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.r_RV$ = function () {
+ return (! (this.I_pV <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.r_R1$ = function () {
+ return (! (this.I_p1 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.r_attached_pronoun$ = function () {
+ /** @type {!number} */
+ var among_var;
+ this.ket = this.cursor;
+ if (this.find_among_b$ALAmong$I(SpanishStemmer.a_1, 13) === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_2, 11);
+ if (among_var === 0) {
+ return false;
+ }
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ this.bra = this.cursor;
+ if (! this.slice_from$S("iendo")) {
+ return false;
+ }
+ break;
+ case 2:
+ this.bra = this.cursor;
+ if (! this.slice_from$S("ando")) {
+ return false;
+ }
+ break;
+ case 3:
+ this.bra = this.cursor;
+ if (! this.slice_from$S("ar")) {
+ return false;
+ }
+ break;
+ case 4:
+ this.bra = this.cursor;
+ if (! this.slice_from$S("er")) {
+ return false;
+ }
+ break;
+ case 5:
+ this.bra = this.cursor;
+ if (! this.slice_from$S("ir")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (! this.eq_s_b$IS(1, "u")) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.r_standard_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_6, 46);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "ic")) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$0) ? false : true)) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ break;
+ case 3:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("log")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("ente")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! (! (this.I_p1 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_2 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_3, 4);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ this.bra = cursor$1 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$1) ? false : true)) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_2;
+ break lab1;
+ case 1:
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "at")) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ this.bra = cursor$2 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$2) ? false : true)) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ case 7:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_3 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_4, 3);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_3;
+ break lab2;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_3;
+ break lab2;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ this.cursor = this.limit - v_3;
+ break lab2;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ case 8:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_4 = this.limit - this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_5, 3);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_4;
+ break lab3;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_4;
+ break lab3;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ this.cursor = this.limit - v_4;
+ break lab3;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ case 9:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_5 = this.limit - this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "at")) {
+ this.cursor = this.limit - v_5;
+ break lab4;
+ }
+ this.bra = cursor$3 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$3) ? false : true)) {
+ this.cursor = this.limit - v_5;
+ break lab4;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.r_y_verb_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_pV) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_pV;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_7, 12);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.eq_s_b$IS(1, "u")) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.r_verb_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_pV) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_pV;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_8, 96);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ v_3 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.eq_s_b$IS(1, "u")) {
+ this.cursor = this.limit - v_3;
+ break lab0;
+ }
+ v_4 = this.limit - this.cursor;
+ if (! this.eq_s_b$IS(1, "g")) {
+ this.cursor = this.limit - v_3;
+ break lab0;
+ }
+ this.cursor = this.limit - v_4;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.r_residual_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(SpanishStemmer.a_9, 8);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "u")) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = cursor$0 = this.cursor;
+ v_2 = this.limit - cursor$0;
+ if (! this.eq_s_b$IS(1, "g")) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ cursor$1 = this.cursor = this.limit - v_2;
+ if (! (! (this.I_pV <= cursor$1) ? false : true)) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_mark_regions$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ this.limit_backward = cursor$0;
+ cursor$1 = this.cursor = limit$0 = this.limit;
+ v_2 = limit$0 - cursor$1;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_attached_pronoun$()) {
+ break lab1;
+ }
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_2;
+ v_3 = limit$1 - cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ v_4 = this.limit - this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.r_standard_suffix$()) {
+ break lab4;
+ }
+ break lab3;
+ }
+ this.cursor = this.limit - v_4;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.r_y_verb_suffix$()) {
+ break lab5;
+ }
+ break lab3;
+ }
+ this.cursor = this.limit - v_4;
+ if (! this.r_verb_suffix$()) {
+ break lab2;
+ }
+ }
+ }
+ this.cursor = this.limit - v_3;
+ lab6 = true;
+lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.r_residual_suffix$()) {
+ break lab6;
+ }
+ }
+ cursor$3 = this.cursor = this.limit_backward;
+ v_6 = cursor$3;
+ lab7 = true;
+lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.r_postlude$()) {
+ break lab7;
+ }
+ }
+ this.cursor = v_6;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+SpanishStemmer.prototype.equals$X = function (o) {
+ return o instanceof SpanishStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+SpanishStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "SpanishStemmer";
+ hash = 0;
+ if ("SpanishStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class RussianStemmer extends BaseStemmer
+ * @constructor
+ */
+function RussianStemmer() {
+}
+
+RussianStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function RussianStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_p2 = 0;
+ this.I_pV = 0;
+};
+
+RussianStemmer$.prototype = new RussianStemmer;
+
+/**
+ * @param {RussianStemmer} other
+ */
+RussianStemmer.prototype.copy_from$LRussianStemmer$ = function (other) {
+ this.I_p2 = other.I_p2;
+ this.I_pV = other.I_pV;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!number} */
+ var limit$0;
+ this.I_pV = limit$0 = this.limit;
+ this.I_p2 = limit$0;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ golab1:
+ while (true) {
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.in_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) {
+ break lab2;
+ }
+ break golab1;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ this.I_pV = this.cursor;
+ golab3:
+ while (true) {
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.out_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) {
+ break lab4;
+ }
+ break golab3;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ golab5:
+ while (true) {
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.in_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) {
+ break lab6;
+ }
+ break golab5;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ golab7:
+ while (true) {
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.out_grouping$AIII(RussianStemmer.g_v, 1072, 1103)) {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ }
+ this.cursor = v_1;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.r_perfective_gerund$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_0, 9);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.eq_s_b$IS(1, "\u0430")) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.eq_s_b$IS(1, "\u044F")) {
+ return false;
+ }
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.r_adjective$ = function () {
+ /** @type {!number} */
+ var among_var;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_1, 26);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.r_adjectival$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ if (! this.r_adjective$()) {
+ return false;
+ }
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_2, 8);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_1;
+ break lab0;
+ case 1:
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.eq_s_b$IS(1, "\u0430")) {
+ break lab2;
+ }
+ break lab1;
+ }
+ this.cursor = this.limit - v_2;
+ if (! this.eq_s_b$IS(1, "\u044F")) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.r_reflexive$ = function () {
+ /** @type {!number} */
+ var among_var;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_3, 2);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.r_verb$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_4, 46);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.eq_s_b$IS(1, "\u0430")) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.eq_s_b$IS(1, "\u044F")) {
+ return false;
+ }
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.r_noun$ = function () {
+ /** @type {!number} */
+ var among_var;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_5, 36);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.r_derivational$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_6, 2);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.r_tidy_up$ = function () {
+ /** @type {!number} */
+ var among_var;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RussianStemmer.a_7, 4);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "\u043D")) {
+ return false;
+ }
+ this.bra = this.cursor;
+ if (! this.eq_s_b$IS(1, "\u043D")) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.eq_s_b$IS(1, "\u043D")) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit$2;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var limit$3;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var limit_backward$0;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_mark_regions$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ this.limit_backward = cursor$0;
+ cursor$1 = this.cursor = limit$0 = this.limit;
+ v_2 = limit$0 - cursor$1;
+ if (cursor$1 < this.I_pV) {
+ return false;
+ }
+ cursor$3 = this.cursor = this.I_pV;
+ v_3 = this.limit_backward;
+ this.limit_backward = cursor$3;
+ cursor$4 = this.cursor = (limit$2 = this.limit) - v_2;
+ v_4 = limit$2 - cursor$4;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_5 = this.limit - this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.r_perfective_gerund$()) {
+ break lab3;
+ }
+ break lab2;
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_5;
+ v_6 = limit$1 - cursor$2;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.r_reflexive$()) {
+ this.cursor = this.limit - v_6;
+ break lab4;
+ }
+ }
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ v_7 = this.limit - this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.r_adjectival$()) {
+ break lab6;
+ }
+ break lab5;
+ }
+ this.cursor = this.limit - v_7;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.r_verb$()) {
+ break lab7;
+ }
+ break lab5;
+ }
+ this.cursor = this.limit - v_7;
+ if (! this.r_noun$()) {
+ break lab1;
+ }
+ }
+ }
+ }
+ cursor$5 = this.cursor = (limit$3 = this.limit) - v_4;
+ v_8 = limit$3 - cursor$5;
+ lab8 = true;
+lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "\u0438")) {
+ this.cursor = this.limit - v_8;
+ break lab8;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ v_9 = this.limit - this.cursor;
+ lab9 = true;
+lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! this.r_derivational$()) {
+ break lab9;
+ }
+ }
+ this.cursor = this.limit - v_9;
+ lab10 = true;
+lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.r_tidy_up$()) {
+ break lab10;
+ }
+ }
+ limit_backward$0 = this.limit_backward = v_3;
+ this.cursor = limit_backward$0;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+RussianStemmer.prototype.equals$X = function (o) {
+ return o instanceof RussianStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+RussianStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "RussianStemmer";
+ hash = 0;
+ if ("RussianStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class RomanianStemmer extends BaseStemmer
+ * @constructor
+ */
+function RomanianStemmer() {
+}
+
+RomanianStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function RomanianStemmer$() {
+ BaseStemmer$.call(this);
+ this.B_standard_suffix_removed = false;
+ this.I_p2 = 0;
+ this.I_p1 = 0;
+ this.I_pV = 0;
+};
+
+RomanianStemmer$.prototype = new RomanianStemmer;
+
+/**
+ * @param {RomanianStemmer} other
+ */
+RomanianStemmer.prototype.copy_from$LRomanianStemmer$ = function (other) {
+ this.B_standard_suffix_removed = other.B_standard_suffix_removed;
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ this.I_pV = other.I_pV;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_prelude$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!number} */
+ var cursor$0;
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ golab2:
+ while (true) {
+ v_2 = this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab3;
+ }
+ this.bra = this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ v_3 = this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.eq_s$IS(1, "u")) {
+ break lab5;
+ }
+ this.ket = this.cursor;
+ if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab5;
+ }
+ if (! this.slice_from$S("U")) {
+ return false;
+ }
+ break lab4;
+ }
+ this.cursor = v_3;
+ if (! this.eq_s$IS(1, "i")) {
+ break lab3;
+ }
+ this.ket = this.cursor;
+ if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab3;
+ }
+ if (! this.slice_from$S("I")) {
+ return false;
+ }
+ }
+ this.cursor = v_2;
+ break golab2;
+ }
+ cursor$0 = this.cursor = v_2;
+ if (cursor$0 >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!boolean} */
+ var lab17;
+ /** @type {!boolean} */
+ var lab19;
+ /** @type {!boolean} */
+ var lab21;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ this.I_pV = limit$0 = this.limit;
+ this.I_p1 = limit$0;
+ this.I_p2 = limit$0;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab2;
+ }
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ v_3 = this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab4;
+ }
+ golab5:
+ while (true) {
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab6;
+ }
+ break golab5;
+ }
+ if (this.cursor >= this.limit) {
+ break lab4;
+ }
+ this.cursor++;
+ }
+ break lab3;
+ }
+ this.cursor = v_3;
+ if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab2;
+ }
+ golab7:
+ while (true) {
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit) {
+ break lab2;
+ }
+ this.cursor++;
+ }
+ }
+ break lab1;
+ }
+ this.cursor = v_2;
+ if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab0;
+ }
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ v_6 = this.cursor;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab10;
+ }
+ golab11:
+ while (true) {
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab12;
+ }
+ break golab11;
+ }
+ if (this.cursor >= this.limit) {
+ break lab10;
+ }
+ this.cursor++;
+ }
+ break lab9;
+ }
+ this.cursor = v_6;
+ if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab0;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ }
+ this.I_pV = this.cursor;
+ }
+ cursor$0 = this.cursor = v_1;
+ v_8 = cursor$0;
+ lab13 = true;
+lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ golab14:
+ while (true) {
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab15;
+ }
+ break golab14;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ golab16:
+ while (true) {
+ lab17 = true;
+ lab17:
+ while (lab17 === true) {
+ lab17 = false;
+ if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab17;
+ }
+ break golab16;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ golab18:
+ while (true) {
+ lab19 = true;
+ lab19:
+ while (lab19 === true) {
+ lab19 = false;
+ if (! this.in_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab19;
+ }
+ break golab18;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ golab20:
+ while (true) {
+ lab21 = true;
+ lab21:
+ while (lab21 === true) {
+ lab21 = false;
+ if (! this.out_grouping$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab21;
+ }
+ break golab20;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ }
+ this.cursor = v_8;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_postlude$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab1;
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(RomanianStemmer.a_0, 3);
+ if (among_var === 0) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab1;
+ case 1:
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ break;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_RV$ = function () {
+ return (! (this.I_pV <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_R1$ = function () {
+ return (! (this.I_p1 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_step_0$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_1, 16);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ case 5:
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.eq_s_b$IS(2, "ab")) {
+ break lab0;
+ }
+ return false;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("at")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (! this.slice_from$S("a\u0163i")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_combo_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ this.ket = cursor$0;
+ among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_2, 46);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$1 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$1) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("abil")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("ibil")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("iv")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("ic")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("at")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("it")) {
+ return false;
+ }
+ break;
+ }
+ this.B_standard_suffix_removed = true;
+ this.cursor = this.limit - v_1;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_standard_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var cursor$0;
+ this.B_standard_suffix_removed = false;
+replab0:
+ while (true) {
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_combo_suffix$()) {
+ break lab1;
+ }
+ continue replab0;
+ }
+ this.cursor = this.limit - v_1;
+ break replab0;
+ }
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_3, 62);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.eq_s_b$IS(1, "\u0163")) {
+ return false;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("t")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("ist")) {
+ return false;
+ }
+ break;
+ }
+ this.B_standard_suffix_removed = true;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_verb_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_pV) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_pV;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_4, 94);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.limit_backward = v_2;
+ return false;
+ case 1:
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_3 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.out_grouping_b$AIII(RomanianStemmer.g_v, 97, 259)) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_3;
+ if (! this.eq_s_b$IS(1, "u")) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ this.limit_backward = v_2;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.r_vowel_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(RomanianStemmer.a_5, 5);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_pV <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit$2;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var cursor$5;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_prelude$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ v_2 = cursor$0;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_mark_regions$()) {
+ break lab1;
+ }
+ }
+ cursor$1 = this.cursor = v_2;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = limit$0 = this.limit;
+ v_3 = limit$0 - cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_step_0$()) {
+ break lab2;
+ }
+ }
+ cursor$3 = this.cursor = (limit$1 = this.limit) - v_3;
+ v_4 = limit$1 - cursor$3;
+ lab3 = true;
+lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.r_standard_suffix$()) {
+ break lab3;
+ }
+ }
+ cursor$4 = this.cursor = (limit$2 = this.limit) - v_4;
+ v_5 = limit$2 - cursor$4;
+ lab4 = true;
+lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ v_6 = this.limit - this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.B_standard_suffix_removed) {
+ break lab6;
+ }
+ break lab5;
+ }
+ this.cursor = this.limit - v_6;
+ if (! this.r_verb_suffix$()) {
+ break lab4;
+ }
+ }
+ }
+ this.cursor = this.limit - v_5;
+ lab7 = true;
+lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.r_vowel_suffix$()) {
+ break lab7;
+ }
+ }
+ cursor$5 = this.cursor = this.limit_backward;
+ v_8 = cursor$5;
+ lab8 = true;
+lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.r_postlude$()) {
+ break lab8;
+ }
+ }
+ this.cursor = v_8;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+RomanianStemmer.prototype.equals$X = function (o) {
+ return o instanceof RomanianStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+RomanianStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "RomanianStemmer";
+ hash = 0;
+ if ("RomanianStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class PortugueseStemmer extends BaseStemmer
+ * @constructor
+ */
+function PortugueseStemmer() {
+}
+
+PortugueseStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function PortugueseStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_p2 = 0;
+ this.I_p1 = 0;
+ this.I_pV = 0;
+};
+
+PortugueseStemmer$.prototype = new PortugueseStemmer;
+
+/**
+ * @param {PortugueseStemmer} other
+ */
+PortugueseStemmer.prototype.copy_from$LPortugueseStemmer$ = function (other) {
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ this.I_pV = other.I_pV;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.r_prelude$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab1;
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(PortugueseStemmer.a_0, 3);
+ if (among_var === 0) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab1;
+ case 1:
+ if (! this.slice_from$S("a~")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("o~")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ break;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!boolean} */
+ var lab17;
+ /** @type {!boolean} */
+ var lab19;
+ /** @type {!boolean} */
+ var lab21;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ this.I_pV = limit$0 = this.limit;
+ this.I_p1 = limit$0;
+ this.I_p2 = limit$0;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab2;
+ }
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ v_3 = this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab4;
+ }
+ golab5:
+ while (true) {
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab6;
+ }
+ break golab5;
+ }
+ if (this.cursor >= this.limit) {
+ break lab4;
+ }
+ this.cursor++;
+ }
+ break lab3;
+ }
+ this.cursor = v_3;
+ if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab2;
+ }
+ golab7:
+ while (true) {
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit) {
+ break lab2;
+ }
+ this.cursor++;
+ }
+ }
+ break lab1;
+ }
+ this.cursor = v_2;
+ if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab0;
+ }
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ v_6 = this.cursor;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab10;
+ }
+ golab11:
+ while (true) {
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab12;
+ }
+ break golab11;
+ }
+ if (this.cursor >= this.limit) {
+ break lab10;
+ }
+ this.cursor++;
+ }
+ break lab9;
+ }
+ this.cursor = v_6;
+ if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab0;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ }
+ this.I_pV = this.cursor;
+ }
+ cursor$0 = this.cursor = v_1;
+ v_8 = cursor$0;
+ lab13 = true;
+lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ golab14:
+ while (true) {
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab15;
+ }
+ break golab14;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ golab16:
+ while (true) {
+ lab17 = true;
+ lab17:
+ while (lab17 === true) {
+ lab17 = false;
+ if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab17;
+ }
+ break golab16;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ golab18:
+ while (true) {
+ lab19 = true;
+ lab19:
+ while (lab19 === true) {
+ lab19 = false;
+ if (! this.in_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab19;
+ }
+ break golab18;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ golab20:
+ while (true) {
+ lab21 = true;
+ lab21:
+ while (lab21 === true) {
+ lab21 = false;
+ if (! this.out_grouping$AIII(PortugueseStemmer.g_v, 97, 250)) {
+ break lab21;
+ }
+ break golab20;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ }
+ this.cursor = v_8;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.r_postlude$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab1;
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(PortugueseStemmer.a_1, 3);
+ if (among_var === 0) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab1;
+ case 1:
+ if (! this.slice_from$S("\u00E3")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("\u00F5")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ break;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.r_RV$ = function () {
+ return (! (this.I_pV <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.r_R1$ = function () {
+ return (! (this.I_p1 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.r_standard_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_5, 45);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("log")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("ente")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! (! (this.I_p1 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_2, 4);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$0) ? false : true)) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_1;
+ break lab0;
+ case 1:
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "at")) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = cursor$1 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$1) ? false : true)) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ case 6:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_2 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_3, 3);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_2;
+ break lab1;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ case 7:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_3 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_4, 3);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_3;
+ break lab2;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_3;
+ break lab2;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ this.cursor = this.limit - v_3;
+ break lab2;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ case 8:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_4 = this.limit - this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "at")) {
+ this.cursor = this.limit - v_4;
+ break lab3;
+ }
+ this.bra = cursor$2 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$2) ? false : true)) {
+ this.cursor = this.limit - v_4;
+ break lab3;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ break;
+ case 9:
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.eq_s_b$IS(1, "e")) {
+ return false;
+ }
+ if (! this.slice_from$S("ir")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.r_verb_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_pV) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_pV;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_6, 120);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.limit_backward = v_2;
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ this.limit_backward = v_2;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.r_residual_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_7, 7);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.r_residual_form$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PortugueseStemmer.a_8, 4);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.ket = this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.eq_s_b$IS(1, "u")) {
+ break lab1;
+ }
+ this.bra = cursor$0 = this.cursor;
+ v_2 = this.limit - cursor$0;
+ if (! this.eq_s_b$IS(1, "g")) {
+ break lab1;
+ }
+ this.cursor = this.limit - v_2;
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.eq_s_b$IS(1, "i")) {
+ return false;
+ }
+ this.bra = cursor$1 = this.cursor;
+ v_3 = this.limit - cursor$1;
+ if (! this.eq_s_b$IS(1, "c")) {
+ return false;
+ }
+ this.cursor = this.limit - v_3;
+ }
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("c")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var cursor$6;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_prelude$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ v_2 = cursor$0;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_mark_regions$()) {
+ break lab1;
+ }
+ }
+ cursor$4 = this.cursor = v_2;
+ this.limit_backward = cursor$4;
+ cursor$5 = this.cursor = limit$1 = this.limit;
+ v_3 = limit$1 - cursor$5;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ v_4 = this.limit - this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ v_5 = this.limit - this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ v_6 = this.limit - this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.r_standard_suffix$()) {
+ break lab6;
+ }
+ break lab5;
+ }
+ this.cursor = this.limit - v_6;
+ if (! this.r_verb_suffix$()) {
+ break lab4;
+ }
+ }
+ cursor$3 = this.cursor = (limit$0 = this.limit) - v_5;
+ v_7 = limit$0 - cursor$3;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "i")) {
+ break lab7;
+ }
+ this.bra = cursor$1 = this.cursor;
+ v_8 = this.limit - cursor$1;
+ if (! this.eq_s_b$IS(1, "c")) {
+ break lab7;
+ }
+ cursor$2 = this.cursor = this.limit - v_8;
+ if (! (! (this.I_pV <= cursor$2) ? false : true)) {
+ break lab7;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ this.cursor = this.limit - v_7;
+ break lab3;
+ }
+ this.cursor = this.limit - v_4;
+ if (! this.r_residual_suffix$()) {
+ break lab2;
+ }
+ }
+ }
+ this.cursor = this.limit - v_3;
+ lab8 = true;
+lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.r_residual_form$()) {
+ break lab8;
+ }
+ }
+ cursor$6 = this.cursor = this.limit_backward;
+ v_10 = cursor$6;
+ lab9 = true;
+lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! this.r_postlude$()) {
+ break lab9;
+ }
+ }
+ this.cursor = v_10;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+PortugueseStemmer.prototype.equals$X = function (o) {
+ return o instanceof PortugueseStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+PortugueseStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "PortugueseStemmer";
+ hash = 0;
+ if ("PortugueseStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class PorterStemmer extends BaseStemmer
+ * @constructor
+ */
+function PorterStemmer() {
+}
+
+PorterStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function PorterStemmer$() {
+ BaseStemmer$.call(this);
+ this.B_Y_found = false;
+ this.I_p2 = 0;
+ this.I_p1 = 0;
+};
+
+PorterStemmer$.prototype = new PorterStemmer;
+
+/**
+ * @param {PorterStemmer} other
+ */
+PorterStemmer.prototype.copy_from$LPorterStemmer$ = function (other) {
+ this.B_Y_found = other.B_Y_found;
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_shortv$ = function () {
+ return (! this.out_grouping_b$AIII(PorterStemmer.g_v_WXY, 89, 121) ? false : ! this.in_grouping_b$AIII(PorterStemmer.g_v, 97, 121) ? false : ! this.out_grouping_b$AIII(PorterStemmer.g_v, 97, 121) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_R1$ = function () {
+ return (! (this.I_p1 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_Step_1a$ = function () {
+ /** @type {!number} */
+ var among_var;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_0, 4);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("ss")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_Step_1b$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var c;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_2, 3);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! (! (this.I_p1 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("ee")) {
+ return false;
+ }
+ break;
+ case 2:
+ v_1 = this.limit - this.cursor;
+ golab0:
+ while (true) {
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping_b$AIII(PorterStemmer.g_v, 97, 121)) {
+ break lab1;
+ }
+ break golab0;
+ }
+ if (this.cursor <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_3 = this.limit - this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_1, 13);
+ if (among_var === 0) {
+ return false;
+ }
+ this.cursor = this.limit - v_3;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ c = cursor$0 = this.cursor;
+ this.insert$IIS(cursor$0, cursor$0, "e");
+ this.cursor = c;
+ break;
+ case 2:
+ this.ket = cursor$1 = this.cursor;
+ if (cursor$1 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (this.cursor !== this.I_p1) {
+ return false;
+ }
+ v_4 = this.limit - this.cursor;
+ if (! this.r_shortv$()) {
+ return false;
+ }
+ cursor$2 = this.cursor = this.limit - v_4;
+ c = cursor$2;
+ this.insert$IIS(cursor$2, cursor$2, "e");
+ this.cursor = cursor$2;
+ break;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_Step_1c$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ this.ket = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.eq_s_b$IS(1, "y")) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.eq_s_b$IS(1, "Y")) {
+ return false;
+ }
+ }
+ this.bra = this.cursor;
+golab2:
+ while (true) {
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.in_grouping_b$AIII(PorterStemmer.g_v, 97, 121)) {
+ break lab3;
+ }
+ break golab2;
+ }
+ if (this.cursor <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ }
+ return (! this.slice_from$S("i") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_Step_2$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_3, 20);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("tion")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("ence")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("ance")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("able")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("ent")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (! this.slice_from$S("ize")) {
+ return false;
+ }
+ break;
+ case 8:
+ if (! this.slice_from$S("ate")) {
+ return false;
+ }
+ break;
+ case 9:
+ if (! this.slice_from$S("al")) {
+ return false;
+ }
+ break;
+ case 10:
+ if (! this.slice_from$S("al")) {
+ return false;
+ }
+ break;
+ case 11:
+ if (! this.slice_from$S("ful")) {
+ return false;
+ }
+ break;
+ case 12:
+ if (! this.slice_from$S("ous")) {
+ return false;
+ }
+ break;
+ case 13:
+ if (! this.slice_from$S("ive")) {
+ return false;
+ }
+ break;
+ case 14:
+ if (! this.slice_from$S("ble")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_Step_3$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_4, 7);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("al")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("ic")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_Step_4$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(PorterStemmer.a_5, 19);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.eq_s_b$IS(1, "s")) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.eq_s_b$IS(1, "t")) {
+ return false;
+ }
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_Step_5a$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "e")) {
+ return false;
+ }
+ this.bra = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab1;
+ }
+ break lab0;
+ }
+ cursor$0 = this.cursor = this.limit - v_1;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ v_2 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_shortv$()) {
+ break lab2;
+ }
+ return false;
+ }
+ this.cursor = this.limit - v_2;
+ }
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.r_Step_5b$ = function () {
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "l")) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ return (! (! (this.I_p2 <= cursor$0) ? false : true) ? false : ! this.eq_s_b$IS(1, "l") ? false : ! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!number} */
+ var v_11;
+ /** @type {!number} */
+ var v_12;
+ /** @type {!number} */
+ var v_13;
+ /** @type {!number} */
+ var v_14;
+ /** @type {!number} */
+ var v_15;
+ /** @type {!number} */
+ var v_16;
+ /** @type {!number} */
+ var v_18;
+ /** @type {!number} */
+ var v_19;
+ /** @type {!number} */
+ var v_20;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab14;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!boolean} */
+ var lab16;
+ /** @type {!boolean} */
+ var lab17;
+ /** @type {!boolean} */
+ var lab18;
+ /** @type {!boolean} */
+ var lab19;
+ /** @type {!boolean} */
+ var lab20;
+ /** @type {!boolean} */
+ var lab21;
+ /** @type {!boolean} */
+ var lab22;
+ /** @type {!boolean} */
+ var lab23;
+ /** @type {!boolean} */
+ var lab25;
+ /** @type {!boolean} */
+ var lab27;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var limit$2;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var limit$3;
+ /** @type {!number} */
+ var cursor$6;
+ /** @type {!number} */
+ var limit$4;
+ /** @type {!number} */
+ var cursor$7;
+ /** @type {!number} */
+ var limit$5;
+ /** @type {!number} */
+ var cursor$8;
+ /** @type {!number} */
+ var limit$6;
+ /** @type {!number} */
+ var cursor$9;
+ /** @type {!number} */
+ var limit$7;
+ /** @type {!number} */
+ var cursor$10;
+ /** @type {!number} */
+ var cursor$11;
+ /** @type {!number} */
+ var cursor$12;
+ this.B_Y_found = false;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "y")) {
+ break lab0;
+ }
+ this.ket = this.cursor;
+ if (! this.slice_from$S("Y")) {
+ return false;
+ }
+ this.B_Y_found = true;
+ }
+ cursor$1 = this.cursor = v_1;
+ v_2 = cursor$1;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ replab2:
+ while (true) {
+ v_3 = this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ golab4:
+ while (true) {
+ v_4 = this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.in_grouping$AIII(PorterStemmer.g_v, 97, 121)) {
+ break lab5;
+ }
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "y")) {
+ break lab5;
+ }
+ this.ket = this.cursor;
+ this.cursor = v_4;
+ break golab4;
+ }
+ cursor$0 = this.cursor = v_4;
+ if (cursor$0 >= this.limit) {
+ break lab3;
+ }
+ this.cursor++;
+ }
+ if (! this.slice_from$S("Y")) {
+ return false;
+ }
+ this.B_Y_found = true;
+ continue replab2;
+ }
+ this.cursor = v_3;
+ break replab2;
+ }
+ }
+ cursor$2 = this.cursor = v_2;
+ this.I_p1 = limit$0 = this.limit;
+ this.I_p2 = limit$0;
+ v_5 = cursor$2;
+ lab6 = true;
+lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ golab7:
+ while (true) {
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.in_grouping$AIII(PorterStemmer.g_v, 97, 121)) {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit) {
+ break lab6;
+ }
+ this.cursor++;
+ }
+ golab9:
+ while (true) {
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.out_grouping$AIII(PorterStemmer.g_v, 97, 121)) {
+ break lab10;
+ }
+ break golab9;
+ }
+ if (this.cursor >= this.limit) {
+ break lab6;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ golab11:
+ while (true) {
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! this.in_grouping$AIII(PorterStemmer.g_v, 97, 121)) {
+ break lab12;
+ }
+ break golab11;
+ }
+ if (this.cursor >= this.limit) {
+ break lab6;
+ }
+ this.cursor++;
+ }
+ golab13:
+ while (true) {
+ lab14 = true;
+ lab14:
+ while (lab14 === true) {
+ lab14 = false;
+ if (! this.out_grouping$AIII(PorterStemmer.g_v, 97, 121)) {
+ break lab14;
+ }
+ break golab13;
+ }
+ if (this.cursor >= this.limit) {
+ break lab6;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ }
+ cursor$3 = this.cursor = v_5;
+ this.limit_backward = cursor$3;
+ cursor$4 = this.cursor = limit$1 = this.limit;
+ v_10 = limit$1 - cursor$4;
+ lab15 = true;
+lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ if (! this.r_Step_1a$()) {
+ break lab15;
+ }
+ }
+ cursor$5 = this.cursor = (limit$2 = this.limit) - v_10;
+ v_11 = limit$2 - cursor$5;
+ lab16 = true;
+lab16:
+ while (lab16 === true) {
+ lab16 = false;
+ if (! this.r_Step_1b$()) {
+ break lab16;
+ }
+ }
+ cursor$6 = this.cursor = (limit$3 = this.limit) - v_11;
+ v_12 = limit$3 - cursor$6;
+ lab17 = true;
+lab17:
+ while (lab17 === true) {
+ lab17 = false;
+ if (! this.r_Step_1c$()) {
+ break lab17;
+ }
+ }
+ cursor$7 = this.cursor = (limit$4 = this.limit) - v_12;
+ v_13 = limit$4 - cursor$7;
+ lab18 = true;
+lab18:
+ while (lab18 === true) {
+ lab18 = false;
+ if (! this.r_Step_2$()) {
+ break lab18;
+ }
+ }
+ cursor$8 = this.cursor = (limit$5 = this.limit) - v_13;
+ v_14 = limit$5 - cursor$8;
+ lab19 = true;
+lab19:
+ while (lab19 === true) {
+ lab19 = false;
+ if (! this.r_Step_3$()) {
+ break lab19;
+ }
+ }
+ cursor$9 = this.cursor = (limit$6 = this.limit) - v_14;
+ v_15 = limit$6 - cursor$9;
+ lab20 = true;
+lab20:
+ while (lab20 === true) {
+ lab20 = false;
+ if (! this.r_Step_4$()) {
+ break lab20;
+ }
+ }
+ cursor$10 = this.cursor = (limit$7 = this.limit) - v_15;
+ v_16 = limit$7 - cursor$10;
+ lab21 = true;
+lab21:
+ while (lab21 === true) {
+ lab21 = false;
+ if (! this.r_Step_5a$()) {
+ break lab21;
+ }
+ }
+ this.cursor = this.limit - v_16;
+ lab22 = true;
+lab22:
+ while (lab22 === true) {
+ lab22 = false;
+ if (! this.r_Step_5b$()) {
+ break lab22;
+ }
+ }
+ cursor$12 = this.cursor = this.limit_backward;
+ v_18 = cursor$12;
+ lab23 = true;
+lab23:
+ while (lab23 === true) {
+ lab23 = false;
+ if (! this.B_Y_found) {
+ break lab23;
+ }
+ replab24:
+ while (true) {
+ v_19 = this.cursor;
+ lab25 = true;
+ lab25:
+ while (lab25 === true) {
+ lab25 = false;
+ golab26:
+ while (true) {
+ v_20 = this.cursor;
+ lab27 = true;
+ lab27:
+ while (lab27 === true) {
+ lab27 = false;
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "Y")) {
+ break lab27;
+ }
+ this.ket = this.cursor;
+ this.cursor = v_20;
+ break golab26;
+ }
+ cursor$11 = this.cursor = v_20;
+ if (cursor$11 >= this.limit) {
+ break lab25;
+ }
+ this.cursor++;
+ }
+ if (! this.slice_from$S("y")) {
+ return false;
+ }
+ continue replab24;
+ }
+ this.cursor = v_19;
+ break replab24;
+ }
+ }
+ this.cursor = v_18;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+PorterStemmer.prototype.equals$X = function (o) {
+ return o instanceof PorterStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+PorterStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "PorterStemmer";
+ hash = 0;
+ if ("PorterStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class NorwegianStemmer extends BaseStemmer
+ * @constructor
+ */
+function NorwegianStemmer() {
+}
+
+NorwegianStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function NorwegianStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_x = 0;
+ this.I_p1 = 0;
+};
+
+NorwegianStemmer$.prototype = new NorwegianStemmer;
+
+/**
+ * @param {NorwegianStemmer} other
+ */
+NorwegianStemmer.prototype.copy_from$LNorwegianStemmer$ = function (other) {
+ this.I_x = other.I_x;
+ this.I_p1 = other.I_p1;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+NorwegianStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var c;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ this.I_p1 = limit$0 = this.limit;
+ v_1 = cursor$0 = this.cursor;
+ c = (cursor$0 + 3 | 0);
+ if (0 > c || c > limit$0) {
+ return false;
+ }
+ cursor$2 = this.cursor = c;
+ this.I_x = cursor$2;
+ this.cursor = v_1;
+golab0:
+ while (true) {
+ v_2 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping$AIII(NorwegianStemmer.g_v, 97, 248)) {
+ break lab1;
+ }
+ this.cursor = v_2;
+ break golab0;
+ }
+ cursor$1 = this.cursor = v_2;
+ if (cursor$1 >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+golab2:
+ while (true) {
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.out_grouping$AIII(NorwegianStemmer.g_v, 97, 248)) {
+ break lab3;
+ }
+ break golab2;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ lab4 = true;
+lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! (this.I_p1 < this.I_x)) {
+ break lab4;
+ }
+ this.I_p1 = this.I_x;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+NorwegianStemmer.prototype.r_main_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(NorwegianStemmer.a_0, 29);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_3 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping_b$AIII(NorwegianStemmer.g_s_ending, 98, 122)) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_3;
+ if (! this.eq_s_b$IS(1, "k")) {
+ return false;
+ }
+ if (! this.out_grouping_b$AIII(NorwegianStemmer.g_v, 97, 248)) {
+ return false;
+ }
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("er")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+NorwegianStemmer.prototype.r_consonant_pair$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit_backward$0;
+ v_1 = (limit$0 = this.limit) - (cursor$0 = this.cursor);
+ v_2 = limit$0 - cursor$0;
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_3 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_2;
+ this.ket = cursor$2;
+ if (this.find_among_b$ALAmong$I(NorwegianStemmer.a_1, 2) === 0) {
+ this.limit_backward = v_3;
+ return false;
+ }
+ this.bra = this.cursor;
+ limit_backward$0 = this.limit_backward = v_3;
+ cursor$3 = this.cursor = this.limit - v_1;
+ if (cursor$3 <= limit_backward$0) {
+ return false;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+NorwegianStemmer.prototype.r_other_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(NorwegianStemmer.a_2, 11);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+NorwegianStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_mark_regions$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ this.limit_backward = cursor$0;
+ cursor$1 = this.cursor = limit$0 = this.limit;
+ v_2 = limit$0 - cursor$1;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_main_suffix$()) {
+ break lab1;
+ }
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_2;
+ v_3 = limit$1 - cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_consonant_pair$()) {
+ break lab2;
+ }
+ }
+ this.cursor = this.limit - v_3;
+ lab3 = true;
+lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.r_other_suffix$()) {
+ break lab3;
+ }
+ }
+ this.cursor = this.limit_backward;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+NorwegianStemmer.prototype.equals$X = function (o) {
+ return o instanceof NorwegianStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+NorwegianStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "NorwegianStemmer";
+ hash = 0;
+ if ("NorwegianStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class ItalianStemmer extends BaseStemmer
+ * @constructor
+ */
+function ItalianStemmer() {
+}
+
+ItalianStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function ItalianStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_p2 = 0;
+ this.I_p1 = 0;
+ this.I_pV = 0;
+};
+
+ItalianStemmer$.prototype = new ItalianStemmer;
+
+/**
+ * @param {ItalianStemmer} other
+ */
+ItalianStemmer.prototype.copy_from$LItalianStemmer$ = function (other) {
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ this.I_pV = other.I_pV;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.r_prelude$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!number} */
+ var cursor$0;
+ v_1 = this.cursor;
+replab0:
+ while (true) {
+ v_2 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(ItalianStemmer.a_0, 7);
+ if (among_var === 0) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab1;
+ case 1:
+ if (! this.slice_from$S("\u00E0")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("\u00E8")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("\u00EC")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("\u00F2")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("\u00F9")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("qU")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ break;
+ }
+ continue replab0;
+ }
+ this.cursor = v_2;
+ break replab0;
+ }
+ this.cursor = v_1;
+replab2:
+ while (true) {
+ v_3 = this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ golab4:
+ while (true) {
+ v_4 = this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab5;
+ }
+ this.bra = this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ v_5 = this.cursor;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.eq_s$IS(1, "u")) {
+ break lab7;
+ }
+ this.ket = this.cursor;
+ if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab7;
+ }
+ if (! this.slice_from$S("U")) {
+ return false;
+ }
+ break lab6;
+ }
+ this.cursor = v_5;
+ if (! this.eq_s$IS(1, "i")) {
+ break lab5;
+ }
+ this.ket = this.cursor;
+ if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab5;
+ }
+ if (! this.slice_from$S("I")) {
+ return false;
+ }
+ }
+ this.cursor = v_4;
+ break golab4;
+ }
+ cursor$0 = this.cursor = v_4;
+ if (cursor$0 >= this.limit) {
+ break lab3;
+ }
+ this.cursor++;
+ }
+ continue replab2;
+ }
+ this.cursor = v_3;
+ break replab2;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!boolean} */
+ var lab17;
+ /** @type {!boolean} */
+ var lab19;
+ /** @type {!boolean} */
+ var lab21;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ this.I_pV = limit$0 = this.limit;
+ this.I_p1 = limit$0;
+ this.I_p2 = limit$0;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab2;
+ }
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ v_3 = this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab4;
+ }
+ golab5:
+ while (true) {
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab6;
+ }
+ break golab5;
+ }
+ if (this.cursor >= this.limit) {
+ break lab4;
+ }
+ this.cursor++;
+ }
+ break lab3;
+ }
+ this.cursor = v_3;
+ if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab2;
+ }
+ golab7:
+ while (true) {
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit) {
+ break lab2;
+ }
+ this.cursor++;
+ }
+ }
+ break lab1;
+ }
+ this.cursor = v_2;
+ if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab0;
+ }
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ v_6 = this.cursor;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab10;
+ }
+ golab11:
+ while (true) {
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab12;
+ }
+ break golab11;
+ }
+ if (this.cursor >= this.limit) {
+ break lab10;
+ }
+ this.cursor++;
+ }
+ break lab9;
+ }
+ this.cursor = v_6;
+ if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab0;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ }
+ this.I_pV = this.cursor;
+ }
+ cursor$0 = this.cursor = v_1;
+ v_8 = cursor$0;
+ lab13 = true;
+lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ golab14:
+ while (true) {
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab15;
+ }
+ break golab14;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ golab16:
+ while (true) {
+ lab17 = true;
+ lab17:
+ while (lab17 === true) {
+ lab17 = false;
+ if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab17;
+ }
+ break golab16;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ golab18:
+ while (true) {
+ lab19 = true;
+ lab19:
+ while (lab19 === true) {
+ lab19 = false;
+ if (! this.in_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab19;
+ }
+ break golab18;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ golab20:
+ while (true) {
+ lab21 = true;
+ lab21:
+ while (lab21 === true) {
+ lab21 = false;
+ if (! this.out_grouping$AIII(ItalianStemmer.g_v, 97, 249)) {
+ break lab21;
+ }
+ break golab20;
+ }
+ if (this.cursor >= this.limit) {
+ break lab13;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ }
+ this.cursor = v_8;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.r_postlude$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab1;
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(ItalianStemmer.a_1, 3);
+ if (among_var === 0) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab1;
+ case 1:
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ break;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.r_RV$ = function () {
+ return (! (this.I_pV <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.r_R1$ = function () {
+ return (! (this.I_p1 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.r_attached_pronoun$ = function () {
+ /** @type {!number} */
+ var among_var;
+ this.ket = this.cursor;
+ if (this.find_among_b$ALAmong$I(ItalianStemmer.a_2, 37) === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_3, 5);
+ if (among_var === 0) {
+ return false;
+ }
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.r_standard_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var cursor$4;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_6, 51);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "ic")) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$0) ? false : true)) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ break;
+ case 3:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("log")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("ente")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (! (! (this.I_p1 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_2 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_4, 4);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ this.bra = cursor$1 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$1) ? false : true)) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_2;
+ break lab1;
+ case 1:
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "at")) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ this.bra = cursor$2 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$2) ? false : true)) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ case 8:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_3 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_5, 3);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_3;
+ break lab2;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_3;
+ break lab2;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ this.cursor = this.limit - v_3;
+ break lab2;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ case 9:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_4 = this.limit - this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "at")) {
+ this.cursor = this.limit - v_4;
+ break lab3;
+ }
+ this.bra = cursor$3 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$3) ? false : true)) {
+ this.cursor = this.limit - v_4;
+ break lab3;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "ic")) {
+ this.cursor = this.limit - v_4;
+ break lab3;
+ }
+ this.bra = cursor$4 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$4) ? false : true)) {
+ this.cursor = this.limit - v_4;
+ break lab3;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.r_verb_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_pV) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_pV;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(ItalianStemmer.a_7, 87);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.limit_backward = v_2;
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ this.limit_backward = v_2;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.r_vowel_suffix$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ if (! this.in_grouping_b$AIII(ItalianStemmer.g_AEIO, 97, 242)) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_pV <= cursor$0) ? false : true)) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "i")) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = cursor$1 = this.cursor;
+ if (! (! (this.I_pV <= cursor$1) ? false : true)) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ v_2 = this.limit - this.cursor;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "h")) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ this.bra = this.cursor;
+ if (! this.in_grouping_b$AIII(ItalianStemmer.g_CG, 99, 103)) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var cursor$4;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_prelude$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ v_2 = cursor$0;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_mark_regions$()) {
+ break lab1;
+ }
+ }
+ cursor$1 = this.cursor = v_2;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = limit$0 = this.limit;
+ v_3 = limit$0 - cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_attached_pronoun$()) {
+ break lab2;
+ }
+ }
+ cursor$3 = this.cursor = (limit$1 = this.limit) - v_3;
+ v_4 = limit$1 - cursor$3;
+ lab3 = true;
+lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ v_5 = this.limit - this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.r_standard_suffix$()) {
+ break lab5;
+ }
+ break lab4;
+ }
+ this.cursor = this.limit - v_5;
+ if (! this.r_verb_suffix$()) {
+ break lab3;
+ }
+ }
+ }
+ this.cursor = this.limit - v_4;
+ lab6 = true;
+lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.r_vowel_suffix$()) {
+ break lab6;
+ }
+ }
+ cursor$4 = this.cursor = this.limit_backward;
+ v_7 = cursor$4;
+ lab7 = true;
+lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.r_postlude$()) {
+ break lab7;
+ }
+ }
+ this.cursor = v_7;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+ItalianStemmer.prototype.equals$X = function (o) {
+ return o instanceof ItalianStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+ItalianStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "ItalianStemmer";
+ hash = 0;
+ if ("ItalianStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class HungarianStemmer extends BaseStemmer
+ * @constructor
+ */
+function HungarianStemmer() {
+}
+
+HungarianStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function HungarianStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_p1 = 0;
+};
+
+HungarianStemmer$.prototype = new HungarianStemmer;
+
+/**
+ * @param {HungarianStemmer} other
+ */
+HungarianStemmer.prototype.copy_from$LHungarianStemmer$ = function (other) {
+ this.I_p1 = other.I_p1;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ this.I_p1 = this.limit;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping$AIII(HungarianStemmer.g_v, 97, 252)) {
+ break lab1;
+ }
+ golab2:
+ while (true) {
+ v_2 = this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.out_grouping$AIII(HungarianStemmer.g_v, 97, 252)) {
+ break lab3;
+ }
+ this.cursor = v_2;
+ break golab2;
+ }
+ cursor$0 = this.cursor = v_2;
+ if (cursor$0 >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ }
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ v_3 = this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (this.find_among$ALAmong$I(HungarianStemmer.a_0, 8) === 0) {
+ break lab5;
+ }
+ break lab4;
+ }
+ cursor$1 = this.cursor = v_3;
+ if (cursor$1 >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ break lab0;
+ }
+ this.cursor = v_1;
+ if (! this.out_grouping$AIII(HungarianStemmer.g_v, 97, 252)) {
+ return false;
+ }
+ golab6:
+ while (true) {
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.in_grouping$AIII(HungarianStemmer.g_v, 97, 252)) {
+ break lab7;
+ }
+ break golab6;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_R1$ = function () {
+ return (! (this.I_p1 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_v_ending$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_1, 2);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_double$ = function () {
+ /** @type {!number} */
+ var v_1;
+ v_1 = this.limit - this.cursor;
+ if (this.find_among_b$ALAmong$I(HungarianStemmer.a_2, 23) === 0) {
+ return false;
+ }
+ this.cursor = this.limit - v_1;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_undouble$ = function () {
+ /** @type {!number} */
+ var c;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ if (this.cursor <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ this.ket = cursor$0 = this.cursor;
+ c = (cursor$0 - 1 | 0);
+ if (this.limit_backward > c || c > this.limit) {
+ return false;
+ }
+ cursor$1 = this.cursor = c;
+ this.bra = cursor$1;
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_instrum$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_3, 2);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.r_double$()) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.r_double$()) {
+ return false;
+ }
+ break;
+ }
+ return (! this.slice_from$S("") ? false : ! this.r_undouble$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_case$ = function () {
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ if (this.find_among_b$ALAmong$I(HungarianStemmer.a_4, 44) === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ return (! (! (this.I_p1 <= cursor$0) ? false : true) ? false : ! this.slice_from$S("") ? false : ! this.r_v_ending$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_case_special$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_5, 3);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_case_other$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_6, 6);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_factive$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_7, 2);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.r_double$()) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.r_double$()) {
+ return false;
+ }
+ break;
+ }
+ return (! this.slice_from$S("") ? false : ! this.r_undouble$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_plural$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_8, 7);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_owned$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_9, 12);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 8:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 9:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_sing_owner$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_10, 31);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 8:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 9:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 10:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 11:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 12:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 13:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 14:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 15:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 16:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 17:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 18:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 19:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 20:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.r_plur_owner$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(HungarianStemmer.a_11, 42);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 8:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 9:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 10:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 11:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 12:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 13:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 14:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 15:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 16:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 17:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 18:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 19:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 20:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 21:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 22:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 23:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 24:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 25:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 26:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 27:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 28:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 29:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var limit$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit$3;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var limit$4;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var limit$5;
+ /** @type {!number} */
+ var cursor$6;
+ /** @type {!number} */
+ var limit$6;
+ /** @type {!number} */
+ var cursor$7;
+ /** @type {!number} */
+ var limit$7;
+ /** @type {!number} */
+ var cursor$8;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_mark_regions$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ this.limit_backward = cursor$0;
+ cursor$1 = this.cursor = limit$0 = this.limit;
+ v_2 = limit$0 - cursor$1;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_instrum$()) {
+ break lab1;
+ }
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_2;
+ v_3 = limit$1 - cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_case$()) {
+ break lab2;
+ }
+ }
+ cursor$3 = this.cursor = (limit$2 = this.limit) - v_3;
+ v_4 = limit$2 - cursor$3;
+ lab3 = true;
+lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.r_case_special$()) {
+ break lab3;
+ }
+ }
+ cursor$4 = this.cursor = (limit$3 = this.limit) - v_4;
+ v_5 = limit$3 - cursor$4;
+ lab4 = true;
+lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.r_case_other$()) {
+ break lab4;
+ }
+ }
+ cursor$5 = this.cursor = (limit$4 = this.limit) - v_5;
+ v_6 = limit$4 - cursor$5;
+ lab5 = true;
+lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.r_factive$()) {
+ break lab5;
+ }
+ }
+ cursor$6 = this.cursor = (limit$5 = this.limit) - v_6;
+ v_7 = limit$5 - cursor$6;
+ lab6 = true;
+lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.r_owned$()) {
+ break lab6;
+ }
+ }
+ cursor$7 = this.cursor = (limit$6 = this.limit) - v_7;
+ v_8 = limit$6 - cursor$7;
+ lab7 = true;
+lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.r_sing_owner$()) {
+ break lab7;
+ }
+ }
+ cursor$8 = this.cursor = (limit$7 = this.limit) - v_8;
+ v_9 = limit$7 - cursor$8;
+ lab8 = true;
+lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.r_plur_owner$()) {
+ break lab8;
+ }
+ }
+ this.cursor = this.limit - v_9;
+ lab9 = true;
+lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! this.r_plural$()) {
+ break lab9;
+ }
+ }
+ this.cursor = this.limit_backward;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+HungarianStemmer.prototype.equals$X = function (o) {
+ return o instanceof HungarianStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+HungarianStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "HungarianStemmer";
+ hash = 0;
+ if ("HungarianStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class GermanStemmer extends BaseStemmer
+ * @constructor
+ */
+function GermanStemmer() {
+}
+
+GermanStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function GermanStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_x = 0;
+ this.I_p2 = 0;
+ this.I_p1 = 0;
+};
+
+GermanStemmer$.prototype = new GermanStemmer;
+
+/**
+ * @param {GermanStemmer} other
+ */
+GermanStemmer.prototype.copy_from$LGermanStemmer$ = function (other) {
+ this.I_x = other.I_x;
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+GermanStemmer.prototype.r_prelude$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ v_1 = this.cursor;
+replab0:
+ while (true) {
+ v_2 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_3 = this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "\u00DF")) {
+ break lab3;
+ }
+ this.ket = this.cursor;
+ if (! this.slice_from$S("ss")) {
+ return false;
+ }
+ break lab2;
+ }
+ cursor$0 = this.cursor = v_3;
+ if (cursor$0 >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ }
+ continue replab0;
+ }
+ this.cursor = v_2;
+ break replab0;
+ }
+ this.cursor = v_1;
+replab4:
+ while (true) {
+ v_4 = this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ golab6:
+ while (true) {
+ v_5 = this.cursor;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) {
+ break lab7;
+ }
+ this.bra = this.cursor;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ v_6 = this.cursor;
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! this.eq_s$IS(1, "u")) {
+ break lab9;
+ }
+ this.ket = this.cursor;
+ if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) {
+ break lab9;
+ }
+ if (! this.slice_from$S("U")) {
+ return false;
+ }
+ break lab8;
+ }
+ this.cursor = v_6;
+ if (! this.eq_s$IS(1, "y")) {
+ break lab7;
+ }
+ this.ket = this.cursor;
+ if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) {
+ break lab7;
+ }
+ if (! this.slice_from$S("Y")) {
+ return false;
+ }
+ }
+ this.cursor = v_5;
+ break golab6;
+ }
+ cursor$1 = this.cursor = v_5;
+ if (cursor$1 >= this.limit) {
+ break lab5;
+ }
+ this.cursor++;
+ }
+ continue replab4;
+ }
+ this.cursor = v_4;
+ break replab4;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+GermanStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var c;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ this.I_p1 = limit$0 = this.limit;
+ this.I_p2 = limit$0;
+ v_1 = cursor$0 = this.cursor;
+ c = (cursor$0 + 3 | 0);
+ if (0 > c || c > limit$0) {
+ return false;
+ }
+ cursor$1 = this.cursor = c;
+ this.I_x = cursor$1;
+ this.cursor = v_1;
+golab0:
+ while (true) {
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) {
+ break lab1;
+ }
+ break golab0;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+golab2:
+ while (true) {
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.out_grouping$AIII(GermanStemmer.g_v, 97, 252)) {
+ break lab3;
+ }
+ break golab2;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ lab4 = true;
+lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! (this.I_p1 < this.I_x)) {
+ break lab4;
+ }
+ this.I_p1 = this.I_x;
+ }
+golab5:
+ while (true) {
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.in_grouping$AIII(GermanStemmer.g_v, 97, 252)) {
+ break lab6;
+ }
+ break golab5;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+golab7:
+ while (true) {
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.out_grouping$AIII(GermanStemmer.g_v, 97, 252)) {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+GermanStemmer.prototype.r_postlude$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab1;
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(GermanStemmer.a_0, 6);
+ if (among_var === 0) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab1;
+ case 1:
+ if (! this.slice_from$S("y")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("o")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ break;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+GermanStemmer.prototype.r_R1$ = function () {
+ return (! (this.I_p1 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+GermanStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+GermanStemmer.prototype.r_standard_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var c;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var cursor$6;
+ /** @type {!number} */
+ var cursor$7;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$8;
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_1, 7);
+ if (among_var === 0) {
+ break lab0;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ break lab0;
+ }
+ switch (among_var) {
+ case 0:
+ break lab0;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_2 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "s")) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ this.bra = this.cursor;
+ if (! this.eq_s_b$IS(3, "nis")) {
+ this.cursor = this.limit - v_2;
+ break lab1;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ break;
+ case 3:
+ if (! this.in_grouping_b$AIII(GermanStemmer.g_s_ending, 98, 116)) {
+ break lab0;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ cursor$2 = this.cursor = (limit$0 = this.limit) - v_1;
+ v_3 = limit$0 - cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_2, 4);
+ if (among_var === 0) {
+ break lab2;
+ }
+ this.bra = cursor$1 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$1) ? false : true)) {
+ break lab2;
+ }
+ switch (among_var) {
+ case 0:
+ break lab2;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.in_grouping_b$AIII(GermanStemmer.g_st_ending, 98, 116)) {
+ break lab2;
+ }
+ c = (this.cursor - 3 | 0);
+ if (this.limit_backward > c || c > this.limit) {
+ break lab2;
+ }
+ this.cursor = c;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ cursor$8 = this.cursor = (limit$1 = this.limit) - v_3;
+ v_4 = limit$1 - cursor$8;
+ lab3 = true;
+lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_4, 8);
+ if (among_var === 0) {
+ break lab3;
+ }
+ this.bra = cursor$3 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$3) ? false : true)) {
+ break lab3;
+ }
+ switch (among_var) {
+ case 0:
+ break lab3;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_5 = this.limit - this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "ig")) {
+ this.cursor = this.limit - v_5;
+ break lab4;
+ }
+ this.bra = cursor$4 = this.cursor;
+ v_6 = this.limit - cursor$4;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.eq_s_b$IS(1, "e")) {
+ break lab5;
+ }
+ this.cursor = this.limit - v_5;
+ break lab4;
+ }
+ cursor$5 = this.cursor = this.limit - v_6;
+ if (! (! (this.I_p2 <= cursor$5) ? false : true)) {
+ this.cursor = this.limit - v_5;
+ break lab4;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ break;
+ case 2:
+ v_7 = this.limit - this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.eq_s_b$IS(1, "e")) {
+ break lab6;
+ }
+ break lab3;
+ }
+ this.cursor = this.limit - v_7;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_8 = this.limit - this.cursor;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ this.ket = this.cursor;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ v_9 = this.limit - this.cursor;
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! this.eq_s_b$IS(2, "er")) {
+ break lab9;
+ }
+ break lab8;
+ }
+ this.cursor = this.limit - v_9;
+ if (! this.eq_s_b$IS(2, "en")) {
+ this.cursor = this.limit - v_8;
+ break lab7;
+ }
+ }
+ this.bra = cursor$6 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$6) ? false : true)) {
+ this.cursor = this.limit - v_8;
+ break lab7;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_10 = this.limit - this.cursor;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(GermanStemmer.a_3, 2);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_10;
+ break lab10;
+ }
+ this.bra = cursor$7 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$7) ? false : true)) {
+ this.cursor = this.limit - v_10;
+ break lab10;
+ }
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_10;
+ break lab10;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ }
+ }
+ this.cursor = this.limit - v_4;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+GermanStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_prelude$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ v_2 = cursor$0;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_mark_regions$()) {
+ break lab1;
+ }
+ }
+ cursor$1 = this.cursor = v_2;
+ this.limit_backward = cursor$1;
+ this.cursor = this.limit;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_standard_suffix$()) {
+ break lab2;
+ }
+ }
+ cursor$2 = this.cursor = this.limit_backward;
+ v_4 = cursor$2;
+ lab3 = true;
+lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.r_postlude$()) {
+ break lab3;
+ }
+ }
+ this.cursor = v_4;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+GermanStemmer.prototype.equals$X = function (o) {
+ return o instanceof GermanStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+GermanStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "GermanStemmer";
+ hash = 0;
+ if ("GermanStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class FrenchStemmer extends BaseStemmer
+ * @constructor
+ */
+function FrenchStemmer() {
+}
+
+FrenchStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function FrenchStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_p2 = 0;
+ this.I_p1 = 0;
+ this.I_pV = 0;
+};
+
+FrenchStemmer$.prototype = new FrenchStemmer;
+
+/**
+ * @param {FrenchStemmer} other
+ */
+FrenchStemmer.prototype.copy_from$LFrenchStemmer$ = function (other) {
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ this.I_pV = other.I_pV;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_prelude$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!number} */
+ var cursor$0;
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ golab2:
+ while (true) {
+ v_2 = this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ v_3 = this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab5;
+ }
+ this.bra = this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ v_4 = this.cursor;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.eq_s$IS(1, "u")) {
+ break lab7;
+ }
+ this.ket = this.cursor;
+ if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab7;
+ }
+ if (! this.slice_from$S("U")) {
+ return false;
+ }
+ break lab6;
+ }
+ this.cursor = v_4;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.eq_s$IS(1, "i")) {
+ break lab8;
+ }
+ this.ket = this.cursor;
+ if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab8;
+ }
+ if (! this.slice_from$S("I")) {
+ return false;
+ }
+ break lab6;
+ }
+ this.cursor = v_4;
+ if (! this.eq_s$IS(1, "y")) {
+ break lab5;
+ }
+ this.ket = this.cursor;
+ if (! this.slice_from$S("Y")) {
+ return false;
+ }
+ }
+ break lab4;
+ }
+ this.cursor = v_3;
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "y")) {
+ break lab9;
+ }
+ this.ket = this.cursor;
+ if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab9;
+ }
+ if (! this.slice_from$S("Y")) {
+ return false;
+ }
+ break lab4;
+ }
+ this.cursor = v_3;
+ if (! this.eq_s$IS(1, "q")) {
+ break lab3;
+ }
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "u")) {
+ break lab3;
+ }
+ this.ket = this.cursor;
+ if (! this.slice_from$S("U")) {
+ return false;
+ }
+ }
+ this.cursor = v_2;
+ break golab2;
+ }
+ cursor$0 = this.cursor = v_2;
+ if (cursor$0 >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab14;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ this.I_pV = limit$0 = this.limit;
+ this.I_p1 = limit$0;
+ this.I_p2 = limit$0;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab2;
+ }
+ if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab2;
+ }
+ if (this.cursor >= this.limit) {
+ break lab2;
+ }
+ this.cursor++;
+ break lab1;
+ }
+ this.cursor = v_2;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (this.find_among$ALAmong$I(FrenchStemmer.a_0, 3) === 0) {
+ break lab3;
+ }
+ break lab1;
+ }
+ cursor$0 = this.cursor = v_2;
+ if (cursor$0 >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ golab4:
+ while (true) {
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab5;
+ }
+ break golab4;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ }
+ this.I_pV = this.cursor;
+ }
+ cursor$1 = this.cursor = v_1;
+ v_4 = cursor$1;
+ lab6 = true;
+lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ golab7:
+ while (true) {
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit) {
+ break lab6;
+ }
+ this.cursor++;
+ }
+ golab9:
+ while (true) {
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.out_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab10;
+ }
+ break golab9;
+ }
+ if (this.cursor >= this.limit) {
+ break lab6;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ golab11:
+ while (true) {
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! this.in_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab12;
+ }
+ break golab11;
+ }
+ if (this.cursor >= this.limit) {
+ break lab6;
+ }
+ this.cursor++;
+ }
+ golab13:
+ while (true) {
+ lab14 = true;
+ lab14:
+ while (lab14 === true) {
+ lab14 = false;
+ if (! this.out_grouping$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab14;
+ }
+ break golab13;
+ }
+ if (this.cursor >= this.limit) {
+ break lab6;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ }
+ this.cursor = v_4;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_postlude$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab1;
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(FrenchStemmer.a_1, 4);
+ if (among_var === 0) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab1;
+ case 1:
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("y")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ break;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_RV$ = function () {
+ return (! (this.I_pV <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_R1$ = function () {
+ return (! (this.I_p1 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_standard_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!number} */
+ var v_11;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab11;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!boolean} */
+ var lab14;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_4, 43);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "ic")) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab2;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab1;
+ }
+ this.cursor = this.limit - v_2;
+ if (! this.slice_from$S("iqU")) {
+ return false;
+ }
+ }
+ }
+ break;
+ case 3:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("log")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("ent")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_3 = this.limit - this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_2, 6);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_3;
+ break lab3;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_3;
+ break lab3;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ this.cursor = this.limit - v_3;
+ break lab3;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "at")) {
+ this.cursor = this.limit - v_3;
+ break lab3;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$0) ? false : true)) {
+ this.cursor = this.limit - v_3;
+ break lab3;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ v_4 = this.limit - this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab5;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab4;
+ }
+ cursor$1 = this.cursor = this.limit - v_4;
+ if (! (! (this.I_p1 <= cursor$1) ? false : true)) {
+ this.cursor = this.limit - v_3;
+ break lab3;
+ }
+ if (! this.slice_from$S("eux")) {
+ return false;
+ }
+ }
+ break;
+ case 3:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ this.cursor = this.limit - v_3;
+ break lab3;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ this.cursor = this.limit - v_3;
+ break lab3;
+ }
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ case 7:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_5 = this.limit - this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_3, 3);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_5;
+ break lab6;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_5;
+ break lab6;
+ case 1:
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ v_6 = this.limit - this.cursor;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab8;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab7;
+ }
+ this.cursor = this.limit - v_6;
+ if (! this.slice_from$S("abl")) {
+ return false;
+ }
+ }
+ break;
+ case 2:
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ v_7 = this.limit - this.cursor;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab10;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab9;
+ }
+ this.cursor = this.limit - v_7;
+ if (! this.slice_from$S("iqU")) {
+ return false;
+ }
+ }
+ break;
+ case 3:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ this.cursor = this.limit - v_5;
+ break lab6;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ break;
+ case 8:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_8 = this.limit - this.cursor;
+ lab11 = true;
+ lab11:
+ while (lab11 === true) {
+ lab11 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "at")) {
+ this.cursor = this.limit - v_8;
+ break lab11;
+ }
+ this.bra = cursor$2 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$2) ? false : true)) {
+ this.cursor = this.limit - v_8;
+ break lab11;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "ic")) {
+ this.cursor = this.limit - v_8;
+ break lab11;
+ }
+ this.bra = this.cursor;
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ v_9 = this.limit - this.cursor;
+ lab13 = true;
+ lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab13;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab12;
+ }
+ this.cursor = this.limit - v_9;
+ if (! this.slice_from$S("iqU")) {
+ return false;
+ }
+ }
+ }
+ break;
+ case 9:
+ if (! this.slice_from$S("eau")) {
+ return false;
+ }
+ break;
+ case 10:
+ if (! (! (this.I_p1 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("al")) {
+ return false;
+ }
+ break;
+ case 11:
+ lab14 = true;
+ lab14:
+ while (lab14 === true) {
+ lab14 = false;
+ v_10 = this.limit - this.cursor;
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab15;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab14;
+ }
+ cursor$3 = this.cursor = this.limit - v_10;
+ if (! (! (this.I_p1 <= cursor$3) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("eux")) {
+ return false;
+ }
+ }
+ break;
+ case 12:
+ if (! (! (this.I_p1 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.out_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 13:
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("ant")) {
+ return false;
+ }
+ return false;
+ case 14:
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("ent")) {
+ return false;
+ }
+ return false;
+ case 15:
+ v_11 = this.limit - this.cursor;
+ if (! this.in_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) {
+ return false;
+ }
+ if (! (! (this.I_pV <= this.cursor) ? false : true)) {
+ return false;
+ }
+ this.cursor = this.limit - v_11;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ return false;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_i_verb_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_pV) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_pV;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_5, 35);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.limit_backward = v_2;
+ return false;
+ case 1:
+ if (! this.out_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ this.limit_backward = v_2;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_verb_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_pV) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_pV;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_6, 38);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.limit_backward = v_2;
+ return false;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_3 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "e")) {
+ this.cursor = this.limit - v_3;
+ break lab0;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ break;
+ }
+ this.limit_backward = v_2;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_residual_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "s")) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = cursor$0 = this.cursor;
+ v_2 = this.limit - cursor$0;
+ if (! this.out_grouping_b$AIII(FrenchStemmer.g_keep_with_s, 97, 232)) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.cursor = this.limit - v_2;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ v_3 = this.limit - (cursor$1 = this.cursor);
+ if (cursor$1 < this.I_pV) {
+ return false;
+ }
+ cursor$2 = this.cursor = this.I_pV;
+ v_4 = this.limit_backward;
+ this.limit_backward = cursor$2;
+ cursor$3 = this.cursor = this.limit - v_3;
+ this.ket = cursor$3;
+ among_var = this.find_among_b$ALAmong$I(FrenchStemmer.a_7, 7);
+ if (among_var === 0) {
+ this.limit_backward = v_4;
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.limit_backward = v_4;
+ return false;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ this.limit_backward = v_4;
+ return false;
+ }
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_5 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.eq_s_b$IS(1, "s")) {
+ break lab2;
+ }
+ break lab1;
+ }
+ this.cursor = this.limit - v_5;
+ if (! this.eq_s_b$IS(1, "t")) {
+ this.limit_backward = v_4;
+ return false;
+ }
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.eq_s_b$IS(2, "gu")) {
+ this.limit_backward = v_4;
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ this.limit_backward = v_4;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_un_double$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var cursor$0;
+ v_1 = this.limit - this.cursor;
+ if (this.find_among_b$ALAmong$I(FrenchStemmer.a_8, 5) === 0) {
+ return false;
+ }
+ cursor$0 = this.cursor = this.limit - v_1;
+ this.ket = cursor$0;
+ if (cursor$0 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.r_un_accent$ = function () {
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ v_1 = 1;
+replab0:
+ while (true) {
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.out_grouping_b$AIII(FrenchStemmer.g_v, 97, 251)) {
+ break lab1;
+ }
+ v_1--;
+ continue replab0;
+ }
+ break replab0;
+ }
+ if (v_1 > 0) {
+ return false;
+ }
+ this.ket = this.cursor;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_3 = this.limit - this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.eq_s_b$IS(1, "\u00E9")) {
+ break lab3;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_3;
+ if (! this.eq_s_b$IS(1, "\u00E8")) {
+ return false;
+ }
+ }
+ this.bra = this.cursor;
+ return (! this.slice_from$S("e") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!number} */
+ var v_11;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab11;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit$2;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var cursor$5;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_prelude$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ v_2 = cursor$0;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_mark_regions$()) {
+ break lab1;
+ }
+ }
+ cursor$2 = this.cursor = v_2;
+ this.limit_backward = cursor$2;
+ cursor$3 = this.cursor = limit$1 = this.limit;
+ v_3 = limit$1 - cursor$3;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ v_4 = this.limit - this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ v_5 = this.limit - this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ v_6 = this.limit - this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.r_standard_suffix$()) {
+ break lab6;
+ }
+ break lab5;
+ }
+ this.cursor = this.limit - v_6;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.r_i_verb_suffix$()) {
+ break lab7;
+ }
+ break lab5;
+ }
+ this.cursor = this.limit - v_6;
+ if (! this.r_verb_suffix$()) {
+ break lab4;
+ }
+ }
+ cursor$1 = this.cursor = (limit$0 = this.limit) - v_5;
+ v_7 = limit$0 - cursor$1;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ this.ket = this.cursor;
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ v_8 = this.limit - this.cursor;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.eq_s_b$IS(1, "Y")) {
+ break lab10;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break lab9;
+ }
+ this.cursor = this.limit - v_8;
+ if (! this.eq_s_b$IS(1, "\u00E7")) {
+ this.cursor = this.limit - v_7;
+ break lab8;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("c")) {
+ return false;
+ }
+ }
+ }
+ break lab3;
+ }
+ this.cursor = this.limit - v_4;
+ if (! this.r_residual_suffix$()) {
+ break lab2;
+ }
+ }
+ }
+ cursor$4 = this.cursor = (limit$2 = this.limit) - v_3;
+ v_9 = limit$2 - cursor$4;
+ lab11 = true;
+lab11:
+ while (lab11 === true) {
+ lab11 = false;
+ if (! this.r_un_double$()) {
+ break lab11;
+ }
+ }
+ this.cursor = this.limit - v_9;
+ lab12 = true;
+lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! this.r_un_accent$()) {
+ break lab12;
+ }
+ }
+ cursor$5 = this.cursor = this.limit_backward;
+ v_11 = cursor$5;
+ lab13 = true;
+lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ if (! this.r_postlude$()) {
+ break lab13;
+ }
+ }
+ this.cursor = v_11;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+FrenchStemmer.prototype.equals$X = function (o) {
+ return o instanceof FrenchStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+FrenchStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "FrenchStemmer";
+ hash = 0;
+ if ("FrenchStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class FinnishStemmer extends BaseStemmer
+ * @constructor
+ */
+function FinnishStemmer() {
+}
+
+FinnishStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function FinnishStemmer$() {
+ BaseStemmer$.call(this);
+ this.B_ending_removed = false;
+ this.S_x = "";
+ this.I_p2 = 0;
+ this.I_p1 = 0;
+};
+
+FinnishStemmer$.prototype = new FinnishStemmer;
+
+/**
+ * @param {FinnishStemmer} other
+ */
+FinnishStemmer.prototype.copy_from$LFinnishStemmer$ = function (other) {
+ this.B_ending_removed = other.B_ending_removed;
+ this.S_x = other.S_x;
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ this.I_p1 = limit$0 = this.limit;
+ this.I_p2 = limit$0;
+golab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) {
+ break lab1;
+ }
+ this.cursor = v_1;
+ break golab0;
+ }
+ cursor$0 = this.cursor = v_1;
+ if (cursor$0 >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+golab2:
+ while (true) {
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.out_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) {
+ break lab3;
+ }
+ break golab2;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+golab4:
+ while (true) {
+ v_3 = this.cursor;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.in_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) {
+ break lab5;
+ }
+ this.cursor = v_3;
+ break golab4;
+ }
+ cursor$1 = this.cursor = v_3;
+ if (cursor$1 >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+golab6:
+ while (true) {
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.out_grouping$AIII(FinnishStemmer.g_V1, 97, 246)) {
+ break lab7;
+ }
+ break golab6;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_particle_etc$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_0, 10);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.in_grouping_b$AIII(FinnishStemmer.g_particle_end, 97, 246)) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ break;
+ }
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_possessive$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_4, 9);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ v_3 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.eq_s_b$IS(1, "k")) {
+ break lab0;
+ }
+ return false;
+ }
+ this.cursor = this.limit - v_3;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(3, "kse")) {
+ return false;
+ }
+ this.bra = this.cursor;
+ if (! this.slice_from$S("ksi")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (this.find_among_b$ALAmong$I(FinnishStemmer.a_1, 6) === 0) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (this.find_among_b$ALAmong$I(FinnishStemmer.a_2, 6) === 0) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (this.find_among_b$ALAmong$I(FinnishStemmer.a_3, 2) === 0) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_LONG$ = function () {
+ return (this.find_among_b$ALAmong$I(FinnishStemmer.a_5, 7) === 0 ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_VI$ = function () {
+ return (! this.eq_s_b$IS(1, "i") ? false : ! this.in_grouping_b$AIII(FinnishStemmer.g_V2, 97, 246) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_case_ending$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_6, 30);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.eq_s_b$IS(1, "a")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.eq_s_b$IS(1, "e")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.eq_s_b$IS(1, "i")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.eq_s_b$IS(1, "o")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.eq_s_b$IS(1, "\u00E4")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.eq_s_b$IS(1, "\u00F6")) {
+ return false;
+ }
+ break;
+ case 7:
+ v_3 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_4 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_5 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! (this.find_among_b$ALAmong$I(FinnishStemmer.a_5, 7) === 0 ? false : true)) {
+ break lab2;
+ }
+ break lab1;
+ }
+ this.cursor = this.limit - v_5;
+ if (! this.eq_s_b$IS(2, "ie")) {
+ this.cursor = this.limit - v_3;
+ break lab0;
+ }
+ }
+ cursor$3 = this.cursor = this.limit - v_4;
+ if (cursor$3 <= this.limit_backward) {
+ this.cursor = this.limit - v_3;
+ break lab0;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ }
+ break;
+ case 8:
+ if (! this.in_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) {
+ return false;
+ }
+ if (! this.out_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) {
+ return false;
+ }
+ break;
+ case 9:
+ if (! this.eq_s_b$IS(1, "e")) {
+ return false;
+ }
+ break;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.B_ending_removed = true;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_other_endings$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p2) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p2;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_7, 14);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ v_3 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.eq_s_b$IS(2, "po")) {
+ break lab0;
+ }
+ return false;
+ }
+ this.cursor = this.limit - v_3;
+ break;
+ }
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_i_plural$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ if (this.find_among_b$ALAmong$I(FinnishStemmer.a_8, 2) === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_t_plural$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var cursor$6;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ if (! this.eq_s_b$IS(1, "t")) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = cursor$3 = this.cursor;
+ v_3 = this.limit - cursor$3;
+ if (! this.in_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.cursor = this.limit - v_3;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.limit_backward = v_2;
+ v_4 = this.limit - (cursor$4 = this.cursor);
+ if (cursor$4 < this.I_p2) {
+ return false;
+ }
+ cursor$5 = this.cursor = this.I_p2;
+ v_5 = this.limit_backward;
+ this.limit_backward = cursor$5;
+ cursor$6 = this.cursor = this.limit - v_4;
+ this.ket = cursor$6;
+ among_var = this.find_among_b$ALAmong$I(FinnishStemmer.a_9, 2);
+ if (among_var === 0) {
+ this.limit_backward = v_5;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_5;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ v_6 = this.limit - this.cursor;
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.eq_s_b$IS(2, "po")) {
+ break lab0;
+ }
+ return false;
+ }
+ this.cursor = this.limit - v_6;
+ break;
+ }
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.r_tidy$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var limit$2;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var limit$3;
+ /** @type {!number} */
+ var cursor$6;
+ /** @type {!number} */
+ var cursor$7;
+ /** @type {!number} */
+ var cursor$8;
+ /** @type {!string} */
+ var S_x$0;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$2 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$2;
+ cursor$3 = this.cursor = (limit$0 = this.limit) - v_1;
+ v_3 = limit$0 - cursor$3;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_4 = this.limit - this.cursor;
+ if (! (this.find_among_b$ALAmong$I(FinnishStemmer.a_5, 7) === 0 ? false : true)) {
+ break lab0;
+ }
+ cursor$1 = this.cursor = this.limit - v_4;
+ this.ket = cursor$1;
+ if (cursor$1 <= this.limit_backward) {
+ break lab0;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ cursor$4 = this.cursor = (limit$1 = this.limit) - v_3;
+ v_5 = limit$1 - cursor$4;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.ket = this.cursor;
+ if (! this.in_grouping_b$AIII(FinnishStemmer.g_AEI, 97, 228)) {
+ break lab1;
+ }
+ this.bra = this.cursor;
+ if (! this.out_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) {
+ break lab1;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ cursor$5 = this.cursor = (limit$2 = this.limit) - v_5;
+ v_6 = limit$2 - cursor$5;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "j")) {
+ break lab2;
+ }
+ this.bra = this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ v_7 = this.limit - this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.eq_s_b$IS(1, "o")) {
+ break lab4;
+ }
+ break lab3;
+ }
+ this.cursor = this.limit - v_7;
+ if (! this.eq_s_b$IS(1, "u")) {
+ break lab2;
+ }
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ cursor$6 = this.cursor = (limit$3 = this.limit) - v_6;
+ v_8 = limit$3 - cursor$6;
+ lab5 = true;
+lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "o")) {
+ break lab5;
+ }
+ this.bra = this.cursor;
+ if (! this.eq_s_b$IS(1, "j")) {
+ break lab5;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ this.cursor = this.limit - v_8;
+ this.limit_backward = v_2;
+golab6:
+ while (true) {
+ v_9 = this.limit - this.cursor;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.out_grouping_b$AIII(FinnishStemmer.g_V1, 97, 246)) {
+ break lab7;
+ }
+ this.cursor = this.limit - v_9;
+ break golab6;
+ }
+ cursor$7 = this.cursor = this.limit - v_9;
+ if (cursor$7 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ }
+ this.ket = cursor$8 = this.cursor;
+ if (cursor$8 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ S_x$0 = this.S_x = this.slice_to$S(this.S_x);
+ return (S_x$0 === '' ? false : ! this.eq_v_b$S(this.S_x) ? false : ! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var limit$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit$3;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var limit$4;
+ /** @type {!number} */
+ var cursor$5;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_mark_regions$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ this.B_ending_removed = false;
+ this.limit_backward = cursor$0;
+ cursor$1 = this.cursor = limit$0 = this.limit;
+ v_2 = limit$0 - cursor$1;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_particle_etc$()) {
+ break lab1;
+ }
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_2;
+ v_3 = limit$1 - cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_possessive$()) {
+ break lab2;
+ }
+ }
+ cursor$3 = this.cursor = (limit$2 = this.limit) - v_3;
+ v_4 = limit$2 - cursor$3;
+ lab3 = true;
+lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.r_case_ending$()) {
+ break lab3;
+ }
+ }
+ cursor$4 = this.cursor = (limit$3 = this.limit) - v_4;
+ v_5 = limit$3 - cursor$4;
+ lab4 = true;
+lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.r_other_endings$()) {
+ break lab4;
+ }
+ }
+ this.cursor = this.limit - v_5;
+ lab5 = true;
+lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ v_6 = this.limit - this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.B_ending_removed) {
+ break lab6;
+ }
+ v_7 = this.limit - this.cursor;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.r_i_plural$()) {
+ break lab7;
+ }
+ }
+ this.cursor = this.limit - v_7;
+ break lab5;
+ }
+ cursor$5 = this.cursor = (limit$4 = this.limit) - v_6;
+ v_8 = limit$4 - cursor$5;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.r_t_plural$()) {
+ break lab8;
+ }
+ }
+ this.cursor = this.limit - v_8;
+ }
+ lab9 = true;
+lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! this.r_tidy$()) {
+ break lab9;
+ }
+ }
+ this.cursor = this.limit_backward;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+FinnishStemmer.prototype.equals$X = function (o) {
+ return o instanceof FinnishStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+FinnishStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "FinnishStemmer";
+ hash = 0;
+ if ("FinnishStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class EnglishStemmer extends BaseStemmer
+ * @constructor
+ */
+function EnglishStemmer() {
+}
+
+EnglishStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function EnglishStemmer$() {
+ BaseStemmer$.call(this);
+ this.B_Y_found = false;
+ this.I_p2 = 0;
+ this.I_p1 = 0;
+};
+
+EnglishStemmer$.prototype = new EnglishStemmer;
+
+/**
+ * @param {EnglishStemmer} other
+ */
+EnglishStemmer.prototype.copy_from$LEnglishStemmer$ = function (other) {
+ this.B_Y_found = other.B_Y_found;
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_prelude$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ this.B_Y_found = false;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "'")) {
+ break lab0;
+ }
+ this.ket = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ v_2 = cursor$0;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "y")) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ if (! this.slice_from$S("Y")) {
+ return false;
+ }
+ this.B_Y_found = true;
+ }
+ cursor$2 = this.cursor = v_2;
+ v_3 = cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ replab3:
+ while (true) {
+ v_4 = this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ golab5:
+ while (true) {
+ v_5 = this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) {
+ break lab6;
+ }
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "y")) {
+ break lab6;
+ }
+ this.ket = this.cursor;
+ this.cursor = v_5;
+ break golab5;
+ }
+ cursor$1 = this.cursor = v_5;
+ if (cursor$1 >= this.limit) {
+ break lab4;
+ }
+ this.cursor++;
+ }
+ if (! this.slice_from$S("Y")) {
+ return false;
+ }
+ this.B_Y_found = true;
+ continue replab3;
+ }
+ this.cursor = v_4;
+ break replab3;
+ }
+ }
+ this.cursor = v_3;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!number} */
+ var limit$0;
+ this.I_p1 = limit$0 = this.limit;
+ this.I_p2 = limit$0;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (this.find_among$ALAmong$I(EnglishStemmer.a_0, 3) === 0) {
+ break lab2;
+ }
+ break lab1;
+ }
+ this.cursor = v_2;
+ golab3:
+ while (true) {
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) {
+ break lab4;
+ }
+ break golab3;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ golab5:
+ while (true) {
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.out_grouping$AIII(EnglishStemmer.g_v, 97, 121)) {
+ break lab6;
+ }
+ break golab5;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ }
+ this.I_p1 = this.cursor;
+ golab7:
+ while (true) {
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.in_grouping$AIII(EnglishStemmer.g_v, 97, 121)) {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ golab9:
+ while (true) {
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.out_grouping$AIII(EnglishStemmer.g_v, 97, 121)) {
+ break lab10;
+ }
+ break golab9;
+ }
+ if (this.cursor >= this.limit) {
+ break lab0;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ }
+ this.cursor = v_1;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_shortv$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.out_grouping_b$AIII(EnglishStemmer.g_v_WXY, 89, 121)) {
+ break lab1;
+ }
+ if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) {
+ break lab1;
+ }
+ if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) {
+ return false;
+ }
+ if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) {
+ return false;
+ }
+ if (this.cursor > this.limit_backward) {
+ return false;
+ }
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_R1$ = function () {
+ return (! (this.I_p1 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_Step_1a$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var c;
+ /** @type {!boolean} */
+ var lab4;
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_1, 3);
+ if (among_var === 0) {
+ this.cursor = this.limit - v_1;
+ break lab0;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ this.cursor = this.limit - v_1;
+ break lab0;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_2, 6);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("ss")) {
+ return false;
+ }
+ break;
+ case 2:
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ v_2 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ c = (this.cursor - 2 | 0);
+ if (this.limit_backward > c || c > this.limit) {
+ break lab2;
+ }
+ this.cursor = c;
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break lab1;
+ }
+ this.cursor = this.limit - v_2;
+ if (! this.slice_from$S("ie")) {
+ return false;
+ }
+ }
+ break;
+ case 3:
+ if (this.cursor <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ golab3:
+ while (true) {
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) {
+ break lab4;
+ }
+ break golab3;
+ }
+ if (this.cursor <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_Step_1b$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var c;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_4, 6);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! (! (this.I_p1 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("ee")) {
+ return false;
+ }
+ break;
+ case 2:
+ v_1 = this.limit - this.cursor;
+ golab0:
+ while (true) {
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) {
+ break lab1;
+ }
+ break golab0;
+ }
+ if (this.cursor <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_3 = this.limit - this.cursor;
+ among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_3, 13);
+ if (among_var === 0) {
+ return false;
+ }
+ this.cursor = this.limit - v_3;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ c = cursor$0 = this.cursor;
+ this.insert$IIS(cursor$0, cursor$0, "e");
+ this.cursor = c;
+ break;
+ case 2:
+ this.ket = cursor$1 = this.cursor;
+ if (cursor$1 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (this.cursor !== this.I_p1) {
+ return false;
+ }
+ v_4 = this.limit - this.cursor;
+ if (! this.r_shortv$()) {
+ return false;
+ }
+ cursor$2 = this.cursor = this.limit - v_4;
+ c = cursor$2;
+ this.insert$IIS(cursor$2, cursor$2, "e");
+ this.cursor = cursor$2;
+ break;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_Step_1c$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ this.ket = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.eq_s_b$IS(1, "y")) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.eq_s_b$IS(1, "Y")) {
+ return false;
+ }
+ }
+ this.bra = this.cursor;
+ if (! this.out_grouping_b$AIII(EnglishStemmer.g_v, 97, 121)) {
+ return false;
+ }
+ v_2 = this.limit - this.cursor;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (this.cursor > this.limit_backward) {
+ break lab2;
+ }
+ return false;
+ }
+ this.cursor = this.limit - v_2;
+ return (! this.slice_from$S("i") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_Step_2$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_5, 24);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("tion")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("ence")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("ance")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("able")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("ent")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("ize")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (! this.slice_from$S("ate")) {
+ return false;
+ }
+ break;
+ case 8:
+ if (! this.slice_from$S("al")) {
+ return false;
+ }
+ break;
+ case 9:
+ if (! this.slice_from$S("ful")) {
+ return false;
+ }
+ break;
+ case 10:
+ if (! this.slice_from$S("ous")) {
+ return false;
+ }
+ break;
+ case 11:
+ if (! this.slice_from$S("ive")) {
+ return false;
+ }
+ break;
+ case 12:
+ if (! this.slice_from$S("ble")) {
+ return false;
+ }
+ break;
+ case 13:
+ if (! this.eq_s_b$IS(1, "l")) {
+ return false;
+ }
+ if (! this.slice_from$S("og")) {
+ return false;
+ }
+ break;
+ case 14:
+ if (! this.slice_from$S("ful")) {
+ return false;
+ }
+ break;
+ case 15:
+ if (! this.slice_from$S("less")) {
+ return false;
+ }
+ break;
+ case 16:
+ if (! this.in_grouping_b$AIII(EnglishStemmer.g_valid_LI, 99, 116)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_Step_3$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_6, 9);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("tion")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("ate")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("al")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("ic")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_Step_4$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_7, 18);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.eq_s_b$IS(1, "s")) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.eq_s_b$IS(1, "t")) {
+ return false;
+ }
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_Step_5$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(EnglishStemmer.a_8, 2);
+ if (among_var === 0) {
+ return false;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ lab0 = true;
+ lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab1;
+ }
+ break lab0;
+ }
+ cursor$0 = this.cursor = this.limit - v_1;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ v_2 = this.limit - this.cursor;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_shortv$()) {
+ break lab2;
+ }
+ return false;
+ }
+ this.cursor = this.limit - v_2;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ if (! this.eq_s_b$IS(1, "l")) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_exception2$ = function () {
+ /** @type {!number} */
+ var cursor$0;
+ this.ket = this.cursor;
+ if (this.find_among_b$ALAmong$I(EnglishStemmer.a_9, 8) === 0) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ return (cursor$0 > this.limit_backward ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_exception1$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var cursor$0;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(EnglishStemmer.a_10, 18);
+ if (among_var === 0) {
+ return false;
+ }
+ this.ket = cursor$0 = this.cursor;
+ if (cursor$0 < this.limit) {
+ return false;
+ }
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("ski")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("sky")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("die")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("lie")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("tie")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (! this.slice_from$S("idl")) {
+ return false;
+ }
+ break;
+ case 7:
+ if (! this.slice_from$S("gentl")) {
+ return false;
+ }
+ break;
+ case 8:
+ if (! this.slice_from$S("ugli")) {
+ return false;
+ }
+ break;
+ case 9:
+ if (! this.slice_from$S("earli")) {
+ return false;
+ }
+ break;
+ case 10:
+ if (! this.slice_from$S("onli")) {
+ return false;
+ }
+ break;
+ case 11:
+ if (! this.slice_from$S("singl")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.r_postlude$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!number} */
+ var cursor$0;
+ if (! this.B_Y_found) {
+ return false;
+ }
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ golab2:
+ while (true) {
+ v_2 = this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "Y")) {
+ break lab3;
+ }
+ this.ket = this.cursor;
+ this.cursor = v_2;
+ break golab2;
+ }
+ cursor$0 = this.cursor = v_2;
+ if (cursor$0 >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ }
+ if (! this.slice_from$S("y")) {
+ return false;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!number} */
+ var v_11;
+ /** @type {!number} */
+ var v_12;
+ /** @type {!number} */
+ var v_13;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!number} */
+ var c;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!boolean} */
+ var lab10;
+ /** @type {!boolean} */
+ var lab11;
+ /** @type {!boolean} */
+ var lab12;
+ /** @type {!boolean} */
+ var lab13;
+ /** @type {!boolean} */
+ var lab14;
+ /** @type {!boolean} */
+ var lab15;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var limit$2;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var limit$3;
+ /** @type {!number} */
+ var cursor$6;
+ /** @type {!number} */
+ var limit$4;
+ /** @type {!number} */
+ var cursor$7;
+ /** @type {!number} */
+ var limit$5;
+ /** @type {!number} */
+ var cursor$8;
+ /** @type {!number} */
+ var limit$6;
+ /** @type {!number} */
+ var cursor$9;
+ /** @type {!number} */
+ var cursor$10;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_exception1$()) {
+ break lab1;
+ }
+ break lab0;
+ }
+ this.cursor = v_1;
+ lab2 = true;
+ lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ v_2 = this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ c = (this.cursor + 3 | 0);
+ if (0 > c || c > this.limit) {
+ break lab3;
+ }
+ this.cursor = c;
+ break lab2;
+ }
+ this.cursor = v_2;
+ break lab0;
+ }
+ cursor$0 = this.cursor = v_1;
+ v_3 = cursor$0;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.r_prelude$()) {
+ break lab4;
+ }
+ }
+ cursor$1 = this.cursor = v_3;
+ v_4 = cursor$1;
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ if (! this.r_mark_regions$()) {
+ break lab5;
+ }
+ }
+ cursor$2 = this.cursor = v_4;
+ this.limit_backward = cursor$2;
+ cursor$3 = this.cursor = limit$0 = this.limit;
+ v_5 = limit$0 - cursor$3;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.r_Step_1a$()) {
+ break lab6;
+ }
+ }
+ this.cursor = this.limit - v_5;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ v_6 = this.limit - this.cursor;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.r_exception2$()) {
+ break lab8;
+ }
+ break lab7;
+ }
+ cursor$4 = this.cursor = (limit$1 = this.limit) - v_6;
+ v_7 = limit$1 - cursor$4;
+ lab9 = true;
+ lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! this.r_Step_1b$()) {
+ break lab9;
+ }
+ }
+ cursor$5 = this.cursor = (limit$2 = this.limit) - v_7;
+ v_8 = limit$2 - cursor$5;
+ lab10 = true;
+ lab10:
+ while (lab10 === true) {
+ lab10 = false;
+ if (! this.r_Step_1c$()) {
+ break lab10;
+ }
+ }
+ cursor$6 = this.cursor = (limit$3 = this.limit) - v_8;
+ v_9 = limit$3 - cursor$6;
+ lab11 = true;
+ lab11:
+ while (lab11 === true) {
+ lab11 = false;
+ if (! this.r_Step_2$()) {
+ break lab11;
+ }
+ }
+ cursor$7 = this.cursor = (limit$4 = this.limit) - v_9;
+ v_10 = limit$4 - cursor$7;
+ lab12 = true;
+ lab12:
+ while (lab12 === true) {
+ lab12 = false;
+ if (! this.r_Step_3$()) {
+ break lab12;
+ }
+ }
+ cursor$8 = this.cursor = (limit$5 = this.limit) - v_10;
+ v_11 = limit$5 - cursor$8;
+ lab13 = true;
+ lab13:
+ while (lab13 === true) {
+ lab13 = false;
+ if (! this.r_Step_4$()) {
+ break lab13;
+ }
+ }
+ cursor$9 = this.cursor = (limit$6 = this.limit) - v_11;
+ v_12 = limit$6 - cursor$9;
+ lab14 = true;
+ lab14:
+ while (lab14 === true) {
+ lab14 = false;
+ if (! this.r_Step_5$()) {
+ break lab14;
+ }
+ }
+ this.cursor = this.limit - v_12;
+ }
+ cursor$10 = this.cursor = this.limit_backward;
+ v_13 = cursor$10;
+ lab15 = true;
+ lab15:
+ while (lab15 === true) {
+ lab15 = false;
+ if (! this.r_postlude$()) {
+ break lab15;
+ }
+ }
+ this.cursor = v_13;
+ }
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+EnglishStemmer.prototype.equals$X = function (o) {
+ return o instanceof EnglishStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+EnglishStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "EnglishStemmer";
+ hash = 0;
+ if ("EnglishStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class DutchStemmer extends BaseStemmer
+ * @constructor
+ */
+function DutchStemmer() {
+}
+
+DutchStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function DutchStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_p2 = 0;
+ this.I_p1 = 0;
+ this.B_e_found = false;
+};
+
+DutchStemmer$.prototype = new DutchStemmer;
+
+/**
+ * @param {DutchStemmer} other
+ */
+DutchStemmer.prototype.copy_from$LDutchStemmer$ = function (other) {
+ this.I_p2 = other.I_p2;
+ this.I_p1 = other.I_p1;
+ this.B_e_found = other.B_e_found;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.r_prelude$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ v_1 = this.cursor;
+replab0:
+ while (true) {
+ v_2 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(DutchStemmer.a_0, 11);
+ if (among_var === 0) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab1;
+ case 1:
+ if (! this.slice_from$S("a")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("e")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ case 4:
+ if (! this.slice_from$S("o")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! this.slice_from$S("u")) {
+ return false;
+ }
+ break;
+ case 6:
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ break;
+ }
+ continue replab0;
+ }
+ this.cursor = v_2;
+ break replab0;
+ }
+ cursor$0 = this.cursor = v_1;
+ v_3 = cursor$0;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ this.bra = this.cursor;
+ if (! this.eq_s$IS(1, "y")) {
+ this.cursor = v_3;
+ break lab2;
+ }
+ this.ket = this.cursor;
+ if (! this.slice_from$S("Y")) {
+ return false;
+ }
+ }
+replab3:
+ while (true) {
+ v_4 = this.cursor;
+ lab4 = true;
+ lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ golab5:
+ while (true) {
+ v_5 = this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) {
+ break lab6;
+ }
+ this.bra = this.cursor;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ v_6 = this.cursor;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.eq_s$IS(1, "i")) {
+ break lab8;
+ }
+ this.ket = this.cursor;
+ if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) {
+ break lab8;
+ }
+ if (! this.slice_from$S("I")) {
+ return false;
+ }
+ break lab7;
+ }
+ this.cursor = v_6;
+ if (! this.eq_s$IS(1, "y")) {
+ break lab6;
+ }
+ this.ket = this.cursor;
+ if (! this.slice_from$S("Y")) {
+ return false;
+ }
+ }
+ this.cursor = v_5;
+ break golab5;
+ }
+ cursor$1 = this.cursor = v_5;
+ if (cursor$1 >= this.limit) {
+ break lab4;
+ }
+ this.cursor++;
+ }
+ continue replab3;
+ }
+ this.cursor = v_4;
+ break replab3;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!number} */
+ var limit$0;
+ this.I_p1 = limit$0 = this.limit;
+ this.I_p2 = limit$0;
+golab0:
+ while (true) {
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) {
+ break lab1;
+ }
+ break golab0;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+golab2:
+ while (true) {
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.out_grouping$AIII(DutchStemmer.g_v, 97, 232)) {
+ break lab3;
+ }
+ break golab2;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ lab4 = true;
+lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! (this.I_p1 < 3)) {
+ break lab4;
+ }
+ this.I_p1 = 3;
+ }
+golab5:
+ while (true) {
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ if (! this.in_grouping$AIII(DutchStemmer.g_v, 97, 232)) {
+ break lab6;
+ }
+ break golab5;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+golab7:
+ while (true) {
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.out_grouping$AIII(DutchStemmer.g_v, 97, 232)) {
+ break lab8;
+ }
+ break golab7;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ this.I_p2 = this.cursor;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.r_postlude$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!boolean} */
+ var lab1;
+replab0:
+ while (true) {
+ v_1 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ this.bra = this.cursor;
+ among_var = this.find_among$ALAmong$I(DutchStemmer.a_1, 3);
+ if (among_var === 0) {
+ break lab1;
+ }
+ this.ket = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab1;
+ case 1:
+ if (! this.slice_from$S("y")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.slice_from$S("i")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (this.cursor >= this.limit) {
+ break lab1;
+ }
+ this.cursor++;
+ break;
+ }
+ continue replab0;
+ }
+ this.cursor = v_1;
+ break replab0;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.r_R1$ = function () {
+ return (! (this.I_p1 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.r_R2$ = function () {
+ return (! (this.I_p2 <= this.cursor) ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.r_undouble$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var cursor$0;
+ v_1 = this.limit - this.cursor;
+ if (this.find_among_b$ALAmong$I(DutchStemmer.a_2, 3) === 0) {
+ return false;
+ }
+ cursor$0 = this.cursor = this.limit - v_1;
+ this.ket = cursor$0;
+ if (cursor$0 <= this.limit_backward) {
+ return false;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.r_e_ending$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var cursor$0;
+ this.B_e_found = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(1, "e")) {
+ return false;
+ }
+ this.bra = cursor$0 = this.cursor;
+ if (! (! (this.I_p1 <= cursor$0) ? false : true)) {
+ return false;
+ }
+ v_1 = this.limit - this.cursor;
+ if (! this.out_grouping_b$AIII(DutchStemmer.g_v, 97, 232)) {
+ return false;
+ }
+ this.cursor = this.limit - v_1;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.B_e_found = true;
+ return (! this.r_undouble$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.r_en_ending$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ if (! (! (this.I_p1 <= this.cursor) ? false : true)) {
+ return false;
+ }
+ v_1 = this.limit - this.cursor;
+ if (! this.out_grouping_b$AIII(DutchStemmer.g_v, 97, 232)) {
+ return false;
+ }
+ cursor$0 = this.cursor = (limit$0 = this.limit) - v_1;
+ v_2 = limit$0 - cursor$0;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.eq_s_b$IS(3, "gem")) {
+ break lab0;
+ }
+ return false;
+ }
+ this.cursor = this.limit - v_2;
+ return (! this.slice_from$S("") ? false : ! this.r_undouble$() ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.r_standard_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!number} */
+ var v_5;
+ /** @type {!number} */
+ var v_6;
+ /** @type {!number} */
+ var v_7;
+ /** @type {!number} */
+ var v_8;
+ /** @type {!number} */
+ var v_9;
+ /** @type {!number} */
+ var v_10;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!boolean} */
+ var lab5;
+ /** @type {!boolean} */
+ var lab6;
+ /** @type {!boolean} */
+ var lab7;
+ /** @type {!boolean} */
+ var lab8;
+ /** @type {!boolean} */
+ var lab9;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit$2;
+ /** @type {!number} */
+ var cursor$4;
+ /** @type {!number} */
+ var cursor$5;
+ /** @type {!number} */
+ var limit$3;
+ /** @type {!number} */
+ var cursor$6;
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(DutchStemmer.a_3, 5);
+ if (among_var === 0) {
+ break lab0;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab0;
+ case 1:
+ if (! (! (this.I_p1 <= this.cursor) ? false : true)) {
+ break lab0;
+ }
+ if (! this.slice_from$S("heid")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.r_en_ending$()) {
+ break lab0;
+ }
+ break;
+ case 3:
+ if (! (! (this.I_p1 <= this.cursor) ? false : true)) {
+ break lab0;
+ }
+ if (! this.out_grouping_b$AIII(DutchStemmer.g_v_j, 97, 232)) {
+ break lab0;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ cursor$0 = this.cursor = (limit$0 = this.limit) - v_1;
+ v_2 = limit$0 - cursor$0;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_e_ending$()) {
+ break lab1;
+ }
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_2;
+ v_3 = limit$1 - cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(4, "heid")) {
+ break lab2;
+ }
+ this.bra = cursor$1 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$1) ? false : true)) {
+ break lab2;
+ }
+ v_4 = this.limit - this.cursor;
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.eq_s_b$IS(1, "c")) {
+ break lab3;
+ }
+ break lab2;
+ }
+ this.cursor = this.limit - v_4;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "en")) {
+ break lab2;
+ }
+ this.bra = this.cursor;
+ if (! this.r_en_ending$()) {
+ break lab2;
+ }
+ }
+ cursor$4 = this.cursor = (limit$2 = this.limit) - v_3;
+ v_5 = limit$2 - cursor$4;
+ lab4 = true;
+lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ this.ket = this.cursor;
+ among_var = this.find_among_b$ALAmong$I(DutchStemmer.a_4, 6);
+ if (among_var === 0) {
+ break lab4;
+ }
+ this.bra = this.cursor;
+ switch (among_var) {
+ case 0:
+ break lab4;
+ case 1:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab4;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ lab5 = true;
+ lab5:
+ while (lab5 === true) {
+ lab5 = false;
+ v_6 = this.limit - this.cursor;
+ lab6 = true;
+ lab6:
+ while (lab6 === true) {
+ lab6 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "ig")) {
+ break lab6;
+ }
+ this.bra = cursor$3 = this.cursor;
+ if (! (! (this.I_p2 <= cursor$3) ? false : true)) {
+ break lab6;
+ }
+ v_7 = this.limit - this.cursor;
+ lab7 = true;
+ lab7:
+ while (lab7 === true) {
+ lab7 = false;
+ if (! this.eq_s_b$IS(1, "e")) {
+ break lab7;
+ }
+ break lab6;
+ }
+ this.cursor = this.limit - v_7;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break lab5;
+ }
+ this.cursor = this.limit - v_6;
+ if (! this.r_undouble$()) {
+ break lab4;
+ }
+ }
+ break;
+ case 2:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab4;
+ }
+ v_8 = this.limit - this.cursor;
+ lab8 = true;
+ lab8:
+ while (lab8 === true) {
+ lab8 = false;
+ if (! this.eq_s_b$IS(1, "e")) {
+ break lab8;
+ }
+ break lab4;
+ }
+ this.cursor = this.limit - v_8;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 3:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab4;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ if (! this.r_e_ending$()) {
+ break lab4;
+ }
+ break;
+ case 4:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab4;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 5:
+ if (! (! (this.I_p2 <= this.cursor) ? false : true)) {
+ break lab4;
+ }
+ if (! this.B_e_found) {
+ break lab4;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ }
+ cursor$6 = this.cursor = (limit$3 = this.limit) - v_5;
+ v_9 = limit$3 - cursor$6;
+ lab9 = true;
+lab9:
+ while (lab9 === true) {
+ lab9 = false;
+ if (! this.out_grouping_b$AIII(DutchStemmer.g_v_I, 73, 232)) {
+ break lab9;
+ }
+ v_10 = this.limit - this.cursor;
+ if (this.find_among_b$ALAmong$I(DutchStemmer.a_5, 4) === 0) {
+ break lab9;
+ }
+ if (! this.out_grouping_b$AIII(DutchStemmer.g_v, 97, 232)) {
+ break lab9;
+ }
+ cursor$5 = this.cursor = this.limit - v_10;
+ this.ket = cursor$5;
+ if (cursor$5 <= this.limit_backward) {
+ break lab9;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ this.cursor = this.limit - v_9;
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_prelude$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ v_2 = cursor$0;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_mark_regions$()) {
+ break lab1;
+ }
+ }
+ cursor$1 = this.cursor = v_2;
+ this.limit_backward = cursor$1;
+ this.cursor = this.limit;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_standard_suffix$()) {
+ break lab2;
+ }
+ }
+ cursor$2 = this.cursor = this.limit_backward;
+ v_4 = cursor$2;
+ lab3 = true;
+lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.r_postlude$()) {
+ break lab3;
+ }
+ }
+ this.cursor = v_4;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+DutchStemmer.prototype.equals$X = function (o) {
+ return o instanceof DutchStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+DutchStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "DutchStemmer";
+ hash = 0;
+ if ("DutchStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class DanishStemmer extends BaseStemmer
+ * @constructor
+ */
+function DanishStemmer() {
+}
+
+DanishStemmer.prototype = new BaseStemmer;
+/**
+ * @constructor
+ */
+function DanishStemmer$() {
+ BaseStemmer$.call(this);
+ this.I_x = 0;
+ this.I_p1 = 0;
+ this.S_ch = "";
+};
+
+DanishStemmer$.prototype = new DanishStemmer;
+
+/**
+ * @param {DanishStemmer} other
+ */
+DanishStemmer.prototype.copy_from$LDanishStemmer$ = function (other) {
+ this.I_x = other.I_x;
+ this.I_p1 = other.I_p1;
+ this.S_ch = other.S_ch;
+ BaseStemmer.prototype.copy_from$LBaseStemmer$.call(this, other);
+};
+
+/**
+ * @return {!boolean}
+ */
+DanishStemmer.prototype.r_mark_regions$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var c;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ this.I_p1 = limit$0 = this.limit;
+ v_1 = cursor$0 = this.cursor;
+ c = (cursor$0 + 3 | 0);
+ if (0 > c || c > limit$0) {
+ return false;
+ }
+ cursor$2 = this.cursor = c;
+ this.I_x = cursor$2;
+ this.cursor = v_1;
+golab0:
+ while (true) {
+ v_2 = this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.in_grouping$AIII(DanishStemmer.g_v, 97, 248)) {
+ break lab1;
+ }
+ this.cursor = v_2;
+ break golab0;
+ }
+ cursor$1 = this.cursor = v_2;
+ if (cursor$1 >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+golab2:
+ while (true) {
+ lab3 = true;
+ lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.out_grouping$AIII(DanishStemmer.g_v, 97, 248)) {
+ break lab3;
+ }
+ break golab2;
+ }
+ if (this.cursor >= this.limit) {
+ return false;
+ }
+ this.cursor++;
+ }
+ this.I_p1 = this.cursor;
+ lab4 = true;
+lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! (this.I_p1 < this.I_x)) {
+ break lab4;
+ }
+ this.I_p1 = this.I_x;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+DanishStemmer.prototype.r_main_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(DanishStemmer.a_0, 32);
+ if (among_var === 0) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_2;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ case 2:
+ if (! this.in_grouping_b$AIII(DanishStemmer.g_s_ending, 97, 229)) {
+ return false;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+DanishStemmer.prototype.r_consonant_pair$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var cursor$3;
+ /** @type {!number} */
+ var limit_backward$0;
+ v_1 = (limit$0 = this.limit) - (cursor$0 = this.cursor);
+ v_2 = limit$0 - cursor$0;
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_3 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_2;
+ this.ket = cursor$2;
+ if (this.find_among_b$ALAmong$I(DanishStemmer.a_1, 4) === 0) {
+ this.limit_backward = v_3;
+ return false;
+ }
+ this.bra = this.cursor;
+ limit_backward$0 = this.limit_backward = v_3;
+ cursor$3 = this.cursor = this.limit - v_1;
+ if (cursor$3 <= limit_backward$0) {
+ return false;
+ }
+ this.cursor--;
+ this.bra = this.cursor;
+ return (! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+DanishStemmer.prototype.r_other_suffix$ = function () {
+ /** @type {!number} */
+ var among_var;
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ v_1 = this.limit - this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ this.ket = this.cursor;
+ if (! this.eq_s_b$IS(2, "st")) {
+ break lab0;
+ }
+ this.bra = this.cursor;
+ if (! this.eq_s_b$IS(2, "ig")) {
+ break lab0;
+ }
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ }
+ cursor$0 = this.cursor = (limit$0 = this.limit) - v_1;
+ v_2 = limit$0 - cursor$0;
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_3 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_2;
+ this.ket = cursor$2;
+ among_var = this.find_among_b$ALAmong$I(DanishStemmer.a_2, 5);
+ if (among_var === 0) {
+ this.limit_backward = v_3;
+ return false;
+ }
+ this.bra = this.cursor;
+ this.limit_backward = v_3;
+ switch (among_var) {
+ case 0:
+ return false;
+ case 1:
+ if (! this.slice_from$S("")) {
+ return false;
+ }
+ v_4 = this.limit - this.cursor;
+ lab1 = true;
+ lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_consonant_pair$()) {
+ break lab1;
+ }
+ }
+ this.cursor = this.limit - v_4;
+ break;
+ case 2:
+ if (! this.slice_from$S("l\u00F8s")) {
+ return false;
+ }
+ break;
+ }
+ return true;
+};
+
+/**
+ * @return {!boolean}
+ */
+DanishStemmer.prototype.r_undouble$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!string} */
+ var S_ch$0;
+ v_1 = this.limit - (cursor$0 = this.cursor);
+ if (cursor$0 < this.I_p1) {
+ return false;
+ }
+ cursor$1 = this.cursor = this.I_p1;
+ v_2 = this.limit_backward;
+ this.limit_backward = cursor$1;
+ cursor$2 = this.cursor = this.limit - v_1;
+ this.ket = cursor$2;
+ if (! this.out_grouping_b$AIII(DanishStemmer.g_v, 97, 248)) {
+ this.limit_backward = v_2;
+ return false;
+ }
+ this.bra = this.cursor;
+ S_ch$0 = this.S_ch = this.slice_to$S(this.S_ch);
+ if (S_ch$0 === '') {
+ return false;
+ }
+ this.limit_backward = v_2;
+ return (! this.eq_v_b$S(this.S_ch) ? false : ! this.slice_from$S("") ? false : true);
+};
+
+/**
+ * @return {!boolean}
+ */
+DanishStemmer.prototype.stem$ = function () {
+ /** @type {!number} */
+ var v_1;
+ /** @type {!number} */
+ var v_2;
+ /** @type {!number} */
+ var v_3;
+ /** @type {!number} */
+ var v_4;
+ /** @type {!boolean} */
+ var lab0;
+ /** @type {!boolean} */
+ var lab1;
+ /** @type {!boolean} */
+ var lab2;
+ /** @type {!boolean} */
+ var lab3;
+ /** @type {!boolean} */
+ var lab4;
+ /** @type {!number} */
+ var cursor$0;
+ /** @type {!number} */
+ var limit$0;
+ /** @type {!number} */
+ var cursor$1;
+ /** @type {!number} */
+ var limit$1;
+ /** @type {!number} */
+ var cursor$2;
+ /** @type {!number} */
+ var limit$2;
+ /** @type {!number} */
+ var cursor$3;
+ v_1 = this.cursor;
+ lab0 = true;
+lab0:
+ while (lab0 === true) {
+ lab0 = false;
+ if (! this.r_mark_regions$()) {
+ break lab0;
+ }
+ }
+ cursor$0 = this.cursor = v_1;
+ this.limit_backward = cursor$0;
+ cursor$1 = this.cursor = limit$0 = this.limit;
+ v_2 = limit$0 - cursor$1;
+ lab1 = true;
+lab1:
+ while (lab1 === true) {
+ lab1 = false;
+ if (! this.r_main_suffix$()) {
+ break lab1;
+ }
+ }
+ cursor$2 = this.cursor = (limit$1 = this.limit) - v_2;
+ v_3 = limit$1 - cursor$2;
+ lab2 = true;
+lab2:
+ while (lab2 === true) {
+ lab2 = false;
+ if (! this.r_consonant_pair$()) {
+ break lab2;
+ }
+ }
+ cursor$3 = this.cursor = (limit$2 = this.limit) - v_3;
+ v_4 = limit$2 - cursor$3;
+ lab3 = true;
+lab3:
+ while (lab3 === true) {
+ lab3 = false;
+ if (! this.r_other_suffix$()) {
+ break lab3;
+ }
+ }
+ this.cursor = this.limit - v_4;
+ lab4 = true;
+lab4:
+ while (lab4 === true) {
+ lab4 = false;
+ if (! this.r_undouble$()) {
+ break lab4;
+ }
+ }
+ this.cursor = this.limit_backward;
+ return true;
+};
+
+/**
+ * @param {*} o
+ * @return {!boolean}
+ */
+DanishStemmer.prototype.equals$X = function (o) {
+ return o instanceof DanishStemmer;
+};
+
+/**
+ * @return {!number}
+ */
+DanishStemmer.prototype.hashCode$ = function () {
+ /** @type {!string} */
+ var classname;
+ /** @type {!number} */
+ var hash;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var char;
+ classname = "DanishStemmer";
+ hash = 0;
+ if ("DanishStemmer".length === 0) {
+ return (hash | 0);
+ }
+ for (i = 0; i < classname.length; i++) {
+ char = classname.charCodeAt(i);
+ hash = (hash << 5) - hash + char;
+ hash = hash & hash;
+ }
+ return (hash | 0);
+};
+
+/**
+ * class Among extends Object
+ * @constructor
+ */
+function Among() {
+}
+
+/**
+ * @constructor
+ * @param {!string} s
+ * @param {!number} substring_i
+ * @param {!number} result
+ */
+function Among$SII(s, substring_i, result) {
+ this.s_size = s.length;
+ this.s = s;
+ this.substring_i = substring_i;
+ this.result = result;
+ this.method = null;
+ this.instance = null;
+};
+
+Among$SII.prototype = new Among;
+
+/**
+ * @constructor
+ * @param {!string} s
+ * @param {!number} substring_i
+ * @param {!number} result
+ * @param {*} method
+ * @param {BaseStemmer} instance
+ */
+function Among$SIIF$LBaseStemmer$B$LBaseStemmer$(s, substring_i, result, method, instance) {
+ this.s_size = s.length;
+ this.s = s;
+ this.substring_i = substring_i;
+ this.result = result;
+ this.method = method;
+ this.instance = instance;
+};
+
+Among$SIIF$LBaseStemmer$B$LBaseStemmer$.prototype = new Among;
+
+/**
+ * class BitVector extends Object
+ * @constructor
+ */
+function BitVector() {
+}
+
+/**
+ * @constructor
+ */
+function BitVector$() {
+ /** @type {Array.<undefined|!number>} */
+ var _v$0;
+ /** @type {Array.<undefined|!number>} */
+ var _r$0;
+ _r$0 = this._r = [ ];
+ _v$0 = this._v = [ ];
+ _v$0.length = 0;
+ _r$0.length = 0;
+ this._size = 0;
+ this._size1 = 0;
+};
+
+BitVector$.prototype = new BitVector;
+
+/**
+ */
+BitVector.prototype.build$ = function () {
+ /** @type {!number} */
+ var i;
+ this._size1 = 0;
+ for (i = 0; i < this._v.length; i++) {
+ if (i % 8 === 0) {
+ this._r.push(true ? this._size1 : this._size - this._size1);
+ }
+ this._size1 += this._rank32$IIB(this._v[i], 32, true);
+ }
+};
+
+/**
+ */
+BitVector.prototype.clear$ = function () {
+ this._v.length = 0;
+ this._r.length = 0;
+ this._size = 0;
+ this._size1 = 0;
+};
+
+/**
+ * @return {!number}
+ */
+BitVector.prototype.size$ = function () {
+ return this._size;
+};
+
+/**
+ * @param {!boolean} b
+ * @return {!number}
+ */
+BitVector.prototype.size$B = function (b) {
+ return (b ? this._size1 : this._size - this._size1);
+};
+
+/**
+ * @param {!number} value
+ */
+BitVector.prototype.set$I = function (value) {
+ this.set$IB(value, true);
+};
+
+/**
+ * @param {!number} value
+ * @param {!boolean} flag
+ */
+BitVector.prototype.set$IB = function (value, flag) {
+ /** @type {!number} */
+ var q;
+ /** @type {!number} */
+ var r;
+ /** @type {!number} */
+ var m;
+ if (value >= this._size) {
+ this._size = (value + 1 | 0);
+ }
+ q = (value / 32 | 0);
+ r = (value % 32 | 0);
+ while (q >= this._v.length) {
+ this._v.push(0);
+ }
+ m = 0x1 << r;
+ if (flag) {
+ this._v[q] |= m;
+ } else {
+ this._v[q] &= ~ m;
+ }
+};
+
+/**
+ * @param {!number} value
+ * @return {!boolean}
+ */
+BitVector.prototype.get$I = function (value) {
+ /** @type {!number} */
+ var q;
+ /** @type {!number} */
+ var r;
+ /** @type {!number} */
+ var m;
+ if (value >= this._size) {
+ throw new Error("BitVector.get() : range error");
+ }
+ q = (value / 32 | 0);
+ r = (value % 32 | 0);
+ m = 0x1 << r;
+ return !! (this._v[q] & m);
+};
+
+/**
+ * @param {!number} i
+ * @return {!number}
+ */
+BitVector.prototype.rank$I = function (i) {
+ return this.rank$IB(i, true);
+};
+
+/**
+ * @param {!number} i
+ * @param {!boolean} b
+ * @return {!number}
+ */
+BitVector.prototype.rank$IB = function (i, b) {
+ /** @type {!number} */
+ var q_large;
+ /** @type {!number} */
+ var q_small;
+ /** @type {!number} */
+ var r;
+ /** @type {!number} */
+ var rank;
+ /** @type {!number} */
+ var begin;
+ /** @type {!number} */
+ var j;
+ if (i > this._size) {
+ throw new Error("BitVector.rank() : range error");
+ }
+ if (i === 0) {
+ return 0;
+ }
+ i--;
+ q_large = (Math.floor(i / 256) | 0);
+ q_small = (Math.floor(i / 32) | 0);
+ r = (Math.floor(i % 32) | 0);
+ rank = (this._r[q_large] | 0);
+ if (! b) {
+ rank = q_large * 256 - rank;
+ }
+ begin = q_large * 8;
+ for (j = begin; j < q_small; j++) {
+ rank += this._rank32$IIB(this._v[j], 32, b);
+ }
+ rank += this._rank32$IIB(this._v[q_small], r + 1, b);
+ return rank;
+};
+
+/**
+ * @param {!number} i
+ * @return {!number}
+ */
+BitVector.prototype.select$I = function (i) {
+ return this.select$IB(i, true);
+};
+
+/**
+ * @param {!number} i
+ * @param {!boolean} b
+ * @return {!number}
+ */
+BitVector.prototype.select$IB = function (i, b) {
+ /** @type {!number} */
+ var left;
+ /** @type {!number} */
+ var right;
+ /** @type {!number} */
+ var pivot;
+ /** @type {undefined|!number} */
+ var rank;
+ /** @type {!number} */
+ var j;
+ if (i >= (b ? this._size1 : this._size - this._size1)) {
+ throw new Error("BitVector.select() : range error");
+ }
+ left = 0;
+ right = this._r.length;
+ while (left < right) {
+ pivot = Math.floor((left + right) / 2);
+ rank = this._r[pivot];
+ if (! b) {
+ rank = pivot * 256 - rank;
+ }
+ if (i < rank) {
+ right = pivot;
+ } else {
+ left = pivot + 1;
+ }
+ }
+ right--;
+ if (b) {
+ i -= (this._r[right] | 0);
+ } else {
+ i -= (right * 256 - this._r[right] | 0);
+ }
+ j = right * 8;
+ while (1) {
+ rank = this._rank32$IIB(this._v[j], 32, b);
+ if (i < rank) {
+ break;
+ }
+ j++;
+ i -= (rank | 0);
+ }
+ return (j * 32 + this._select32$IIB(this._v[j], i, b) | 0);
+};
+
+/**
+ * @param {!number} x
+ * @param {!number} i
+ * @param {!boolean} b
+ * @return {!number}
+ */
+BitVector.prototype._rank32$IIB = function (x, i, b) {
+ if (! b) {
+ x = ~ x;
+ }
+ x <<= 32 - i;
+ x = ((x & 0xaaaaaaaa) >>> 1) + (x & 0x55555555);
+ x = ((x & 0xcccccccc) >>> 2) + (x & 0x33333333);
+ x = ((x & 0xf0f0f0f0) >>> 4) + (x & 0x0f0f0f0f);
+ x = ((x & 0xff00ff00) >>> 8) + (x & 0x00ff00ff);
+ x = ((x & 0xffff0000) >>> 16) + (x & 0x0000ffff);
+ return x;
+};
+
+/**
+ * @param {!number} x
+ * @param {!number} i
+ * @param {!boolean} b
+ * @return {!number}
+ */
+BitVector.prototype._select32$IIB = function (x, i, b) {
+ /** @type {!number} */
+ var x1;
+ /** @type {!number} */
+ var x2;
+ /** @type {!number} */
+ var x3;
+ /** @type {!number} */
+ var x4;
+ /** @type {!number} */
+ var x5;
+ /** @type {!number} */
+ var pos;
+ /** @type {!number} */
+ var v5;
+ /** @type {!number} */
+ var v4;
+ /** @type {!number} */
+ var v3;
+ /** @type {!number} */
+ var v2;
+ /** @type {!number} */
+ var v1;
+ /** @type {!number} */
+ var v0;
+ if (! b) {
+ x = ~ x;
+ }
+ x1 = ((x & 0xaaaaaaaa) >>> 1) + (x & 0x55555555);
+ x2 = ((x1 & 0xcccccccc) >>> 2) + (x1 & 0x33333333);
+ x3 = ((x2 & 0xf0f0f0f0) >>> 4) + (x2 & 0x0f0f0f0f);
+ x4 = ((x3 & 0xff00ff00) >>> 8) + (x3 & 0x00ff00ff);
+ x5 = ((x4 & 0xffff0000) >>> 16) + (x4 & 0x0000ffff);
+ i++;
+ pos = 0;
+ v5 = x5 & 0xffffffff;
+ if (i > v5) {
+ i -= (v5 | 0);
+ pos += 32;
+ }
+ v4 = x4 >>> pos & 0x0000ffff;
+ if (i > v4) {
+ i -= (v4 | 0);
+ pos += 16;
+ }
+ v3 = x3 >>> pos & 0x000000ff;
+ if (i > v3) {
+ i -= (v3 | 0);
+ pos += 8;
+ }
+ v2 = x2 >>> pos & 0x0000000f;
+ if (i > v2) {
+ i -= (v2 | 0);
+ pos += 4;
+ }
+ v1 = x1 >>> pos & 0x00000003;
+ if (i > v1) {
+ i -= (v1 | 0);
+ pos += 2;
+ }
+ v0 = x >>> pos & 0x00000001;
+ if (i > v0) {
+ i -= (v0 | 0);
+ pos += 1;
+ }
+ return (pos | 0);
+};
+
+/**
+ * @return {!string}
+ */
+BitVector.prototype.dump$ = function () {
+ /** @type {Array.<undefined|!string>} */
+ var contents;
+ contents = [ ];
+ contents.push(Binary$dump32bitNumber$N(this._size));
+ contents.push(Binary$dump32bitNumberList$AN(this._v));
+ return contents.join('');
+};
+
+/**
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+BitVector.prototype.dump$LCompressionReport$ = function (report) {
+ /** @type {Array.<undefined|!string>} */
+ var contents;
+ contents = [ ];
+ contents.push(Binary$dump32bitNumber$N(this._size));
+ CompressionReport$add$LCompressionReport$II(report, 2, 2);
+ contents.push(Binary$dump32bitNumberList$ANLCompressionReport$(this._v, report));
+ return contents.join('');
+};
+
+/**
+ * @param {!string} data
+ * @return {!number}
+ */
+BitVector.prototype.load$S = function (data) {
+ return this.load$SI(data, 0);
+};
+
+/**
+ * @param {!string} data
+ * @param {!number} offset
+ * @return {!number}
+ */
+BitVector.prototype.load$SI = function (data, offset) {
+ /** @type {LoadedNumberListResult} */
+ var result;
+ /** @type {!number} */
+ var result$0;
+ this._v.length = 0;
+ this._r.length = 0;
+ this._size = 0;
+ this._size1 = 0;
+ result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1);
+ this._size = (result$0 | 0);
+ result = Binary$load32bitNumberList$SI(data, offset + 2);
+ this._v = result.result;
+ this.build$();
+ return result.offset;
+};
+
+/**
+ * class WaveletMatrix extends Object
+ * @constructor
+ */
+function WaveletMatrix() {
+}
+
+/**
+ * @constructor
+ */
+function WaveletMatrix$() {
+ /** @type {Array.<undefined|BitVector>} */
+ var _bv$0;
+ /** @type {Array.<undefined|!number>} */
+ var _seps$0;
+ this._range = ({ });
+ _bv$0 = this._bv = [ ];
+ _seps$0 = this._seps = [ ];
+ this._bitsize = 16;
+ _bv$0.length = 0;
+ _seps$0.length = 0;
+ this._size = 0;
+};
+
+WaveletMatrix$.prototype = new WaveletMatrix;
+
+/**
+ * @return {!number}
+ */
+WaveletMatrix.prototype.bitsize$ = function () {
+ return this._bitsize;
+};
+
+/**
+ * @param {!number} charCode
+ */
+WaveletMatrix.prototype.setMaxCharCode$I = function (charCode) {
+ this._bitsize = (Math.ceil(Math.log(charCode) / 0.6931471805599453) | 0);
+};
+
+/**
+ */
+WaveletMatrix.prototype.clear$ = function () {
+ this._bv.length = 0;
+ this._seps.length = 0;
+ this._size = 0;
+};
+
+/**
+ * @param {!string} v
+ */
+WaveletMatrix.prototype.build$S = function (v) {
+ /** @type {!number} */
+ var size;
+ /** @type {!number} */
+ var bitsize;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var depth;
+ /** @type {Object.<string, undefined|!number>} */
+ var range_tmp;
+ /** @type {!number} */
+ var code;
+ /** @type {!boolean} */
+ var bit;
+ /** @type {!number} */
+ var key;
+ /** @type {Object.<string, undefined|!number>} */
+ var range_rev;
+ /** @type {!string} */
+ var range_key;
+ /** @type {!number} */
+ var value;
+ /** @type {!number} */
+ var pos0;
+ /** @type {undefined|!number} */
+ var pos1;
+ /** @type {!string} */
+ var range_rev_key;
+ /** @type {!number} */
+ var begin;
+ /** @type {undefined|!number} */
+ var end;
+ /** @type {!number} */
+ var num0;
+ /** @type {!number} */
+ var num1;
+ this._bv.length = 0;
+ this._seps.length = 0;
+ this._size = 0;
+ size = v.length;
+ bitsize = this._bitsize;
+ for (i = 0; i < bitsize; i++) {
+ this._bv.push(new BitVector$());
+ this._seps.push(0);
+ }
+ this._size = (size | 0);
+ for (i = 0; i < size; i++) {
+ this._bv[0].set$IB(i, this._uint2bit$II(v.charCodeAt(i), 0));
+ }
+ this._bv[0].build$();
+ this._seps[0] = this._bv[0].size$B(false);
+ this._range["0"] = 0;
+ this._range["1"] = this._seps[0];
+ depth = 1;
+ while (depth < bitsize) {
+ range_tmp = WaveletMatrix$_shallow_copy$HI(this._range);
+ for (i = 0; i < size; i++) {
+ code = v.charCodeAt(i);
+ bit = this._uint2bit$II(code, depth);
+ key = code >>> bitsize - depth;
+ this._bv[depth].set$IB(range_tmp[key + ""], bit);
+ range_tmp[key + ""]++;
+ }
+ this._bv[depth].build$();
+ this._seps[depth] = this._bv[depth].size$B(false);
+ range_rev = ({ });
+ for (range_key in this._range) {
+ value = this._range[range_key];
+ if (value != range_tmp[range_key]) {
+ range_rev[value + ""] = range_key | 0;
+ }
+ }
+ this._range = ({ });
+ pos0 = 0;
+ pos1 = this._seps[depth];
+ for (range_rev_key in range_rev) {
+ begin = range_rev_key | 0;
+ value = range_rev[range_rev_key];
+ end = range_tmp[value + ""];
+ num0 = this._bv[depth].rank$IB(end, false) - this._bv[depth].rank$IB(begin, false);
+ num1 = end - begin - num0;
+ if (num0 > 0) {
+ this._range[(value << 1) + ""] = (pos0 | 0);
+ pos0 += num0;
+ }
+ if (num1 > 0) {
+ this._range[(value << 1) + 1 + ""] = pos1;
+ pos1 += (num1 | 0);
+ }
+ }
+ depth++;
+ }
+};
+
+/**
+ * @return {!number}
+ */
+WaveletMatrix.prototype.size$ = function () {
+ return this._size;
+};
+
+/**
+ * @param {!number} c
+ * @return {!number}
+ */
+WaveletMatrix.prototype.size$I = function (c) {
+ return this.rank$II(this._size, c);
+};
+
+/**
+ * @param {!number} i
+ * @return {!number}
+ */
+WaveletMatrix.prototype.get$I = function (i) {
+ /** @type {!number} */
+ var value;
+ /** @type {!number} */
+ var depth;
+ /** @type {!boolean} */
+ var bit;
+ if (i >= this._size) {
+ throw new Error("WaveletMatrix.get() : range error");
+ }
+ value = 0;
+ depth = 0;
+ while (depth < this._bitsize) {
+ bit = this._bv[depth].get$I(i);
+ i = this._bv[depth].rank$IB(i, bit);
+ value <<= 1;
+ if (bit) {
+ i += this._seps[depth];
+ value += 1;
+ }
+ depth++;
+ }
+ return (value | 0);
+};
+
+/**
+ * @param {!number} i
+ * @param {!number} c
+ * @return {!number}
+ */
+WaveletMatrix.prototype.rank$II = function (i, c) {
+ /** @type {undefined|!number} */
+ var begin;
+ /** @type {!number} */
+ var end;
+ /** @type {!number} */
+ var depth;
+ /** @type {!boolean} */
+ var bit;
+ if (i > this._size) {
+ throw new Error("WaveletMatrix.rank(): range error");
+ }
+ if (i === 0) {
+ return 0;
+ }
+ begin = this._range[c + ""];
+ if (begin == null) {
+ return 0;
+ }
+ end = i;
+ depth = 0;
+ while (depth < this._bitsize) {
+ bit = this._uint2bit$II(c, depth);
+ end = this._bv[depth].rank$IB(end, bit);
+ if (bit) {
+ end += this._seps[depth];
+ }
+ depth++;
+ }
+ return (end - begin | 0);
+};
+
+/**
+ * @param {!number} i
+ * @param {!number} c
+ * @return {!number}
+ */
+WaveletMatrix.prototype.rank_less_than$II = function (i, c) {
+ /** @type {!number} */
+ var begin;
+ /** @type {!number} */
+ var end;
+ /** @type {!number} */
+ var depth;
+ /** @type {!number} */
+ var rlt;
+ /** @type {!number} */
+ var rank0_begin;
+ /** @type {!number} */
+ var rank0_end;
+ /** @type {Array.<undefined|!number>} */
+ var _seps$0;
+ if (i > this._size) {
+ throw new Error("WaveletMatrix.rank_less_than(): range error");
+ }
+ if (i === 0) {
+ return 0;
+ }
+ begin = 0;
+ end = i;
+ depth = 0;
+ rlt = 0;
+ while (depth < this._bitsize) {
+ rank0_begin = this._bv[depth].rank$IB(begin, false);
+ rank0_end = this._bv[depth].rank$IB(end, false);
+ if (this._uint2bit$II(c, depth)) {
+ rlt += rank0_end - rank0_begin;
+ begin += (_seps$0 = this._seps)[depth] - rank0_begin;
+ end += _seps$0[depth] - rank0_end;
+ } else {
+ begin = rank0_begin;
+ end = rank0_end;
+ }
+ depth++;
+ }
+ return (rlt | 0);
+};
+
+/**
+ * @return {!string}
+ */
+WaveletMatrix.prototype.dump$ = function () {
+ /** @type {Array.<undefined|!string>} */
+ var contents;
+ /** @type {!number} */
+ var i;
+ /** @type {Array.<undefined|!string>} */
+ var range_contents;
+ /** @type {!number} */
+ var counter;
+ /** @type {!string} */
+ var key;
+ contents = [ Binary$dump16bitNumber$I(this._bitsize), Binary$dump32bitNumber$N(this._size) ];
+ for (i = 0; i < this._bitsize; i++) {
+ contents.push(this._bv[i].dump$());
+ }
+ for (i = 0; i < this._bitsize; i++) {
+ contents.push(Binary$dump32bitNumber$N(this._seps[i]));
+ }
+ range_contents = [ ];
+ counter = 0;
+ for (key in this._range) {
+ range_contents.push(Binary$dump32bitNumber$N(key | 0));
+ range_contents.push(Binary$dump32bitNumber$N(this._range[key]));
+ counter++;
+ }
+ contents.push(Binary$dump32bitNumber$N(counter));
+ return contents.join('') + range_contents.join('');
+};
+
+/**
+ * @param {CompressionReport} report
+ * @return {!string}
+ */
+WaveletMatrix.prototype.dump$LCompressionReport$ = function (report) {
+ /** @type {Array.<undefined|!string>} */
+ var contents;
+ /** @type {!number} */
+ var i;
+ /** @type {Array.<undefined|!string>} */
+ var range_contents;
+ /** @type {!number} */
+ var counter;
+ /** @type {!string} */
+ var key;
+ contents = [ Binary$dump16bitNumber$I(this._bitsize), Binary$dump32bitNumber$N(this._size) ];
+ CompressionReport$add$LCompressionReport$II(report, 3, 3);
+ for (i = 0; i < this._bitsize; i++) {
+ contents.push(this._bv[i].dump$LCompressionReport$(report));
+ }
+ for (i = 0; i < this._bitsize; i++) {
+ contents.push(Binary$dump32bitNumber$N(this._seps[i]));
+ CompressionReport$add$LCompressionReport$II(report, 2, 2);
+ }
+ range_contents = [ ];
+ counter = 0;
+ for (key in this._range) {
+ range_contents.push(Binary$dump32bitNumber$N(key | 0));
+ range_contents.push(Binary$dump32bitNumber$N(this._range[key]));
+ CompressionReport$add$LCompressionReport$II(report, 4, 4);
+ counter++;
+ }
+ CompressionReport$add$LCompressionReport$II(report, 2, 2);
+ contents.push(Binary$dump32bitNumber$N(counter));
+ return contents.join('') + range_contents.join('');
+};
+
+/**
+ * @param {!string} data
+ * @return {!number}
+ */
+WaveletMatrix.prototype.load$S = function (data) {
+ return this.load$SI(data, 0);
+};
+
+/**
+ * @param {!string} data
+ * @param {!number} offset
+ * @return {!number}
+ */
+WaveletMatrix.prototype.load$SI = function (data, offset) {
+ /** @type {!number} */
+ var i;
+ /** @type {BitVector} */
+ var bit_vector;
+ /** @type {!number} */
+ var range_size;
+ /** @type {!number} */
+ var value;
+ /** @type {!number} */
+ var offset$0;
+ /** @type {!number} */
+ var result$0;
+ /** @type {!number} */
+ var result$1;
+ /** @type {!number} */
+ var result$2;
+ this._bv.length = 0;
+ this._seps.length = 0;
+ this._size = 0;
+ offset$0 = offset++;
+ this._bitsize = (data.charCodeAt(offset$0) | 0);
+ result$0 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1);
+ this._size = (result$0 | 0);
+ offset += 2;
+ for (i = 0; i < this._bitsize; i++) {
+ bit_vector = new BitVector$();
+ offset = bit_vector.load$SI(data, offset);
+ this._bv.push(bit_vector);
+ }
+ for (i = 0; i < this._bitsize; (i++, offset += 2)) {
+ this._seps.push(Binary$load32bitNumber$SI(data, offset));
+ }
+ result$1 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1);
+ range_size = result$1;
+ offset += 2;
+ for (i = 0; i < range_size; (i++, offset += 4)) {
+ result$2 = data.charCodeAt(offset) * 65536 + data.charCodeAt(offset + 1);
+ value = Binary$load32bitNumber$SI(data, offset + 2);
+ this._range[result$2 + ""] = (value | 0);
+ }
+ return offset;
+};
+
+/**
+ * @param {Object.<string, undefined|!number>} input
+ * @return {Object.<string, undefined|!number>}
+ */
+WaveletMatrix._shallow_copy$HI = function (input) {
+ /** @type {Object.<string, undefined|!number>} */
+ var result;
+ /** @type {!string} */
+ var key;
+ result = ({ });
+ for (key in input) {
+ result[key] = input[key];
+ }
+ return result;
+};
+
+var WaveletMatrix$_shallow_copy$HI = WaveletMatrix._shallow_copy$HI;
+
+/**
+ * @param {!number} c
+ * @param {!number} i
+ * @return {!boolean}
+ */
+WaveletMatrix.prototype._uint2bit$II = function (c, i) {
+ return (c >>> this._bitsize - 1 - i & 0x1) === 0x1;
+};
+
+/**
+ * class BurrowsWheelerTransform extends Object
+ * @constructor
+ */
+function BurrowsWheelerTransform() {
+}
+
+/**
+ * @constructor
+ */
+function BurrowsWheelerTransform$() {
+ this._str = "";
+ this._size = 0;
+ this._head = 0;
+ this._suffixarray = [ ];
+};
+
+BurrowsWheelerTransform$.prototype = new BurrowsWheelerTransform;
+
+/**
+ * @param {BurrowsWheelerTransform} $this
+ * @return {!number}
+ */
+BurrowsWheelerTransform.size$LBurrowsWheelerTransform$ = function ($this) {
+ return $this._size;
+};
+
+var BurrowsWheelerTransform$size$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.size$LBurrowsWheelerTransform$;
+
+/**
+ * @param {BurrowsWheelerTransform} $this
+ * @return {!number}
+ */
+BurrowsWheelerTransform.head$LBurrowsWheelerTransform$ = function ($this) {
+ return $this._head;
+};
+
+var BurrowsWheelerTransform$head$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.head$LBurrowsWheelerTransform$;
+
+/**
+ * @param {BurrowsWheelerTransform} $this
+ */
+BurrowsWheelerTransform.clear$LBurrowsWheelerTransform$ = function ($this) {
+ $this._str = "";
+ $this._size = 0;
+ $this._head = 0;
+ $this._suffixarray.length = 0;
+};
+
+var BurrowsWheelerTransform$clear$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.clear$LBurrowsWheelerTransform$;
+
+/**
+ * @param {BurrowsWheelerTransform} $this
+ * @param {!string} str
+ */
+BurrowsWheelerTransform.build$LBurrowsWheelerTransform$S = function ($this, str) {
+ /** @type {!string} */
+ var _str$0;
+ /** @type {Array.<undefined|!number>} */
+ var _suffixarray$0;
+ _str$0 = $this._str = str;
+ $this._size = _str$0.length;
+ _suffixarray$0 = $this._suffixarray = SAIS$make$S(str);
+ $this._head = (_suffixarray$0.indexOf(0) | 0);
+};
+
+var BurrowsWheelerTransform$build$LBurrowsWheelerTransform$S = BurrowsWheelerTransform.build$LBurrowsWheelerTransform$S;
+
+/**
+ * @param {BurrowsWheelerTransform} $this
+ * @param {!number} i
+ * @return {!string}
+ */
+BurrowsWheelerTransform.get$LBurrowsWheelerTransform$I = function ($this, i) {
+ /** @type {!number} */
+ var size;
+ /** @type {!number} */
+ var index;
+ size = $this._size;
+ if (i >= size) {
+ throw new Error("BurrowsWheelerTransform.get() : range error");
+ }
+ index = ($this._suffixarray[i] + size - 1) % size;
+ return $this._str.charAt(index);
+};
+
+var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$I = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$I;
+
+/**
+ * @param {BurrowsWheelerTransform} $this
+ * @return {!string}
+ */
+BurrowsWheelerTransform.get$LBurrowsWheelerTransform$ = function ($this) {
+ /** @type {Array.<undefined|!string>} */
+ var str;
+ /** @type {!number} */
+ var size;
+ /** @type {!number} */
+ var i;
+ str = [ ];
+ size = $this._size;
+ for (i = 0; i < size; i++) {
+ str.push(BurrowsWheelerTransform$get$LBurrowsWheelerTransform$I($this, i));
+ }
+ return str.join("");
+};
+
+var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$ = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$;
+
+/**
+ * @param {BurrowsWheelerTransform} $this
+ * @param {!string} replace
+ * @return {!string}
+ */
+BurrowsWheelerTransform.get$LBurrowsWheelerTransform$S = function ($this, replace) {
+ /** @type {!string} */
+ var result;
+ result = BurrowsWheelerTransform$get$LBurrowsWheelerTransform$($this);
+ return result.replace(BurrowsWheelerTransform.END_MARKER, replace);
+};
+
+var BurrowsWheelerTransform$get$LBurrowsWheelerTransform$S = BurrowsWheelerTransform.get$LBurrowsWheelerTransform$S;
+
+/**
+ * class OArray extends Object
+ * @constructor
+ */
+function OArray() {
+}
+
+/**
+ * @constructor
+ * @param {Array.<undefined|!number>} array
+ */
+function OArray$AI(array) {
+ this.array = array;
+ this.offset = 0;
+};
+
+OArray$AI.prototype = new OArray;
+
+/**
+ * @constructor
+ * @param {Array.<undefined|!number>} array
+ * @param {!number} offset
+ */
+function OArray$AII(array, offset) {
+ this.array = array;
+ this.offset = offset;
+};
+
+OArray$AII.prototype = new OArray;
+
+/**
+ * @param {OArray} $this
+ * @param {!number} index
+ * @return {!number}
+ */
+OArray.get$LOArray$I = function ($this, index) {
+ return $this.array[index + $this.offset];
+};
+
+var OArray$get$LOArray$I = OArray.get$LOArray$I;
+
+/**
+ * @param {OArray} $this
+ * @param {!number} index
+ * @param {!number} value
+ */
+OArray.set$LOArray$II = function ($this, index, value) {
+ $this.array[index + $this.offset] = value;
+};
+
+var OArray$set$LOArray$II = OArray.set$LOArray$II;
+
+/**
+ * @param {OArray} $this
+ * @param {!number} index
+ * @return {!boolean}
+ */
+OArray.isS$LOArray$I = function ($this, index) {
+ /** @type {Array.<undefined|!number>} */
+ var array$0;
+ /** @type {!number} */
+ var offset$0;
+ return (array$0 = $this.array)[index + (offset$0 = $this.offset)] < array$0[index + offset$0 + 1];
+};
+
+var OArray$isS$LOArray$I = OArray.isS$LOArray$I;
+
+/**
+ * @param {OArray} $this
+ * @param {!number} index1
+ * @param {!number} index2
+ * @return {!boolean}
+ */
+OArray.compare$LOArray$II = function ($this, index1, index2) {
+ /** @type {Array.<undefined|!number>} */
+ var array$0;
+ /** @type {!number} */
+ var offset$0;
+ return (array$0 = $this.array)[index1 + (offset$0 = $this.offset)] == array$0[index2 + offset$0];
+};
+
+var OArray$compare$LOArray$II = OArray.compare$LOArray$II;
+
+/**
+ * class SAIS extends Object
+ * @constructor
+ */
+function SAIS() {
+}
+
+/**
+ * @constructor
+ */
+function SAIS$() {
+};
+
+SAIS$.prototype = new SAIS;
+
+/**
+ * @param {BitVector} t
+ * @param {!number} i
+ * @return {!boolean}
+ */
+SAIS._isLMS$LBitVector$I = function (t, i) {
+ return i > 0 && t.get$I(i) && ! t.get$I(i - 1);
+};
+
+var SAIS$_isLMS$LBitVector$I = SAIS._isLMS$LBitVector$I;
+
+/**
+ * @param {OArray} s
+ * @param {Array.<undefined|!number>} bkt
+ * @param {!number} n
+ * @param {!number} K
+ * @param {!boolean} end
+ */
+SAIS._getBuckets$LOArray$AIIIB = function (s, bkt, n, K, end) {
+ /** @type {!number} */
+ var sum;
+ /** @type {!number} */
+ var i;
+ sum = 0;
+ for (i = 0; i <= K; i++) {
+ bkt[i] = 0;
+ }
+ for (i = 0; i < n; i++) {
+ bkt[OArray$get$LOArray$I(s, i)]++;
+ }
+ for (i = 0; i <= K; i++) {
+ sum += bkt[i];
+ bkt[i] = ((end ? sum : sum - bkt[i]) | 0);
+ }
+};
+
+var SAIS$_getBuckets$LOArray$AIIIB = SAIS._getBuckets$LOArray$AIIIB;
+
+/**
+ * @param {BitVector} t
+ * @param {Array.<undefined|!number>} SA
+ * @param {OArray} s
+ * @param {Array.<undefined|!number>} bkt
+ * @param {!number} n
+ * @param {!number} K
+ * @param {!boolean} end
+ */
+SAIS._induceSAl$LBitVector$AILOArray$AIIIB = function (t, SA, s, bkt, n, K, end) {
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var j;
+ SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, end);
+ for (i = 0; i < n; i++) {
+ j = SA[i] - 1;
+ if (j >= 0 && ! t.get$I(j)) {
+ SA[bkt[OArray$get$LOArray$I(s, j)]++] = (j | 0);
+ }
+ }
+};
+
+var SAIS$_induceSAl$LBitVector$AILOArray$AIIIB = SAIS._induceSAl$LBitVector$AILOArray$AIIIB;
+
+/**
+ * @param {BitVector} t
+ * @param {Array.<undefined|!number>} SA
+ * @param {OArray} s
+ * @param {Array.<undefined|!number>} bkt
+ * @param {!number} n
+ * @param {!number} K
+ * @param {!boolean} end
+ */
+SAIS._induceSAs$LBitVector$AILOArray$AIIIB = function (t, SA, s, bkt, n, K, end) {
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var j;
+ SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, end);
+ for (i = n - 1; i >= 0; i--) {
+ j = SA[i] - 1;
+ if (j >= 0 && t.get$I(j)) {
+ SA[-- bkt[OArray$get$LOArray$I(s, j)]] = (j | 0);
+ }
+ }
+};
+
+var SAIS$_induceSAs$LBitVector$AILOArray$AIIIB = SAIS._induceSAs$LBitVector$AILOArray$AIIIB;
+
+/**
+ * @param {!string} source
+ * @return {Array.<undefined|!number>}
+ */
+SAIS.make$S = function (source) {
+ /** @type {Array.<undefined|!number>} */
+ var charCodes;
+ /** @type {!number} */
+ var maxCode;
+ /** @type {!number} */
+ var i;
+ /** @type {!number} */
+ var code;
+ /** @type {Array.<undefined|!number>} */
+ var SA;
+ /** @type {OArray} */
+ var s;
+ charCodes = [ ];
+ charCodes.length = source.length;
+ maxCode = 0;
+ for (i = 0; i < source.length; i++) {
+ code = source.charCodeAt(i);
+ charCodes[i] = (code | 0);
+ maxCode = (code > maxCode ? code : maxCode);
+ }
+ SA = [ ];
+ SA.length = source.length;
+ s = ({offset: 0, array: charCodes});
+ SAIS$_make$LOArray$AIII(s, SA, source.length, maxCode);
+ return SA;
+};
+
+var SAIS$make$S = SAIS.make$S;
+
+/**
+ * @param {OArray} s
+ * @param {Array.<undefined|!number>} SA
+ * @param {!number} n
+ * @param {!number} K
+ */
+SAIS._make$LOArray$AIII = function (s, SA, n, K) {
+ /** @type {BitVector} */
+ var t;
+ /** @type {!number} */
+ var i;
+ /** @type {Array.<undefined|!number>} */
+ var bkt;
+ /** @type {!number} */
+ var n1;
+ /** @type {!number} */
+ var name;
+ /** @type {!number} */
+ var prev;
+ /** @type {undefined|!number} */
+ var pos;
+ /** @type {!boolean} */
+ var diff;
+ /** @type {!number} */
+ var d;
+ /** @type {!number} */
+ var j;
+ /** @type {Array.<undefined|!number>} */
+ var SA1;
+ /** @type {OArray} */
+ var s1;
+ /** @type {!number} */
+ var i$0;
+ /** @type {!number} */
+ var index$0;
+ t = new BitVector$();
+ t.set$IB(n - 2, false);
+ t.set$IB(n - 1, true);
+ for (i = n - 3; i >= 0; i--) {
+ t.set$IB(i, OArray$isS$LOArray$I(s, i) || OArray$compare$LOArray$II(s, i, i + 1) && t.get$I(i + 1));
+ }
+ bkt = [ ];
+ bkt.length = K + 1;
+ SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, true);
+ for (i = 0; i < n; i++) {
+ SA[i] = -1;
+ }
+ for (i = 1; i < n; i++) {
+ if (SAIS$_isLMS$LBitVector$I(t, i)) {
+ SA[-- bkt[OArray$get$LOArray$I(s, i)]] = (i | 0);
+ }
+ }
+ SAIS$_induceSAl$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, false);
+ SAIS$_induceSAs$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, true);
+ n1 = 0;
+ for (i = 0; i < n; i++) {
+ i$0 = SA[i];
+ if (i$0 > 0 && t.get$I(i$0) && ! t.get$I(i$0 - 1)) {
+ SA[n1++] = SA[i];
+ }
+ }
+ for (i = n1; i < n; i++) {
+ SA[i] = -1;
+ }
+ name = 0;
+ prev = -1;
+ for (i = 0; i < n1; i++) {
+ pos = SA[i];
+ diff = false;
+ for (d = 0; d < n; d++) {
+ if (prev === -1 || ! OArray$compare$LOArray$II(s, pos + d, prev + d) || t.get$I(pos + d) !== t.get$I(prev + d)) {
+ diff = true;
+ break;
+ } else {
+ if (d > 0 && (SAIS$_isLMS$LBitVector$I(t, pos + d) || SAIS$_isLMS$LBitVector$I(t, prev + d))) {
+ break;
+ }
+ }
+ }
+ if (diff) {
+ name++;
+ prev = pos;
+ }
+ pos = ((pos % 2 === 0 ? pos / 2 : (pos - 1) / 2) | 0);
+ SA[n1 + pos] = (name - 1 | 0);
+ }
+ for ((i = n - 1, j = n - 1); i >= n1; i--) {
+ if (SA[i] >= 0) {
+ SA[j--] = SA[i];
+ }
+ }
+ SA1 = SA;
+ s1 = ({offset: n - n1, array: SA});
+ if (name < n1) {
+ SAIS$_make$LOArray$AIII(s1, SA1, n1, name - 1);
+ } else {
+ for (i = 0; i < n1; i++) {
+ SA1[OArray$get$LOArray$I(s1, i)] = (i | 0);
+ }
+ }
+ bkt = [ ];
+ bkt.length = K + 1;
+ SAIS$_getBuckets$LOArray$AIIIB(s, bkt, n, K, true);
+ for ((i = 1, j = 0); i < n; i++) {
+ if (SAIS$_isLMS$LBitVector$I(t, i)) {
+ OArray$set$LOArray$II(s1, j++, i);
+ }
+ }
+ for (i = 0; i < n1; i++) {
+ index$0 = SA1[i];
+ SA1[i] = s1.array[index$0 + s1.offset];
+ }
+ for (i = n1; i < n; i++) {
+ SA[i] = -1;
+ }
+ for (i = n1 - 1; i >= 0; i--) {
+ j = SA[i];
+ SA[i] = -1;
+ SA[-- bkt[OArray$get$LOArray$I(s, j)]] = (j | 0);
+ }
+ SAIS$_induceSAl$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, false);
+ SAIS$_induceSAs$LBitVector$AILOArray$AIIIB(t, SA, s, bkt, n, K, true);
+};
+
+var SAIS$_make$LOArray$AIII = SAIS._make$LOArray$AIII;
+
+$__jsx_lazy_init(node, "__dirname", function () {
+ return eval("__dirname") + "";
+});
+$__jsx_lazy_init(node, "__filename", function () {
+ return eval("__filename") + "";
+});
+$__jsx_lazy_init(node, "fs", function () {
+ return node$require$S('fs');
+});
+$__jsx_lazy_init(node, "path", function () {
+ return node$require$S('path');
+});
+$__jsx_lazy_init(node, "child_process", function () {
+ return node$require$S('child_process');
+});
+$__jsx_lazy_init(node, "url", function () {
+ return node$require$S('url');
+});
+$__jsx_lazy_init(node, "http", function () {
+ return node$require$S('http');
+});
+$__jsx_lazy_init(node, "https", function () {
+ return node$require$S('https');
+});
+$__jsx_lazy_init(node, "net", function () {
+ return node$require$S('net');
+});
+$__jsx_lazy_init(Oktavia, "eof", function () {
+ return String.fromCharCode(0);
+});
+$__jsx_lazy_init(Oktavia, "eob", function () {
+ return String.fromCharCode(1);
+});
+$__jsx_lazy_init(Oktavia, "unknown", function () {
+ return String.fromCharCode(3);
+});
+$__jsx_lazy_init(Style, "console", function () {
+ return ({ 'title': [ '\x1B[32m\x1b[4m', '\x1B[39m\x1b[0m' ], 'url': [ '\x1B[34m', '\x1B[39m' ], 'hit': [ '\x1B[4m', '\x1B[0m' ], 'del': [ '\x1B[9m', '\x1B[0m' ], 'summary': [ '\x1B[90m', '\x1B[39m' ] });
+});
+$__jsx_lazy_init(Style, "html", function () {
+ return ({ 'title': [ '<span class="title">', '</span>' ], 'url': [ '<span class="url">', '</span>' ], 'hit': [ '<span class="hit">', '</span>' ], 'del': [ '<del>', '</del>' ], 'summary': [ '<span class="reuslt">', '</span>' ] });
+});
+$__jsx_lazy_init(Style, "ignore", function () {
+ return ({ 'tilte': [ '', '' ], 'url': [ '', '' ], 'hit': [ '', '' ], 'del': [ '', '' ], 'summary': [ '', '' ] });
+});
+Binary._base64EncodeChars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
+$__jsx_lazy_init(Binary, "_base64DecodeChars", function () {
+ return [ -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1, -1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1, -1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1 ];
+});
+js.global = (function () { return this; })();
+$__jsx_lazy_init(_Common, "buffers", function () {
+ return [ "comment", "sgmlDecl", "textNode", "tagName", "doctype", "procInstName", "procInstBody", "entity", "attribName", "attribValue", "cdata", "script" ];
+});
+$__jsx_lazy_init(_Common, "EVENTS", function () {
+ return [ "text", "processinginstruction", "sgmldeclaration", "doctype", "comment", "attribute", "opentag", "closetag", "opencdata", "cdata", "clo_State.CDATA", "error", "end", "ready", "script", "opennamespace", "closenamespace" ];
+});
+_Common.MAX_BUFFER_LENGTH = 65536;
+_State.BEGIN = 1;
+_State.TEXT = 2;
+_State.TEXT_ENTITY = 3;
+_State.OPEN_WAKA = 4;
+_State.SGML_DECL = 5;
+_State.SGML_DECL_QUOTED = 6;
+_State.DOCTYPE = 7;
+_State.DOCTYPE_QUOTED = 8;
+_State.DOCTYPE_DTD = 9;
+_State.DOCTYPE_DTD_QUOTED = 10;
+_State.COMMENT_STARTING = 11;
+_State.COMMENT = 12;
+_State.COMMENT_ENDING = 13;
+_State.COMMENT_ENDED = 14;
+_State.CDATA = 15;
+_State.CDATA_ENDING = 16;
+_State.CDATA_ENDING_2 = 17;
+_State.PROC_INST = 18;
+_State.PROC_INST_BODY = 19;
+_State.PROC_INST_ENDING = 20;
+_State.OPEN_TAG = 21;
+_State.OPEN_TAG_SLASH = 22;
+_State.ATTRIB = 23;
+_State.ATTRIB_NAME = 24;
+_State.ATTRIB_NAME_SAW_WHITE = 25;
+_State.ATTRIB_VALUE = 26;
+_State.ATTRIB_VALUE_QUOTED = 27;
+_State.ATTRIB_VALUE_UNQUOTED = 28;
+_State.ATTRIB_VALUE_ENTITY_Q = 29;
+_State.ATTRIB_VALUE_ENTITY_U = 30;
+_State.CLOSE_TAG = 31;
+_State.CLOSE_TAG_SAW_WHITE = 32;
+_State.SCRIPT = 33;
+_State.SCRIPT_ENDING = 34;
+$__jsx_lazy_init(_Entities, "_entities", function () {
+ return ({ "amp": "&", "gt": ">", "lt": "<", "quot": "\"", "apos": "'", "AElig": 198, "Aacute": 193, "Acirc": 194, "Agrave": 192, "Aring": 197, "Atilde": 195, "Auml": 196, "Ccedil": 199, "ETH": 208, "Eacute": 201, "Ecirc": 202, "Egrave": 200, "Euml": 203, "Iacute": 205, "Icirc": 206, "Igrave": 204, "Iuml": 207, "Ntilde": 209, "Oacute": 211, "Ocirc": 212, "Ograve": 210, "Oslash": 216, "Otilde": 213, "Ouml": 214, "THORN": 222, "Uacute": 218, "Ucirc": 219, "Ugrave": 217, "Uuml": 220, "Yacute": 221, "aacute": 225, "acirc": 226, "aelig": 230, "agrave": 224, "aring": 229, "atilde": 227, "auml": 228, "ccedil": 231, "eacute": 233, "ecirc": 234, "egrave": 232, "eth": 240, "euml": 235, "iacute": 237, "icirc": 238, "igrave": 236, "iuml": 239, "ntilde": 241, "oacute": 243, "ocirc": 244, "ograve": 242, "oslash": 248, "otilde": 245, "ouml": 246, "szlig": 223, "thorn": 254, "uacute": 250, "ucirc": 251, "ugrave": 249, "uuml": 252, "yacute": 253, "yuml": 255, "copy": 169, "reg": 174, "nbsp": 160, "iexcl": 161, "cent": 162, "pound": 163, "curren": 164, "yen": 165, "brvbar": 166, "sect": 167, "uml": 168, "ordf": 170, "laquo": 171, "not": 172, "shy": 173, "macr": 175, "deg": 176, "plusmn": 177, "sup1": 185, "sup2": 178, "sup3": 179, "acute": 180, "micro": 181, "para": 182, "middot": 183, "cedil": 184, "ordm": 186, "raquo": 187, "frac14": 188, "frac12": 189, "frac34": 190, "iquest": 191, "times": 215, "divide": 247, "OElig": 338, "oelig": 339, "Scaron": 352, "scaron": 353, "Yuml": 376, "fnof": 402, "circ": 710, "tilde": 732, "Alpha": 913, "Beta": 914, "Gamma": 915, "Delta": 916, "Epsilon": 917, "Zeta": 918, "Eta": 919, "Theta": 920, "Iota": 921, "Kappa": 922, "Lambda": 923, "Mu": 924, "Nu": 925, "Xi": 926, "Omicron": 927, "Pi": 928, "Rho": 929, "Sigma": 931, "Tau": 932, "Upsilon": 933, "Phi": 934, "Chi": 935, "Psi": 936, "Omega": 937, "alpha": 945, "beta": 946, "gamma": 947, "delta": 948, "epsilon": 949, "zeta": 950, "eta": 951, "theta": 952, "iota": 953, "kappa": 954, "lambda": 955, "mu": 956, "nu": 957, "xi": 958, "omicron": 959, "pi": 960, "rho": 961, "sigmaf": 962, "sigma": 963, "tau": 964, "upsilon": 965, "phi": 966, "chi": 967, "psi": 968, "omega": 969, "thetasym": 977, "upsih": 978, "piv": 982, "ensp": 8194, "emsp": 8195, "thinsp": 8201, "zwnj": 8204, "zwj": 8205, "lrm": 8206, "rlm": 8207, "ndash": 8211, "mdash": 8212, "lsquo": 8216, "rsquo": 8217, "sbquo": 8218, "ldquo": 8220, "rdquo": 8221, "bdquo": 8222, "dagger": 8224, "Dagger": 8225, "bull": 8226, "hellip": 8230, "permil": 8240, "prime": 8242, "Prime": 8243, "lsaquo": 8249, "rsaquo": 8250, "oline": 8254, "frasl": 8260, "euro": 8364, "image": 8465, "weierp": 8472, "real": 8476, "trade": 8482, "alefsym": 8501, "larr": 8592, "uarr": 8593, "rarr": 8594, "darr": 8595, "harr": 8596, "crarr": 8629, "lArr": 8656, "uArr": 8657, "rArr": 8658, "dArr": 8659, "hArr": 8660, "forall": 8704, "part": 8706, "exist": 8707, "empty": 8709, "nabla": 8711, "isin": 8712, "notin": 8713, "ni": 8715, "prod": 8719, "sum": 8721, "minus": 8722, "lowast": 8727, "radic": 8730, "prop": 8733, "infin": 8734, "ang": 8736, "and": 8743, "or": 8744, "cap": 8745, "cup": 8746, "int": 8747, "there4": 8756, "sim": 8764, "cong": 8773, "asymp": 8776, "ne": 8800, "equiv": 8801, "le": 8804, "ge": 8805, "sub": 8834, "sup": 8835, "nsub": 8836, "sube": 8838, "supe": 8839, "oplus": 8853, "otimes": 8855, "perp": 8869, "sdot": 8901, "lceil": 8968, "rceil": 8969, "lfloor": 8970, "rfloor": 8971, "lang": 9001, "rang": 9002, "loz": 9674, "spades": 9824, "clubs": 9827, "hearts": 9829, "diams": 9830 });
+});
+TurkishStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(TurkishStemmer, "methodObject", function () {
+ return new TurkishStemmer$();
+});
+$__jsx_lazy_init(TurkishStemmer, "a_0", function () {
+ return [ new Among$SII("m", -1, -1), new Among$SII("n", -1, -1), new Among$SII("miz", -1, -1), new Among$SII("niz", -1, -1), new Among$SII("muz", -1, -1), new Among$SII("nuz", -1, -1), new Among$SII("m\u00FCz", -1, -1), new Among$SII("n\u00FCz", -1, -1), new Among$SII("m\u0131z", -1, -1), new Among$SII("n\u0131z", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_1", function () {
+ return [ new Among$SII("leri", -1, -1), new Among$SII("lar\u0131", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_2", function () {
+ return [ new Among$SII("ni", -1, -1), new Among$SII("nu", -1, -1), new Among$SII("n\u00FC", -1, -1), new Among$SII("n\u0131", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_3", function () {
+ return [ new Among$SII("in", -1, -1), new Among$SII("un", -1, -1), new Among$SII("\u00FCn", -1, -1), new Among$SII("\u0131n", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_4", function () {
+ return [ new Among$SII("a", -1, -1), new Among$SII("e", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_5", function () {
+ return [ new Among$SII("na", -1, -1), new Among$SII("ne", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_6", function () {
+ return [ new Among$SII("da", -1, -1), new Among$SII("ta", -1, -1), new Among$SII("de", -1, -1), new Among$SII("te", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_7", function () {
+ return [ new Among$SII("nda", -1, -1), new Among$SII("nde", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_8", function () {
+ return [ new Among$SII("dan", -1, -1), new Among$SII("tan", -1, -1), new Among$SII("den", -1, -1), new Among$SII("ten", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_9", function () {
+ return [ new Among$SII("ndan", -1, -1), new Among$SII("nden", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_10", function () {
+ return [ new Among$SII("la", -1, -1), new Among$SII("le", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_11", function () {
+ return [ new Among$SII("ca", -1, -1), new Among$SII("ce", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_12", function () {
+ return [ new Among$SII("im", -1, -1), new Among$SII("um", -1, -1), new Among$SII("\u00FCm", -1, -1), new Among$SII("\u0131m", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_13", function () {
+ return [ new Among$SII("sin", -1, -1), new Among$SII("sun", -1, -1), new Among$SII("s\u00FCn", -1, -1), new Among$SII("s\u0131n", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_14", function () {
+ return [ new Among$SII("iz", -1, -1), new Among$SII("uz", -1, -1), new Among$SII("\u00FCz", -1, -1), new Among$SII("\u0131z", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_15", function () {
+ return [ new Among$SII("siniz", -1, -1), new Among$SII("sunuz", -1, -1), new Among$SII("s\u00FCn\u00FCz", -1, -1), new Among$SII("s\u0131n\u0131z", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_16", function () {
+ return [ new Among$SII("lar", -1, -1), new Among$SII("ler", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_17", function () {
+ return [ new Among$SII("niz", -1, -1), new Among$SII("nuz", -1, -1), new Among$SII("n\u00FCz", -1, -1), new Among$SII("n\u0131z", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_18", function () {
+ return [ new Among$SII("dir", -1, -1), new Among$SII("tir", -1, -1), new Among$SII("dur", -1, -1), new Among$SII("tur", -1, -1), new Among$SII("d\u00FCr", -1, -1), new Among$SII("t\u00FCr", -1, -1), new Among$SII("d\u0131r", -1, -1), new Among$SII("t\u0131r", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_19", function () {
+ return [ new Among$SII("cas\u0131na", -1, -1), new Among$SII("cesine", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_20", function () {
+ return [ new Among$SII("di", -1, -1), new Among$SII("ti", -1, -1), new Among$SII("dik", -1, -1), new Among$SII("tik", -1, -1), new Among$SII("duk", -1, -1), new Among$SII("tuk", -1, -1), new Among$SII("d\u00FCk", -1, -1), new Among$SII("t\u00FCk", -1, -1), new Among$SII("d\u0131k", -1, -1), new Among$SII("t\u0131k", -1, -1), new Among$SII("dim", -1, -1), new Among$SII("tim", -1, -1), new Among$SII("dum", -1, -1), new Among$SII("tum", -1, -1), new Among$SII("d\u00FCm", -1, -1), new Among$SII("t\u00FCm", -1, -1), new Among$SII("d\u0131m", -1, -1), new Among$SII("t\u0131m", -1, -1), new Among$SII("din", -1, -1), new Among$SII("tin", -1, -1), new Among$SII("dun", -1, -1), new Among$SII("tun", -1, -1), new Among$SII("d\u00FCn", -1, -1), new Among$SII("t\u00FCn", -1, -1), new Among$SII("d\u0131n", -1, -1), new Among$SII("t\u0131n", -1, -1), new Among$SII("du", -1, -1), new Among$SII("tu", -1, -1), new Among$SII("d\u00FC", -1, -1), new Among$SII("t\u00FC", -1, -1), new Among$SII("d\u0131", -1, -1), new Among$SII("t\u0131", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_21", function () {
+ return [ new Among$SII("sa", -1, -1), new Among$SII("se", -1, -1), new Among$SII("sak", -1, -1), new Among$SII("sek", -1, -1), new Among$SII("sam", -1, -1), new Among$SII("sem", -1, -1), new Among$SII("san", -1, -1), new Among$SII("sen", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_22", function () {
+ return [ new Among$SII("mi\u015F", -1, -1), new Among$SII("mu\u015F", -1, -1), new Among$SII("m\u00FC\u015F", -1, -1), new Among$SII("m\u0131\u015F", -1, -1) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "a_23", function () {
+ return [ new Among$SII("b", -1, 1), new Among$SII("c", -1, 2), new Among$SII("d", -1, 3), new Among$SII("\u011F", -1, 4) ];
+});
+$__jsx_lazy_init(TurkishStemmer, "g_vowel", function () {
+ return [ 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 ];
+});
+$__jsx_lazy_init(TurkishStemmer, "g_U", function () {
+ return [ 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 ];
+});
+$__jsx_lazy_init(TurkishStemmer, "g_vowel1", function () {
+ return [ 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 ];
+});
+$__jsx_lazy_init(TurkishStemmer, "g_vowel2", function () {
+ return [ 17, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 130 ];
+});
+$__jsx_lazy_init(TurkishStemmer, "g_vowel3", function () {
+ return [ 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 ];
+});
+$__jsx_lazy_init(TurkishStemmer, "g_vowel4", function () {
+ return [ 17 ];
+});
+$__jsx_lazy_init(TurkishStemmer, "g_vowel5", function () {
+ return [ 65 ];
+});
+$__jsx_lazy_init(TurkishStemmer, "g_vowel6", function () {
+ return [ 65 ];
+});
+SwedishStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(SwedishStemmer, "methodObject", function () {
+ return new SwedishStemmer$();
+});
+$__jsx_lazy_init(SwedishStemmer, "a_0", function () {
+ return [ new Among$SII("a", -1, 1), new Among$SII("arna", 0, 1), new Among$SII("erna", 0, 1), new Among$SII("heterna", 2, 1), new Among$SII("orna", 0, 1), new Among$SII("ad", -1, 1), new Among$SII("e", -1, 1), new Among$SII("ade", 6, 1), new Among$SII("ande", 6, 1), new Among$SII("arne", 6, 1), new Among$SII("are", 6, 1), new Among$SII("aste", 6, 1), new Among$SII("en", -1, 1), new Among$SII("anden", 12, 1), new Among$SII("aren", 12, 1), new Among$SII("heten", 12, 1), new Among$SII("ern", -1, 1), new Among$SII("ar", -1, 1), new Among$SII("er", -1, 1), new Among$SII("heter", 18, 1), new Among$SII("or", -1, 1), new Among$SII("s", -1, 2), new Among$SII("as", 21, 1), new Among$SII("arnas", 22, 1), new Among$SII("ernas", 22, 1), new Among$SII("ornas", 22, 1), new Among$SII("es", 21, 1), new Among$SII("ades", 26, 1), new Among$SII("andes", 26, 1), new Among$SII("ens", 21, 1), new Among$SII("arens", 29, 1), new Among$SII("hetens", 29, 1), new Among$SII("erns", 21, 1), new Among$SII("at", -1, 1), new Among$SII("andet", -1, 1), new Among$SII("het", -1, 1), new Among$SII("ast", -1, 1) ];
+});
+$__jsx_lazy_init(SwedishStemmer, "a_1", function () {
+ return [ new Among$SII("dd", -1, -1), new Among$SII("gd", -1, -1), new Among$SII("nn", -1, -1), new Among$SII("dt", -1, -1), new Among$SII("gt", -1, -1), new Among$SII("kt", -1, -1), new Among$SII("tt", -1, -1) ];
+});
+$__jsx_lazy_init(SwedishStemmer, "a_2", function () {
+ return [ new Among$SII("ig", -1, 1), new Among$SII("lig", 0, 1), new Among$SII("els", -1, 1), new Among$SII("fullt", -1, 3), new Among$SII("l\u00F6st", -1, 2) ];
+});
+$__jsx_lazy_init(SwedishStemmer, "g_v", function () {
+ return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 32 ];
+});
+$__jsx_lazy_init(SwedishStemmer, "g_s_ending", function () {
+ return [ 119, 127, 149 ];
+});
+SpanishStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(SpanishStemmer, "methodObject", function () {
+ return new SpanishStemmer$();
+});
+$__jsx_lazy_init(SpanishStemmer, "a_0", function () {
+ return [ new Among$SII("", -1, 6), new Among$SII("\u00E1", 0, 1), new Among$SII("\u00E9", 0, 2), new Among$SII("\u00ED", 0, 3), new Among$SII("\u00F3", 0, 4), new Among$SII("\u00FA", 0, 5) ];
+});
+$__jsx_lazy_init(SpanishStemmer, "a_1", function () {
+ return [ new Among$SII("la", -1, -1), new Among$SII("sela", 0, -1), new Among$SII("le", -1, -1), new Among$SII("me", -1, -1), new Among$SII("se", -1, -1), new Among$SII("lo", -1, -1), new Among$SII("selo", 5, -1), new Among$SII("las", -1, -1), new Among$SII("selas", 7, -1), new Among$SII("les", -1, -1), new Among$SII("los", -1, -1), new Among$SII("selos", 10, -1), new Among$SII("nos", -1, -1) ];
+});
+$__jsx_lazy_init(SpanishStemmer, "a_2", function () {
+ return [ new Among$SII("ando", -1, 6), new Among$SII("iendo", -1, 6), new Among$SII("yendo", -1, 7), new Among$SII("\u00E1ndo", -1, 2), new Among$SII("i\u00E9ndo", -1, 1), new Among$SII("ar", -1, 6), new Among$SII("er", -1, 6), new Among$SII("ir", -1, 6), new Among$SII("\u00E1r", -1, 3), new Among$SII("\u00E9r", -1, 4), new Among$SII("\u00EDr", -1, 5) ];
+});
+$__jsx_lazy_init(SpanishStemmer, "a_3", function () {
+ return [ new Among$SII("ic", -1, -1), new Among$SII("ad", -1, -1), new Among$SII("os", -1, -1), new Among$SII("iv", -1, 1) ];
+});
+$__jsx_lazy_init(SpanishStemmer, "a_4", function () {
+ return [ new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ante", -1, 1) ];
+});
+$__jsx_lazy_init(SpanishStemmer, "a_5", function () {
+ return [ new Among$SII("ic", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 1) ];
+});
+$__jsx_lazy_init(SpanishStemmer, "a_6", function () {
+ return [ new Among$SII("ica", -1, 1), new Among$SII("ancia", -1, 2), new Among$SII("encia", -1, 5), new Among$SII("adora", -1, 2), new Among$SII("osa", -1, 1), new Among$SII("ista", -1, 1), new Among$SII("iva", -1, 9), new Among$SII("anza", -1, 1), new Among$SII("log\u00EDa", -1, 3), new Among$SII("idad", -1, 8), new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ante", -1, 2), new Among$SII("mente", -1, 7), new Among$SII("amente", 13, 6), new Among$SII("aci\u00F3n", -1, 2), new Among$SII("uci\u00F3n", -1, 4), new Among$SII("ico", -1, 1), new Among$SII("ismo", -1, 1), new Among$SII("oso", -1, 1), new Among$SII("amiento", -1, 1), new Among$SII("imiento", -1, 1), new Among$SII("ivo", -1, 9), new Among$SII("ador", -1, 2), new Among$SII("icas", -1, 1), new Among$SII("ancias", -1, 2), new Among$SII("encias", -1, 5), new Among$SII("adoras", -1, 2), new Among$SII("osas", -1, 1), new Among$SII("istas", -1, 1), new Among$SII("ivas", -1, 9), new Among$SII("anzas", -1, 1), new Among$SII("log\u00EDas", -1, 3), new Among$SII("idades", -1, 8), new Among$SII("ables", -1, 1), new Among$SII("ibles", -1, 1), new Among$SII("aciones", -1, 2), new Among$SII("uciones", -1, 4), new Among$SII("adores", -1, 2), new Among$SII("antes", -1, 2), new Among$SII("icos", -1, 1), new Among$SII("ismos", -1, 1), new Among$SII("osos", -1, 1), new Among$SII("amientos", -1, 1), new Among$SII("imientos", -1, 1), new Among$SII("ivos", -1, 9) ];
+});
+$__jsx_lazy_init(SpanishStemmer, "a_7", function () {
+ return [ new Among$SII("ya", -1, 1), new Among$SII("ye", -1, 1), new Among$SII("yan", -1, 1), new Among$SII("yen", -1, 1), new Among$SII("yeron", -1, 1), new Among$SII("yendo", -1, 1), new Among$SII("yo", -1, 1), new Among$SII("yas", -1, 1), new Among$SII("yes", -1, 1), new Among$SII("yais", -1, 1), new Among$SII("yamos", -1, 1), new Among$SII("y\u00F3", -1, 1) ];
+});
+$__jsx_lazy_init(SpanishStemmer, "a_8", function () {
+ return [ new Among$SII("aba", -1, 2), new Among$SII("ada", -1, 2), new Among$SII("ida", -1, 2), new Among$SII("ara", -1, 2), new Among$SII("iera", -1, 2), new Among$SII("\u00EDa", -1, 2), new Among$SII("ar\u00EDa", 5, 2), new Among$SII("er\u00EDa", 5, 2), new Among$SII("ir\u00EDa", 5, 2), new Among$SII("ad", -1, 2), new Among$SII("ed", -1, 2), new Among$SII("id", -1, 2), new Among$SII("ase", -1, 2), new Among$SII("iese", -1, 2), new Among$SII("aste", -1, 2), new Among$SII("iste", -1, 2), new Among$SII("an", -1, 2), new Among$SII("aban", 16, 2), new Among$SII("aran", 16, 2), new Among$SII("ieran", 16, 2), new Among$SII("\u00EDan", 16, 2), new Among$SII("ar\u00EDan", 20, 2), new Among$SII("er\u00EDan", 20, 2), new Among$SII("ir\u00EDan", 20, 2), new Among$SII("en", -1, 1), new Among$SII("asen", 24, 2), new Among$SII("iesen", 24, 2), new Among$SII("aron", -1, 2), new Among$SII("ieron", -1, 2), new Among$SII("ar\u00E1n", -1, 2), new Among$SII("er\u00E1n", -1, 2), new Among$SII("ir\u00E1n", -1, 2), new Among$SII("ado", -1, 2), new Among$SII("ido", -1, 2), new Among$SII("ando", -1, 2), new Among$SII("iendo", -1, 2), new Among$SII("ar", -1, 2), new Among$SII("er", -1, 2), new Among$SII("ir", -1, 2), new Among$SII("as", -1, 2), new Among$SII("abas", 39, 2), new Among$SII("adas", 39, 2), new Among$SII("idas", 39, 2), new Among$SII("aras", 39, 2), new Among$SII("ieras", 39, 2), new Among$SII("\u00EDas", 39, 2), new Among$SII("ar\u00EDas", 45, 2), new Among$SII("er\u00EDas", 45, 2), new Among$SII("ir\u00EDas", 45, 2), new Among$SII("es", -1, 1), new Among$SII("ases", 49, 2), new Among$SII("ieses", 49, 2), new Among$SII("abais", -1, 2), new Among$SII("arais", -1, 2), new Among$SII("ierais", -1, 2), new Among$SII("\u00EDais", -1, 2), new Among$SII("ar\u00EDais", 55, 2), new Among$SII("er\u00EDais", 55, 2), new Among$SII("ir\u00EDais", 55, 2), new Among$SII("aseis", -1, 2), new Among$SII("ieseis", -1, 2), new Among$SII("asteis", -1, 2), new Among$SII("isteis", -1, 2), new Among$SII("\u00E1is", -1, 2), new Among$SII("\u00E9is", -1, 1), new Among$SII("ar\u00E9is", 64, 2), new Among$SII("er\u00E9is", 64, 2), new Among$SII("ir\u00E9is", 64, 2), new Among$SII("ados", -1, 2), new Among$SII("idos", -1, 2), new Among$SII("amos", -1, 2), new Among$SII("\u00E1bamos", 70, 2), new Among$SII("\u00E1ramos", 70, 2), new Among$SII("i\u00E9ramos", 70, 2), new Among$SII("\u00EDamos", 70, 2), new Among$SII("ar\u00EDamos", 74, 2), new Among$SII("er\u00EDamos", 74, 2), new Among$SII("ir\u00EDamos", 74, 2), new Among$SII("emos", -1, 1), new Among$SII("aremos", 78, 2), new Among$SII("eremos", 78, 2), new Among$SII("iremos", 78, 2), new Among$SII("\u00E1semos", 78, 2), new Among$SII("i\u00E9semos", 78, 2), new Among$SII("imos", -1, 2), new Among$SII("ar\u00E1s", -1, 2), new Among$SII("er\u00E1s", -1, 2), new Among$SII("ir\u00E1s", -1, 2), new Among$SII("\u00EDs", -1, 2), new Among$SII("ar\u00E1", -1, 2), new Among$SII("er\u00E1", -1, 2), new Among$SII("ir\u00E1", -1, 2), new Among$SII("ar\u00E9", -1, 2), new Among$SII("er\u00E9", -1, 2), new Among$SII("ir\u00E9", -1, 2), new Among$SII("i\u00F3", -1, 2) ];
+});
+$__jsx_lazy_init(SpanishStemmer, "a_9", function () {
+ return [ new Among$SII("a", -1, 1), new Among$SII("e", -1, 2), new Among$SII("o", -1, 1), new Among$SII("os", -1, 1), new Among$SII("\u00E1", -1, 1), new Among$SII("\u00E9", -1, 2), new Among$SII("\u00ED", -1, 1), new Among$SII("\u00F3", -1, 1) ];
+});
+$__jsx_lazy_init(SpanishStemmer, "g_v", function () {
+ return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 4, 10 ];
+});
+RussianStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(RussianStemmer, "methodObject", function () {
+ return new RussianStemmer$();
+});
+$__jsx_lazy_init(RussianStemmer, "a_0", function () {
+ return [ new Among$SII("\u0432", -1, 1), new Among$SII("\u0438\u0432", 0, 2), new Among$SII("\u044B\u0432", 0, 2), new Among$SII("\u0432\u0448\u0438", -1, 1), new Among$SII("\u0438\u0432\u0448\u0438", 3, 2), new Among$SII("\u044B\u0432\u0448\u0438", 3, 2), new Among$SII("\u0432\u0448\u0438\u0441\u044C", -1, 1), new Among$SII("\u0438\u0432\u0448\u0438\u0441\u044C", 6, 2), new Among$SII("\u044B\u0432\u0448\u0438\u0441\u044C", 6, 2) ];
+});
+$__jsx_lazy_init(RussianStemmer, "a_1", function () {
+ return [ new Among$SII("\u0435\u0435", -1, 1), new Among$SII("\u0438\u0435", -1, 1), new Among$SII("\u043E\u0435", -1, 1), new Among$SII("\u044B\u0435", -1, 1), new Among$SII("\u0438\u043C\u0438", -1, 1), new Among$SII("\u044B\u043C\u0438", -1, 1), new Among$SII("\u0435\u0439", -1, 1), new Among$SII("\u0438\u0439", -1, 1), new Among$SII("\u043E\u0439", -1, 1), new Among$SII("\u044B\u0439", -1, 1), new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u0438\u043C", -1, 1), new Among$SII("\u043E\u043C", -1, 1), new Among$SII("\u044B\u043C", -1, 1), new Among$SII("\u0435\u0433\u043E", -1, 1), new Among$SII("\u043E\u0433\u043E", -1, 1), new Among$SII("\u0435\u043C\u0443", -1, 1), new Among$SII("\u043E\u043C\u0443", -1, 1), new Among$SII("\u0438\u0445", -1, 1), new Among$SII("\u044B\u0445", -1, 1), new Among$SII("\u0435\u044E", -1, 1), new Among$SII("\u043E\u044E", -1, 1), new Among$SII("\u0443\u044E", -1, 1), new Among$SII("\u044E\u044E", -1, 1), new Among$SII("\u0430\u044F", -1, 1), new Among$SII("\u044F\u044F", -1, 1) ];
+});
+$__jsx_lazy_init(RussianStemmer, "a_2", function () {
+ return [ new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u043D\u043D", -1, 1), new Among$SII("\u0432\u0448", -1, 1), new Among$SII("\u0438\u0432\u0448", 2, 2), new Among$SII("\u044B\u0432\u0448", 2, 2), new Among$SII("\u0449", -1, 1), new Among$SII("\u044E\u0449", 5, 1), new Among$SII("\u0443\u044E\u0449", 6, 2) ];
+});
+$__jsx_lazy_init(RussianStemmer, "a_3", function () {
+ return [ new Among$SII("\u0441\u044C", -1, 1), new Among$SII("\u0441\u044F", -1, 1) ];
+});
+$__jsx_lazy_init(RussianStemmer, "a_4", function () {
+ return [ new Among$SII("\u043B\u0430", -1, 1), new Among$SII("\u0438\u043B\u0430", 0, 2), new Among$SII("\u044B\u043B\u0430", 0, 2), new Among$SII("\u043D\u0430", -1, 1), new Among$SII("\u0435\u043D\u0430", 3, 2), new Among$SII("\u0435\u0442\u0435", -1, 1), new Among$SII("\u0438\u0442\u0435", -1, 2), new Among$SII("\u0439\u0442\u0435", -1, 1), new Among$SII("\u0435\u0439\u0442\u0435", 7, 2), new Among$SII("\u0443\u0439\u0442\u0435", 7, 2), new Among$SII("\u043B\u0438", -1, 1), new Among$SII("\u0438\u043B\u0438", 10, 2), new Among$SII("\u044B\u043B\u0438", 10, 2), new Among$SII("\u0439", -1, 1), new Among$SII("\u0435\u0439", 13, 2), new Among$SII("\u0443\u0439", 13, 2), new Among$SII("\u043B", -1, 1), new Among$SII("\u0438\u043B", 16, 2), new Among$SII("\u044B\u043B", 16, 2), new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u0438\u043C", -1, 2), new Among$SII("\u044B\u043C", -1, 2), new Among$SII("\u043D", -1, 1), new Among$SII("\u0435\u043D", 22, 2), new Among$SII("\u043B\u043E", -1, 1), new Among$SII("\u0438\u043B\u043E", 24, 2), new Among$SII("\u044B\u043B\u043E", 24, 2), new Among$SII("\u043D\u043E", -1, 1), new Among$SII("\u0435\u043D\u043E", 27, 2), new Among$SII("\u043D\u043D\u043E", 27, 1), new Among$SII("\u0435\u0442", -1, 1), new Among$SII("\u0443\u0435\u0442", 30, 2), new Among$SII("\u0438\u0442", -1, 2), new Among$SII("\u044B\u0442", -1, 2), new Among$SII("\u044E\u0442", -1, 1), new Among$SII("\u0443\u044E\u0442", 34, 2), new Among$SII("\u044F\u0442", -1, 2), new Among$SII("\u043D\u044B", -1, 1), new Among$SII("\u0435\u043D\u044B", 37, 2), new Among$SII("\u0442\u044C", -1, 1), new Among$SII("\u0438\u0442\u044C", 39, 2), new Among$SII("\u044B\u0442\u044C", 39, 2), new Among$SII("\u0435\u0448\u044C", -1, 1), new Among$SII("\u0438\u0448\u044C", -1, 2), new Among$SII("\u044E", -1, 2), new Among$SII("\u0443\u044E", 44, 2) ];
+});
+$__jsx_lazy_init(RussianStemmer, "a_5", function () {
+ return [ new Among$SII("\u0430", -1, 1), new Among$SII("\u0435\u0432", -1, 1), new Among$SII("\u043E\u0432", -1, 1), new Among$SII("\u0435", -1, 1), new Among$SII("\u0438\u0435", 3, 1), new Among$SII("\u044C\u0435", 3, 1), new Among$SII("\u0438", -1, 1), new Among$SII("\u0435\u0438", 6, 1), new Among$SII("\u0438\u0438", 6, 1), new Among$SII("\u0430\u043C\u0438", 6, 1), new Among$SII("\u044F\u043C\u0438", 6, 1), new Among$SII("\u0438\u044F\u043C\u0438", 10, 1), new Among$SII("\u0439", -1, 1), new Among$SII("\u0435\u0439", 12, 1), new Among$SII("\u0438\u0435\u0439", 13, 1), new Among$SII("\u0438\u0439", 12, 1), new Among$SII("\u043E\u0439", 12, 1), new Among$SII("\u0430\u043C", -1, 1), new Among$SII("\u0435\u043C", -1, 1), new Among$SII("\u0438\u0435\u043C", 18, 1), new Among$SII("\u043E\u043C", -1, 1), new Among$SII("\u044F\u043C", -1, 1), new Among$SII("\u0438\u044F\u043C", 21, 1), new Among$SII("\u043E", -1, 1), new Among$SII("\u0443", -1, 1), new Among$SII("\u0430\u0445", -1, 1), new Among$SII("\u044F\u0445", -1, 1), new Among$SII("\u0438\u044F\u0445", 26, 1), new Among$SII("\u044B", -1, 1), new Among$SII("\u044C", -1, 1), new Among$SII("\u044E", -1, 1), new Among$SII("\u0438\u044E", 30, 1), new Among$SII("\u044C\u044E", 30, 1), new Among$SII("\u044F", -1, 1), new Among$SII("\u0438\u044F", 33, 1), new Among$SII("\u044C\u044F", 33, 1) ];
+});
+$__jsx_lazy_init(RussianStemmer, "a_6", function () {
+ return [ new Among$SII("\u043E\u0441\u0442", -1, 1), new Among$SII("\u043E\u0441\u0442\u044C", -1, 1) ];
+});
+$__jsx_lazy_init(RussianStemmer, "a_7", function () {
+ return [ new Among$SII("\u0435\u0439\u0448\u0435", -1, 1), new Among$SII("\u043D", -1, 2), new Among$SII("\u0435\u0439\u0448", -1, 1), new Among$SII("\u044C", -1, 3) ];
+});
+$__jsx_lazy_init(RussianStemmer, "g_v", function () {
+ return [ 33, 65, 8, 232 ];
+});
+RomanianStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(RomanianStemmer, "methodObject", function () {
+ return new RomanianStemmer$();
+});
+$__jsx_lazy_init(RomanianStemmer, "a_0", function () {
+ return [ new Among$SII("", -1, 3), new Among$SII("I", 0, 1), new Among$SII("U", 0, 2) ];
+});
+$__jsx_lazy_init(RomanianStemmer, "a_1", function () {
+ return [ new Among$SII("ea", -1, 3), new Among$SII("a\u0163ia", -1, 7), new Among$SII("aua", -1, 2), new Among$SII("iua", -1, 4), new Among$SII("a\u0163ie", -1, 7), new Among$SII("ele", -1, 3), new Among$SII("ile", -1, 5), new Among$SII("iile", 6, 4), new Among$SII("iei", -1, 4), new Among$SII("atei", -1, 6), new Among$SII("ii", -1, 4), new Among$SII("ului", -1, 1), new Among$SII("ul", -1, 1), new Among$SII("elor", -1, 3), new Among$SII("ilor", -1, 4), new Among$SII("iilor", 14, 4) ];
+});
+$__jsx_lazy_init(RomanianStemmer, "a_2", function () {
+ return [ new Among$SII("icala", -1, 4), new Among$SII("iciva", -1, 4), new Among$SII("ativa", -1, 5), new Among$SII("itiva", -1, 6), new Among$SII("icale", -1, 4), new Among$SII("a\u0163iune", -1, 5), new Among$SII("i\u0163iune", -1, 6), new Among$SII("atoare", -1, 5), new Among$SII("itoare", -1, 6), new Among$SII("\u0103toare", -1, 5), new Among$SII("icitate", -1, 4), new Among$SII("abilitate", -1, 1), new Among$SII("ibilitate", -1, 2), new Among$SII("ivitate", -1, 3), new Among$SII("icive", -1, 4), new Among$SII("ative", -1, 5), new Among$SII("itive", -1, 6), new Among$SII("icali", -1, 4), new Among$SII("atori", -1, 5), new Among$SII("icatori", 18, 4), new Among$SII("itori", -1, 6), new Among$SII("\u0103tori", -1, 5), new Among$SII("icitati", -1, 4), new Among$SII("abilitati", -1, 1), new Among$SII("ivitati", -1, 3), new Among$SII("icivi", -1, 4), new Among$SII("ativi", -1, 5), new Among$SII("itivi", -1, 6), new Among$SII("icit\u0103i", -1, 4), new Among$SII("abilit\u0103i", -1, 1), new Among$SII("ivit\u0103i", -1, 3), new Among$SII("icit\u0103\u0163i", -1, 4), new Among$SII("abilit\u0103\u0163i", -1, 1), new Among$SII("ivit\u0103\u0163i", -1, 3), new Among$SII("ical", -1, 4), new Among$SII("ator", -1, 5), new Among$SII("icator", 35, 4), new Among$SII("itor", -1, 6), new Among$SII("\u0103tor", -1, 5), new Among$SII("iciv", -1, 4), new Among$SII("ativ", -1, 5), new Among$SII("itiv", -1, 6), new Among$SII("ical\u0103", -1, 4), new Among$SII("iciv\u0103", -1, 4), new Among$SII("ativ\u0103", -1, 5), new Among$SII("itiv\u0103", -1, 6) ];
+});
+$__jsx_lazy_init(RomanianStemmer, "a_3", function () {
+ return [ new Among$SII("ica", -1, 1), new Among$SII("abila", -1, 1), new Among$SII("ibila", -1, 1), new Among$SII("oasa", -1, 1), new Among$SII("ata", -1, 1), new Among$SII("ita", -1, 1), new Among$SII("anta", -1, 1), new Among$SII("ista", -1, 3), new Among$SII("uta", -1, 1), new Among$SII("iva", -1, 1), new Among$SII("ic", -1, 1), new Among$SII("ice", -1, 1), new Among$SII("abile", -1, 1), new Among$SII("ibile", -1, 1), new Among$SII("isme", -1, 3), new Among$SII("iune", -1, 2), new Among$SII("oase", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("itate", 17, 1), new Among$SII("ite", -1, 1), new Among$SII("ante", -1, 1), new Among$SII("iste", -1, 3), new Among$SII("ute", -1, 1), new Among$SII("ive", -1, 1), new Among$SII("ici", -1, 1), new Among$SII("abili", -1, 1), new Among$SII("ibili", -1, 1), new Among$SII("iuni", -1, 2), new Among$SII("atori", -1, 1), new Among$SII("osi", -1, 1), new Among$SII("ati", -1, 1), new Among$SII("itati", 30, 1), new Among$SII("iti", -1, 1), new Among$SII("anti", -1, 1), new Among$SII("isti", -1, 3), new Among$SII("uti", -1, 1), new Among$SII("i\u015Fti", -1, 3), new Among$SII("ivi", -1, 1), new Among$SII("it\u0103i", -1, 1), new Among$SII("o\u015Fi", -1, 1), new Among$SII("it\u0103\u0163i", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("ibil", -1, 1), new Among$SII("ism", -1, 3), new Among$SII("ator", -1, 1), new Among$SII("os", -1, 1), new Among$SII("at", -1, 1), new Among$SII("it", -1, 1), new Among$SII("ant", -1, 1), new Among$SII("ist", -1, 3), new Among$SII("ut", -1, 1), new Among$SII("iv", -1, 1), new Among$SII("ic\u0103", -1, 1), new Among$SII("abil\u0103", -1, 1), new Among$SII("ibil\u0103", -1, 1), new Among$SII("oas\u0103", -1, 1), new Among$SII("at\u0103", -1, 1), new Among$SII("it\u0103", -1, 1), new Among$SII("ant\u0103", -1, 1), new Among$SII("ist\u0103", -1, 3), new Among$SII("ut\u0103", -1, 1), new Among$SII("iv\u0103", -1, 1) ];
+});
+$__jsx_lazy_init(RomanianStemmer, "a_4", function () {
+ return [ new Among$SII("ea", -1, 1), new Among$SII("ia", -1, 1), new Among$SII("esc", -1, 1), new Among$SII("\u0103sc", -1, 1), new Among$SII("ind", -1, 1), new Among$SII("\u00E2nd", -1, 1), new Among$SII("are", -1, 1), new Among$SII("ere", -1, 1), new Among$SII("ire", -1, 1), new Among$SII("\u00E2re", -1, 1), new Among$SII("se", -1, 2), new Among$SII("ase", 10, 1), new Among$SII("sese", 10, 2), new Among$SII("ise", 10, 1), new Among$SII("use", 10, 1), new Among$SII("\u00E2se", 10, 1), new Among$SII("e\u015Fte", -1, 1), new Among$SII("\u0103\u015Fte", -1, 1), new Among$SII("eze", -1, 1), new Among$SII("ai", -1, 1), new Among$SII("eai", 19, 1), new Among$SII("iai", 19, 1), new Among$SII("sei", -1, 2), new Among$SII("e\u015Fti", -1, 1), new Among$SII("\u0103\u015Fti", -1, 1), new Among$SII("ui", -1, 1), new Among$SII("ezi", -1, 1), new Among$SII("\u00E2i", -1, 1), new Among$SII("a\u015Fi", -1, 1), new Among$SII("se\u015Fi", -1, 2), new Among$SII("ase\u015Fi", 29, 1), new Among$SII("sese\u015Fi", 29, 2), new Among$SII("ise\u015Fi", 29, 1), new Among$SII("use\u015Fi", 29, 1), new Among$SII("\u00E2se\u015Fi", 29, 1), new Among$SII("i\u015Fi", -1, 1), new Among$SII("u\u015Fi", -1, 1), new Among$SII("\u00E2\u015Fi", -1, 1), new Among$SII("a\u0163i", -1, 2), new Among$SII("ea\u0163i", 38, 1), new Among$SII("ia\u0163i", 38, 1), new Among$SII("e\u0163i", -1, 2), new Among$SII("i\u0163i", -1, 2), new Among$SII("\u00E2\u0163i", -1, 2), new Among$SII("ar\u0103\u0163i", -1, 1), new Among$SII("ser\u0103\u0163i", -1, 2), new Among$SII("aser\u0103\u0163i", 45, 1), new Among$SII("seser\u0103\u0163i", 45, 2), new Among$SII("iser\u0103\u0163i", 45, 1), new Among$SII("user\u0103\u0163i", 45, 1), new Among$SII("\u00E2ser\u0103\u0163i", 45, 1), new Among$SII("ir\u0103\u0163i", -1, 1), new Among$SII("ur\u0103\u0163i", -1, 1), new Among$SII("\u00E2r\u0103\u0163i", -1, 1), new Among$SII("am", -1, 1), new Among$SII("eam", 54, 1), new Among$SII("iam", 54, 1), new Among$SII("em", -1, 2), new Among$SII("asem", 57, 1), new Among$SII("sesem", 57, 2), new Among$SII("isem", 57, 1), new Among$SII("usem", 57, 1), new Among$SII("\u00E2sem", 57, 1), new Among$SII("im", -1, 2), new Among$SII("\u00E2m", -1, 2), new Among$SII("\u0103m", -1, 2), new Among$SII("ar\u0103m", 65, 1), new Among$SII("ser\u0103m", 65, 2), new Among$SII("aser\u0103m", 67, 1), new Among$SII("seser\u0103m", 67, 2), new Among$SII("iser\u0103m", 67, 1), new Among$SII("user\u0103m", 67, 1), new Among$SII("\u00E2ser\u0103m", 67, 1), new Among$SII("ir\u0103m", 65, 1), new Among$SII("ur\u0103m", 65, 1), new Among$SII("\u00E2r\u0103m", 65, 1), new Among$SII("au", -1, 1), new Among$SII("eau", 76, 1), new Among$SII("iau", 76, 1), new Among$SII("indu", -1, 1), new Among$SII("\u00E2ndu", -1, 1), new Among$SII("ez", -1, 1), new Among$SII("easc\u0103", -1, 1), new Among$SII("ar\u0103", -1, 1), new Among$SII("ser\u0103", -1, 2), new Among$SII("aser\u0103", 84, 1), new Among$SII("seser\u0103", 84, 2), new Among$SII("iser\u0103", 84, 1), new Among$SII("user\u0103", 84, 1), new Among$SII("\u00E2ser\u0103", 84, 1), new Among$SII("ir\u0103", -1, 1), new Among$SII("ur\u0103", -1, 1), new Among$SII("\u00E2r\u0103", -1, 1), new Among$SII("eaz\u0103", -1, 1) ];
+});
+$__jsx_lazy_init(RomanianStemmer, "a_5", function () {
+ return [ new Among$SII("a", -1, 1), new Among$SII("e", -1, 1), new Among$SII("ie", 1, 1), new Among$SII("i", -1, 1), new Among$SII("\u0103", -1, 1) ];
+});
+$__jsx_lazy_init(RomanianStemmer, "g_v", function () {
+ return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 32, 0, 0, 4 ];
+});
+PortugueseStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(PortugueseStemmer, "methodObject", function () {
+ return new PortugueseStemmer$();
+});
+$__jsx_lazy_init(PortugueseStemmer, "a_0", function () {
+ return [ new Among$SII("", -1, 3), new Among$SII("\u00E3", 0, 1), new Among$SII("\u00F5", 0, 2) ];
+});
+$__jsx_lazy_init(PortugueseStemmer, "a_1", function () {
+ return [ new Among$SII("", -1, 3), new Among$SII("a~", 0, 1), new Among$SII("o~", 0, 2) ];
+});
+$__jsx_lazy_init(PortugueseStemmer, "a_2", function () {
+ return [ new Among$SII("ic", -1, -1), new Among$SII("ad", -1, -1), new Among$SII("os", -1, -1), new Among$SII("iv", -1, 1) ];
+});
+$__jsx_lazy_init(PortugueseStemmer, "a_3", function () {
+ return [ new Among$SII("ante", -1, 1), new Among$SII("avel", -1, 1), new Among$SII("\u00EDvel", -1, 1) ];
+});
+$__jsx_lazy_init(PortugueseStemmer, "a_4", function () {
+ return [ new Among$SII("ic", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 1) ];
+});
+$__jsx_lazy_init(PortugueseStemmer, "a_5", function () {
+ return [ new Among$SII("ica", -1, 1), new Among$SII("\u00E2ncia", -1, 1), new Among$SII("\u00EAncia", -1, 4), new Among$SII("ira", -1, 9), new Among$SII("adora", -1, 1), new Among$SII("osa", -1, 1), new Among$SII("ista", -1, 1), new Among$SII("iva", -1, 8), new Among$SII("eza", -1, 1), new Among$SII("log\u00EDa", -1, 2), new Among$SII("idade", -1, 7), new Among$SII("ante", -1, 1), new Among$SII("mente", -1, 6), new Among$SII("amente", 12, 5), new Among$SII("\u00E1vel", -1, 1), new Among$SII("\u00EDvel", -1, 1), new Among$SII("uci\u00F3n", -1, 3), new Among$SII("ico", -1, 1), new Among$SII("ismo", -1, 1), new Among$SII("oso", -1, 1), new Among$SII("amento", -1, 1), new Among$SII("imento", -1, 1), new Among$SII("ivo", -1, 8), new Among$SII("a\u00E7a~o", -1, 1), new Among$SII("ador", -1, 1), new Among$SII("icas", -1, 1), new Among$SII("\u00EAncias", -1, 4), new Among$SII("iras", -1, 9), new Among$SII("adoras", -1, 1), new Among$SII("osas", -1, 1), new Among$SII("istas", -1, 1), new Among$SII("ivas", -1, 8), new Among$SII("ezas", -1, 1), new Among$SII("log\u00EDas", -1, 2), new Among$SII("idades", -1, 7), new Among$SII("uciones", -1, 3), new Among$SII("adores", -1, 1), new Among$SII("antes", -1, 1), new Among$SII("a\u00E7o~es", -1, 1), new Among$SII("icos", -1, 1), new Among$SII("ismos", -1, 1), new Among$SII("osos", -1, 1), new Among$SII("amentos", -1, 1), new Among$SII("imentos", -1, 1), new Among$SII("ivos", -1, 8) ];
+});
+$__jsx_lazy_init(PortugueseStemmer, "a_6", function () {
+ return [ new Among$SII("ada", -1, 1), new Among$SII("ida", -1, 1), new Among$SII("ia", -1, 1), new Among$SII("aria", 2, 1), new Among$SII("eria", 2, 1), new Among$SII("iria", 2, 1), new Among$SII("ara", -1, 1), new Among$SII("era", -1, 1), new Among$SII("ira", -1, 1), new Among$SII("ava", -1, 1), new Among$SII("asse", -1, 1), new Among$SII("esse", -1, 1), new Among$SII("isse", -1, 1), new Among$SII("aste", -1, 1), new Among$SII("este", -1, 1), new Among$SII("iste", -1, 1), new Among$SII("ei", -1, 1), new Among$SII("arei", 16, 1), new Among$SII("erei", 16, 1), new Among$SII("irei", 16, 1), new Among$SII("am", -1, 1), new Among$SII("iam", 20, 1), new Among$SII("ariam", 21, 1), new Among$SII("eriam", 21, 1), new Among$SII("iriam", 21, 1), new Among$SII("aram", 20, 1), new Among$SII("eram", 20, 1), new Among$SII("iram", 20, 1), new Among$SII("avam", 20, 1), new Among$SII("em", -1, 1), new Among$SII("arem", 29, 1), new Among$SII("erem", 29, 1), new Among$SII("irem", 29, 1), new Among$SII("assem", 29, 1), new Among$SII("essem", 29, 1), new Among$SII("issem", 29, 1), new Among$SII("ado", -1, 1), new Among$SII("ido", -1, 1), new Among$SII("ando", -1, 1), new Among$SII("endo", -1, 1), new Among$SII("indo", -1, 1), new Among$SII("ara~o", -1, 1), new Among$SII("era~o", -1, 1), new Among$SII("ira~o", -1, 1), new Among$SII("ar", -1, 1), new Among$SII("er", -1, 1), new Among$SII("ir", -1, 1), new Among$SII("as", -1, 1), new Among$SII("adas", 47, 1), new Among$SII("idas", 47, 1), new Among$SII("ias", 47, 1), new Among$SII("arias", 50, 1), new Among$SII("erias", 50, 1), new Among$SII("irias", 50, 1), new Among$SII("aras", 47, 1), new Among$SII("eras", 47, 1), new Among$SII("iras", 47, 1), new Among$SII("avas", 47, 1), new Among$SII("es", -1, 1), new Among$SII("ardes", 58, 1), new Among$SII("erdes", 58, 1), new Among$SII("irdes", 58, 1), new Among$SII("ares", 58, 1), new Among$SII("eres", 58, 1), new Among$SII("ires", 58, 1), new Among$SII("asses", 58, 1), new Among$SII("esses", 58, 1), new Among$SII("isses", 58, 1), new Among$SII("astes", 58, 1), new Among$SII("estes", 58, 1), new Among$SII("istes", 58, 1), new Among$SII("is", -1, 1), new Among$SII("ais", 71, 1), new Among$SII("eis", 71, 1), new Among$SII("areis", 73, 1), new Among$SII("ereis", 73, 1), new Among$SII("ireis", 73, 1), new Among$SII("\u00E1reis", 73, 1), new Among$SII("\u00E9reis", 73, 1), new Among$SII("\u00EDreis", 73, 1), new Among$SII("\u00E1sseis", 73, 1), new Among$SII("\u00E9sseis", 73, 1), new Among$SII("\u00EDsseis", 73, 1), new Among$SII("\u00E1veis", 73, 1), new Among$SII("\u00EDeis", 73, 1), new Among$SII("ar\u00EDeis", 84, 1), new Among$SII("er\u00EDeis", 84, 1), new Among$SII("ir\u00EDeis", 84, 1), new Among$SII("ados", -1, 1), new Among$SII("idos", -1, 1), new Among$SII("amos", -1, 1), new Among$SII("\u00E1ramos", 90, 1), new Among$SII("\u00E9ramos", 90, 1), new Among$SII("\u00EDramos", 90, 1), new Among$SII("\u00E1vamos", 90, 1), new Among$SII("\u00EDamos", 90, 1), new Among$SII("ar\u00EDamos", 95, 1), new Among$SII("er\u00EDamos", 95, 1), new Among$SII("ir\u00EDamos", 95, 1), new Among$SII("emos", -1, 1), new Among$SII("aremos", 99, 1), new Among$SII("eremos", 99, 1), new Among$SII("iremos", 99, 1), new Among$SII("\u00E1ssemos", 99, 1), new Among$SII("\u00EAssemos", 99, 1), new Among$SII("\u00EDssemos", 99, 1), new Among$SII("imos", -1, 1), new Among$SII("armos", -1, 1), new Among$SII("ermos", -1, 1), new Among$SII("irmos", -1, 1), new Among$SII("\u00E1mos", -1, 1), new Among$SII("ar\u00E1s", -1, 1), new Among$SII("er\u00E1s", -1, 1), new Among$SII("ir\u00E1s", -1, 1), new Among$SII("eu", -1, 1), new Among$SII("iu", -1, 1), new Among$SII("ou", -1, 1), new Among$SII("ar\u00E1", -1, 1), new Among$SII("er\u00E1", -1, 1), new Among$SII("ir\u00E1", -1, 1) ];
+});
+$__jsx_lazy_init(PortugueseStemmer, "a_7", function () {
+ return [ new Among$SII("a", -1, 1), new Among$SII("i", -1, 1), new Among$SII("o", -1, 1), new Among$SII("os", -1, 1), new Among$SII("\u00E1", -1, 1), new Among$SII("\u00ED", -1, 1), new Among$SII("\u00F3", -1, 1) ];
+});
+$__jsx_lazy_init(PortugueseStemmer, "a_8", function () {
+ return [ new Among$SII("e", -1, 1), new Among$SII("\u00E7", -1, 2), new Among$SII("\u00E9", -1, 1), new Among$SII("\u00EA", -1, 1) ];
+});
+$__jsx_lazy_init(PortugueseStemmer, "g_v", function () {
+ return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 19, 12, 2 ];
+});
+PorterStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(PorterStemmer, "methodObject", function () {
+ return new PorterStemmer$();
+});
+$__jsx_lazy_init(PorterStemmer, "a_0", function () {
+ return [ new Among$SII("s", -1, 3), new Among$SII("ies", 0, 2), new Among$SII("sses", 0, 1), new Among$SII("ss", 0, -1) ];
+});
+$__jsx_lazy_init(PorterStemmer, "a_1", function () {
+ return [ new Among$SII("", -1, 3), new Among$SII("bb", 0, 2), new Among$SII("dd", 0, 2), new Among$SII("ff", 0, 2), new Among$SII("gg", 0, 2), new Among$SII("bl", 0, 1), new Among$SII("mm", 0, 2), new Among$SII("nn", 0, 2), new Among$SII("pp", 0, 2), new Among$SII("rr", 0, 2), new Among$SII("at", 0, 1), new Among$SII("tt", 0, 2), new Among$SII("iz", 0, 1) ];
+});
+$__jsx_lazy_init(PorterStemmer, "a_2", function () {
+ return [ new Among$SII("ed", -1, 2), new Among$SII("eed", 0, 1), new Among$SII("ing", -1, 2) ];
+});
+$__jsx_lazy_init(PorterStemmer, "a_3", function () {
+ return [ new Among$SII("anci", -1, 3), new Among$SII("enci", -1, 2), new Among$SII("abli", -1, 4), new Among$SII("eli", -1, 6), new Among$SII("alli", -1, 9), new Among$SII("ousli", -1, 12), new Among$SII("entli", -1, 5), new Among$SII("aliti", -1, 10), new Among$SII("biliti", -1, 14), new Among$SII("iviti", -1, 13), new Among$SII("tional", -1, 1), new Among$SII("ational", 10, 8), new Among$SII("alism", -1, 10), new Among$SII("ation", -1, 8), new Among$SII("ization", 13, 7), new Among$SII("izer", -1, 7), new Among$SII("ator", -1, 8), new Among$SII("iveness", -1, 13), new Among$SII("fulness", -1, 11), new Among$SII("ousness", -1, 12) ];
+});
+$__jsx_lazy_init(PorterStemmer, "a_4", function () {
+ return [ new Among$SII("icate", -1, 2), new Among$SII("ative", -1, 3), new Among$SII("alize", -1, 1), new Among$SII("iciti", -1, 2), new Among$SII("ical", -1, 2), new Among$SII("ful", -1, 3), new Among$SII("ness", -1, 3) ];
+});
+$__jsx_lazy_init(PorterStemmer, "a_5", function () {
+ return [ new Among$SII("ic", -1, 1), new Among$SII("ance", -1, 1), new Among$SII("ence", -1, 1), new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("ive", -1, 1), new Among$SII("ize", -1, 1), new Among$SII("iti", -1, 1), new Among$SII("al", -1, 1), new Among$SII("ism", -1, 1), new Among$SII("ion", -1, 2), new Among$SII("er", -1, 1), new Among$SII("ous", -1, 1), new Among$SII("ant", -1, 1), new Among$SII("ent", -1, 1), new Among$SII("ment", 15, 1), new Among$SII("ement", 16, 1), new Among$SII("ou", -1, 1) ];
+});
+$__jsx_lazy_init(PorterStemmer, "g_v", function () {
+ return [ 17, 65, 16, 1 ];
+});
+$__jsx_lazy_init(PorterStemmer, "g_v_WXY", function () {
+ return [ 1, 17, 65, 208, 1 ];
+});
+NorwegianStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(NorwegianStemmer, "methodObject", function () {
+ return new NorwegianStemmer$();
+});
+$__jsx_lazy_init(NorwegianStemmer, "a_0", function () {
+ return [ new Among$SII("a", -1, 1), new Among$SII("e", -1, 1), new Among$SII("ede", 1, 1), new Among$SII("ande", 1, 1), new Among$SII("ende", 1, 1), new Among$SII("ane", 1, 1), new Among$SII("ene", 1, 1), new Among$SII("hetene", 6, 1), new Among$SII("erte", 1, 3), new Among$SII("en", -1, 1), new Among$SII("heten", 9, 1), new Among$SII("ar", -1, 1), new Among$SII("er", -1, 1), new Among$SII("heter", 12, 1), new Among$SII("s", -1, 2), new Among$SII("as", 14, 1), new Among$SII("es", 14, 1), new Among$SII("edes", 16, 1), new Among$SII("endes", 16, 1), new Among$SII("enes", 16, 1), new Among$SII("hetenes", 19, 1), new Among$SII("ens", 14, 1), new Among$SII("hetens", 21, 1), new Among$SII("ers", 14, 1), new Among$SII("ets", 14, 1), new Among$SII("et", -1, 1), new Among$SII("het", 25, 1), new Among$SII("ert", -1, 3), new Among$SII("ast", -1, 1) ];
+});
+$__jsx_lazy_init(NorwegianStemmer, "a_1", function () {
+ return [ new Among$SII("dt", -1, -1), new Among$SII("vt", -1, -1) ];
+});
+$__jsx_lazy_init(NorwegianStemmer, "a_2", function () {
+ return [ new Among$SII("leg", -1, 1), new Among$SII("eleg", 0, 1), new Among$SII("ig", -1, 1), new Among$SII("eig", 2, 1), new Among$SII("lig", 2, 1), new Among$SII("elig", 4, 1), new Among$SII("els", -1, 1), new Among$SII("lov", -1, 1), new Among$SII("elov", 7, 1), new Among$SII("slov", 7, 1), new Among$SII("hetslov", 9, 1) ];
+});
+$__jsx_lazy_init(NorwegianStemmer, "g_v", function () {
+ return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 ];
+});
+$__jsx_lazy_init(NorwegianStemmer, "g_s_ending", function () {
+ return [ 119, 125, 149, 1 ];
+});
+ItalianStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(ItalianStemmer, "methodObject", function () {
+ return new ItalianStemmer$();
+});
+$__jsx_lazy_init(ItalianStemmer, "a_0", function () {
+ return [ new Among$SII("", -1, 7), new Among$SII("qu", 0, 6), new Among$SII("\u00E1", 0, 1), new Among$SII("\u00E9", 0, 2), new Among$SII("\u00ED", 0, 3), new Among$SII("\u00F3", 0, 4), new Among$SII("\u00FA", 0, 5) ];
+});
+$__jsx_lazy_init(ItalianStemmer, "a_1", function () {
+ return [ new Among$SII("", -1, 3), new Among$SII("I", 0, 1), new Among$SII("U", 0, 2) ];
+});
+$__jsx_lazy_init(ItalianStemmer, "a_2", function () {
+ return [ new Among$SII("la", -1, -1), new Among$SII("cela", 0, -1), new Among$SII("gliela", 0, -1), new Among$SII("mela", 0, -1), new Among$SII("tela", 0, -1), new Among$SII("vela", 0, -1), new Among$SII("le", -1, -1), new Among$SII("cele", 6, -1), new Among$SII("gliele", 6, -1), new Among$SII("mele", 6, -1), new Among$SII("tele", 6, -1), new Among$SII("vele", 6, -1), new Among$SII("ne", -1, -1), new Among$SII("cene", 12, -1), new Among$SII("gliene", 12, -1), new Among$SII("mene", 12, -1), new Among$SII("sene", 12, -1), new Among$SII("tene", 12, -1), new Among$SII("vene", 12, -1), new Among$SII("ci", -1, -1), new Among$SII("li", -1, -1), new Among$SII("celi", 20, -1), new Among$SII("glieli", 20, -1), new Among$SII("meli", 20, -1), new Among$SII("teli", 20, -1), new Among$SII("veli", 20, -1), new Among$SII("gli", 20, -1), new Among$SII("mi", -1, -1), new Among$SII("si", -1, -1), new Among$SII("ti", -1, -1), new Among$SII("vi", -1, -1), new Among$SII("lo", -1, -1), new Among$SII("celo", 31, -1), new Among$SII("glielo", 31, -1), new Among$SII("melo", 31, -1), new Among$SII("telo", 31, -1), new Among$SII("velo", 31, -1) ];
+});
+$__jsx_lazy_init(ItalianStemmer, "a_3", function () {
+ return [ new Among$SII("ando", -1, 1), new Among$SII("endo", -1, 1), new Among$SII("ar", -1, 2), new Among$SII("er", -1, 2), new Among$SII("ir", -1, 2) ];
+});
+$__jsx_lazy_init(ItalianStemmer, "a_4", function () {
+ return [ new Among$SII("ic", -1, -1), new Among$SII("abil", -1, -1), new Among$SII("os", -1, -1), new Among$SII("iv", -1, 1) ];
+});
+$__jsx_lazy_init(ItalianStemmer, "a_5", function () {
+ return [ new Among$SII("ic", -1, 1), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 1) ];
+});
+$__jsx_lazy_init(ItalianStemmer, "a_6", function () {
+ return [ new Among$SII("ica", -1, 1), new Among$SII("logia", -1, 3), new Among$SII("osa", -1, 1), new Among$SII("ista", -1, 1), new Among$SII("iva", -1, 9), new Among$SII("anza", -1, 1), new Among$SII("enza", -1, 5), new Among$SII("ice", -1, 1), new Among$SII("atrice", 7, 1), new Among$SII("iche", -1, 1), new Among$SII("logie", -1, 3), new Among$SII("abile", -1, 1), new Among$SII("ibile", -1, 1), new Among$SII("usione", -1, 4), new Among$SII("azione", -1, 2), new Among$SII("uzione", -1, 4), new Among$SII("atore", -1, 2), new Among$SII("ose", -1, 1), new Among$SII("ante", -1, 1), new Among$SII("mente", -1, 1), new Among$SII("amente", 19, 7), new Among$SII("iste", -1, 1), new Among$SII("ive", -1, 9), new Among$SII("anze", -1, 1), new Among$SII("enze", -1, 5), new Among$SII("ici", -1, 1), new Among$SII("atrici", 25, 1), new Among$SII("ichi", -1, 1), new Among$SII("abili", -1, 1), new Among$SII("ibili", -1, 1), new Among$SII("ismi", -1, 1), new Among$SII("usioni", -1, 4), new Among$SII("azioni", -1, 2), new Among$SII("uzioni", -1, 4), new Among$SII("atori", -1, 2), new Among$SII("osi", -1, 1), new Among$SII("anti", -1, 1), new Among$SII("amenti", -1, 6), new Among$SII("imenti", -1, 6), new Among$SII("isti", -1, 1), new Among$SII("ivi", -1, 9), new Among$SII("ico", -1, 1), new Among$SII("ismo", -1, 1), new Among$SII("oso", -1, 1), new Among$SII("amento", -1, 6), new Among$SII("imento", -1, 6), new Among$SII("ivo", -1, 9), new Among$SII("it\u00E0", -1, 8), new Among$SII("ist\u00E0", -1, 1), new Among$SII("ist\u00E8", -1, 1), new Among$SII("ist\u00EC", -1, 1) ];
+});
+$__jsx_lazy_init(ItalianStemmer, "a_7", function () {
+ return [ new Among$SII("isca", -1, 1), new Among$SII("enda", -1, 1), new Among$SII("ata", -1, 1), new Among$SII("ita", -1, 1), new Among$SII("uta", -1, 1), new Among$SII("ava", -1, 1), new Among$SII("eva", -1, 1), new Among$SII("iva", -1, 1), new Among$SII("erebbe", -1, 1), new Among$SII("irebbe", -1, 1), new Among$SII("isce", -1, 1), new Among$SII("ende", -1, 1), new Among$SII("are", -1, 1), new Among$SII("ere", -1, 1), new Among$SII("ire", -1, 1), new Among$SII("asse", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("avate", 16, 1), new Among$SII("evate", 16, 1), new Among$SII("ivate", 16, 1), new Among$SII("ete", -1, 1), new Among$SII("erete", 20, 1), new Among$SII("irete", 20, 1), new Among$SII("ite", -1, 1), new Among$SII("ereste", -1, 1), new Among$SII("ireste", -1, 1), new Among$SII("ute", -1, 1), new Among$SII("erai", -1, 1), new Among$SII("irai", -1, 1), new Among$SII("isci", -1, 1), new Among$SII("endi", -1, 1), new Among$SII("erei", -1, 1), new Among$SII("irei", -1, 1), new Among$SII("assi", -1, 1), new Among$SII("ati", -1, 1), new Among$SII("iti", -1, 1), new Among$SII("eresti", -1, 1), new Among$SII("iresti", -1, 1), new Among$SII("uti", -1, 1), new Among$SII("avi", -1, 1), new Among$SII("evi", -1, 1), new Among$SII("ivi", -1, 1), new Among$SII("isco", -1, 1), new Among$SII("ando", -1, 1), new Among$SII("endo", -1, 1), new Among$SII("Yamo", -1, 1), new Among$SII("iamo", -1, 1), new Among$SII("avamo", -1, 1), new Among$SII("evamo", -1, 1), new Among$SII("ivamo", -1, 1), new Among$SII("eremo", -1, 1), new Among$SII("iremo", -1, 1), new Among$SII("assimo", -1, 1), new Among$SII("ammo", -1, 1), new Among$SII("emmo", -1, 1), new Among$SII("eremmo", 54, 1), new Among$SII("iremmo", 54, 1), new Among$SII("immo", -1, 1), new Among$SII("ano", -1, 1), new Among$SII("iscano", 58, 1), new Among$SII("avano", 58, 1), new Among$SII("evano", 58, 1), new Among$SII("ivano", 58, 1), new Among$SII("eranno", -1, 1), new Among$SII("iranno", -1, 1), new Among$SII("ono", -1, 1), new Among$SII("iscono", 65, 1), new Among$SII("arono", 65, 1), new Among$SII("erono", 65, 1), new Among$SII("irono", 65, 1), new Among$SII("erebbero", -1, 1), new Among$SII("irebbero", -1, 1), new Among$SII("assero", -1, 1), new Among$SII("essero", -1, 1), new Among$SII("issero", -1, 1), new Among$SII("ato", -1, 1), new Among$SII("ito", -1, 1), new Among$SII("uto", -1, 1), new Among$SII("avo", -1, 1), new Among$SII("evo", -1, 1), new Among$SII("ivo", -1, 1), new Among$SII("ar", -1, 1), new Among$SII("ir", -1, 1), new Among$SII("er\u00E0", -1, 1), new Among$SII("ir\u00E0", -1, 1), new Among$SII("er\u00F2", -1, 1), new Among$SII("ir\u00F2", -1, 1) ];
+});
+$__jsx_lazy_init(ItalianStemmer, "g_v", function () {
+ return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2, 1 ];
+});
+$__jsx_lazy_init(ItalianStemmer, "g_AEIO", function () {
+ return [ 17, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 8, 2 ];
+});
+$__jsx_lazy_init(ItalianStemmer, "g_CG", function () {
+ return [ 17 ];
+});
+HungarianStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(HungarianStemmer, "methodObject", function () {
+ return new HungarianStemmer$();
+});
+$__jsx_lazy_init(HungarianStemmer, "a_0", function () {
+ return [ new Among$SII("cs", -1, -1), new Among$SII("dzs", -1, -1), new Among$SII("gy", -1, -1), new Among$SII("ly", -1, -1), new Among$SII("ny", -1, -1), new Among$SII("sz", -1, -1), new Among$SII("ty", -1, -1), new Among$SII("zs", -1, -1) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_1", function () {
+ return [ new Among$SII("\u00E1", -1, 1), new Among$SII("\u00E9", -1, 2) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_2", function () {
+ return [ new Among$SII("bb", -1, -1), new Among$SII("cc", -1, -1), new Among$SII("dd", -1, -1), new Among$SII("ff", -1, -1), new Among$SII("gg", -1, -1), new Among$SII("jj", -1, -1), new Among$SII("kk", -1, -1), new Among$SII("ll", -1, -1), new Among$SII("mm", -1, -1), new Among$SII("nn", -1, -1), new Among$SII("pp", -1, -1), new Among$SII("rr", -1, -1), new Among$SII("ccs", -1, -1), new Among$SII("ss", -1, -1), new Among$SII("zzs", -1, -1), new Among$SII("tt", -1, -1), new Among$SII("vv", -1, -1), new Among$SII("ggy", -1, -1), new Among$SII("lly", -1, -1), new Among$SII("nny", -1, -1), new Among$SII("tty", -1, -1), new Among$SII("ssz", -1, -1), new Among$SII("zz", -1, -1) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_3", function () {
+ return [ new Among$SII("al", -1, 1), new Among$SII("el", -1, 2) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_4", function () {
+ return [ new Among$SII("ba", -1, -1), new Among$SII("ra", -1, -1), new Among$SII("be", -1, -1), new Among$SII("re", -1, -1), new Among$SII("ig", -1, -1), new Among$SII("nak", -1, -1), new Among$SII("nek", -1, -1), new Among$SII("val", -1, -1), new Among$SII("vel", -1, -1), new Among$SII("ul", -1, -1), new Among$SII("n\u00E1l", -1, -1), new Among$SII("n\u00E9l", -1, -1), new Among$SII("b\u00F3l", -1, -1), new Among$SII("r\u00F3l", -1, -1), new Among$SII("t\u00F3l", -1, -1), new Among$SII("b\u00F5l", -1, -1), new Among$SII("r\u00F5l", -1, -1), new Among$SII("t\u00F5l", -1, -1), new Among$SII("\u00FCl", -1, -1), new Among$SII("n", -1, -1), new Among$SII("an", 19, -1), new Among$SII("ban", 20, -1), new Among$SII("en", 19, -1), new Among$SII("ben", 22, -1), new Among$SII("k\u00E9ppen", 22, -1), new Among$SII("on", 19, -1), new Among$SII("\u00F6n", 19, -1), new Among$SII("k\u00E9pp", -1, -1), new Among$SII("kor", -1, -1), new Among$SII("t", -1, -1), new Among$SII("at", 29, -1), new Among$SII("et", 29, -1), new Among$SII("k\u00E9nt", 29, -1), new Among$SII("ank\u00E9nt", 32, -1), new Among$SII("enk\u00E9nt", 32, -1), new Among$SII("onk\u00E9nt", 32, -1), new Among$SII("ot", 29, -1), new Among$SII("\u00E9rt", 29, -1), new Among$SII("\u00F6t", 29, -1), new Among$SII("hez", -1, -1), new Among$SII("hoz", -1, -1), new Among$SII("h\u00F6z", -1, -1), new Among$SII("v\u00E1", -1, -1), new Among$SII("v\u00E9", -1, -1) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_5", function () {
+ return [ new Among$SII("\u00E1n", -1, 2), new Among$SII("\u00E9n", -1, 1), new Among$SII("\u00E1nk\u00E9nt", -1, 3) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_6", function () {
+ return [ new Among$SII("stul", -1, 2), new Among$SII("astul", 0, 1), new Among$SII("\u00E1stul", 0, 3), new Among$SII("st\u00FCl", -1, 2), new Among$SII("est\u00FCl", 3, 1), new Among$SII("\u00E9st\u00FCl", 3, 4) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_7", function () {
+ return [ new Among$SII("\u00E1", -1, 1), new Among$SII("\u00E9", -1, 2) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_8", function () {
+ return [ new Among$SII("k", -1, 7), new Among$SII("ak", 0, 4), new Among$SII("ek", 0, 6), new Among$SII("ok", 0, 5), new Among$SII("\u00E1k", 0, 1), new Among$SII("\u00E9k", 0, 2), new Among$SII("\u00F6k", 0, 3) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_9", function () {
+ return [ new Among$SII("\u00E9i", -1, 7), new Among$SII("\u00E1\u00E9i", 0, 6), new Among$SII("\u00E9\u00E9i", 0, 5), new Among$SII("\u00E9", -1, 9), new Among$SII("k\u00E9", 3, 4), new Among$SII("ak\u00E9", 4, 1), new Among$SII("ek\u00E9", 4, 1), new Among$SII("ok\u00E9", 4, 1), new Among$SII("\u00E1k\u00E9", 4, 3), new Among$SII("\u00E9k\u00E9", 4, 2), new Among$SII("\u00F6k\u00E9", 4, 1), new Among$SII("\u00E9\u00E9", 3, 8) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_10", function () {
+ return [ new Among$SII("a", -1, 18), new Among$SII("ja", 0, 17), new Among$SII("d", -1, 16), new Among$SII("ad", 2, 13), new Among$SII("ed", 2, 13), new Among$SII("od", 2, 13), new Among$SII("\u00E1d", 2, 14), new Among$SII("\u00E9d", 2, 15), new Among$SII("\u00F6d", 2, 13), new Among$SII("e", -1, 18), new Among$SII("je", 9, 17), new Among$SII("nk", -1, 4), new Among$SII("unk", 11, 1), new Among$SII("\u00E1nk", 11, 2), new Among$SII("\u00E9nk", 11, 3), new Among$SII("\u00FCnk", 11, 1), new Among$SII("uk", -1, 8), new Among$SII("juk", 16, 7), new Among$SII("\u00E1juk", 17, 5), new Among$SII("\u00FCk", -1, 8), new Among$SII("j\u00FCk", 19, 7), new Among$SII("\u00E9j\u00FCk", 20, 6), new Among$SII("m", -1, 12), new Among$SII("am", 22, 9), new Among$SII("em", 22, 9), new Among$SII("om", 22, 9), new Among$SII("\u00E1m", 22, 10), new Among$SII("\u00E9m", 22, 11), new Among$SII("o", -1, 18), new Among$SII("\u00E1", -1, 19), new Among$SII("\u00E9", -1, 20) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "a_11", function () {
+ return [ new Among$SII("id", -1, 10), new Among$SII("aid", 0, 9), new Among$SII("jaid", 1, 6), new Among$SII("eid", 0, 9), new Among$SII("jeid", 3, 6), new Among$SII("\u00E1id", 0, 7), new Among$SII("\u00E9id", 0, 8), new Among$SII("i", -1, 15), new Among$SII("ai", 7, 14), new Among$SII("jai", 8, 11), new Among$SII("ei", 7, 14), new Among$SII("jei", 10, 11), new Among$SII("\u00E1i", 7, 12), new Among$SII("\u00E9i", 7, 13), new Among$SII("itek", -1, 24), new Among$SII("eitek", 14, 21), new Among$SII("jeitek", 15, 20), new Among$SII("\u00E9itek", 14, 23), new Among$SII("ik", -1, 29), new Among$SII("aik", 18, 26), new Among$SII("jaik", 19, 25), new Among$SII("eik", 18, 26), new Among$SII("jeik", 21, 25), new Among$SII("\u00E1ik", 18, 27), new Among$SII("\u00E9ik", 18, 28), new Among$SII("ink", -1, 20), new Among$SII("aink", 25, 17), new Among$SII("jaink", 26, 16), new Among$SII("eink", 25, 17), new Among$SII("jeink", 28, 16), new Among$SII("\u00E1ink", 25, 18), new Among$SII("\u00E9ink", 25, 19), new Among$SII("aitok", -1, 21), new Among$SII("jaitok", 32, 20), new Among$SII("\u00E1itok", -1, 22), new Among$SII("im", -1, 5), new Among$SII("aim", 35, 4), new Among$SII("jaim", 36, 1), new Among$SII("eim", 35, 4), new Among$SII("jeim", 38, 1), new Among$SII("\u00E1im", 35, 2), new Among$SII("\u00E9im", 35, 3) ];
+});
+$__jsx_lazy_init(HungarianStemmer, "g_v", function () {
+ return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 17, 52, 14 ];
+});
+GermanStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(GermanStemmer, "methodObject", function () {
+ return new GermanStemmer$();
+});
+$__jsx_lazy_init(GermanStemmer, "a_0", function () {
+ return [ new Among$SII("", -1, 6), new Among$SII("U", 0, 2), new Among$SII("Y", 0, 1), new Among$SII("\u00E4", 0, 3), new Among$SII("\u00F6", 0, 4), new Among$SII("\u00FC", 0, 5) ];
+});
+$__jsx_lazy_init(GermanStemmer, "a_1", function () {
+ return [ new Among$SII("e", -1, 2), new Among$SII("em", -1, 1), new Among$SII("en", -1, 2), new Among$SII("ern", -1, 1), new Among$SII("er", -1, 1), new Among$SII("s", -1, 3), new Among$SII("es", 5, 2) ];
+});
+$__jsx_lazy_init(GermanStemmer, "a_2", function () {
+ return [ new Among$SII("en", -1, 1), new Among$SII("er", -1, 1), new Among$SII("st", -1, 2), new Among$SII("est", 2, 1) ];
+});
+$__jsx_lazy_init(GermanStemmer, "a_3", function () {
+ return [ new Among$SII("ig", -1, 1), new Among$SII("lich", -1, 1) ];
+});
+$__jsx_lazy_init(GermanStemmer, "a_4", function () {
+ return [ new Among$SII("end", -1, 1), new Among$SII("ig", -1, 2), new Among$SII("ung", -1, 1), new Among$SII("lich", -1, 3), new Among$SII("isch", -1, 2), new Among$SII("ik", -1, 2), new Among$SII("heit", -1, 3), new Among$SII("keit", -1, 4) ];
+});
+$__jsx_lazy_init(GermanStemmer, "g_v", function () {
+ return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32, 8 ];
+});
+$__jsx_lazy_init(GermanStemmer, "g_s_ending", function () {
+ return [ 117, 30, 5 ];
+});
+$__jsx_lazy_init(GermanStemmer, "g_st_ending", function () {
+ return [ 117, 30, 4 ];
+});
+FrenchStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(FrenchStemmer, "methodObject", function () {
+ return new FrenchStemmer$();
+});
+$__jsx_lazy_init(FrenchStemmer, "a_0", function () {
+ return [ new Among$SII("col", -1, -1), new Among$SII("par", -1, -1), new Among$SII("tap", -1, -1) ];
+});
+$__jsx_lazy_init(FrenchStemmer, "a_1", function () {
+ return [ new Among$SII("", -1, 4), new Among$SII("I", 0, 1), new Among$SII("U", 0, 2), new Among$SII("Y", 0, 3) ];
+});
+$__jsx_lazy_init(FrenchStemmer, "a_2", function () {
+ return [ new Among$SII("iqU", -1, 3), new Among$SII("abl", -1, 3), new Among$SII("I\u00E8r", -1, 4), new Among$SII("i\u00E8r", -1, 4), new Among$SII("eus", -1, 2), new Among$SII("iv", -1, 1) ];
+});
+$__jsx_lazy_init(FrenchStemmer, "a_3", function () {
+ return [ new Among$SII("ic", -1, 2), new Among$SII("abil", -1, 1), new Among$SII("iv", -1, 3) ];
+});
+$__jsx_lazy_init(FrenchStemmer, "a_4", function () {
+ return [ new Among$SII("iqUe", -1, 1), new Among$SII("atrice", -1, 2), new Among$SII("ance", -1, 1), new Among$SII("ence", -1, 5), new Among$SII("logie", -1, 3), new Among$SII("able", -1, 1), new Among$SII("isme", -1, 1), new Among$SII("euse", -1, 11), new Among$SII("iste", -1, 1), new Among$SII("ive", -1, 8), new Among$SII("if", -1, 8), new Among$SII("usion", -1, 4), new Among$SII("ation", -1, 2), new Among$SII("ution", -1, 4), new Among$SII("ateur", -1, 2), new Among$SII("iqUes", -1, 1), new Among$SII("atrices", -1, 2), new Among$SII("ances", -1, 1), new Among$SII("ences", -1, 5), new Among$SII("logies", -1, 3), new Among$SII("ables", -1, 1), new Among$SII("ismes", -1, 1), new Among$SII("euses", -1, 11), new Among$SII("istes", -1, 1), new Among$SII("ives", -1, 8), new Among$SII("ifs", -1, 8), new Among$SII("usions", -1, 4), new Among$SII("ations", -1, 2), new Among$SII("utions", -1, 4), new Among$SII("ateurs", -1, 2), new Among$SII("ments", -1, 15), new Among$SII("ements", 30, 6), new Among$SII("issements", 31, 12), new Among$SII("it\u00E9s", -1, 7), new Among$SII("ment", -1, 15), new Among$SII("ement", 34, 6), new Among$SII("issement", 35, 12), new Among$SII("amment", 34, 13), new Among$SII("emment", 34, 14), new Among$SII("aux", -1, 10), new Among$SII("eaux", 39, 9), new Among$SII("eux", -1, 1), new Among$SII("it\u00E9", -1, 7) ];
+});
+$__jsx_lazy_init(FrenchStemmer, "a_5", function () {
+ return [ new Among$SII("ira", -1, 1), new Among$SII("ie", -1, 1), new Among$SII("isse", -1, 1), new Among$SII("issante", -1, 1), new Among$SII("i", -1, 1), new Among$SII("irai", 4, 1), new Among$SII("ir", -1, 1), new Among$SII("iras", -1, 1), new Among$SII("ies", -1, 1), new Among$SII("\u00EEmes", -1, 1), new Among$SII("isses", -1, 1), new Among$SII("issantes", -1, 1), new Among$SII("\u00EEtes", -1, 1), new Among$SII("is", -1, 1), new Among$SII("irais", 13, 1), new Among$SII("issais", 13, 1), new Among$SII("irions", -1, 1), new Among$SII("issions", -1, 1), new Among$SII("irons", -1, 1), new Among$SII("issons", -1, 1), new Among$SII("issants", -1, 1), new Among$SII("it", -1, 1), new Among$SII("irait", 21, 1), new Among$SII("issait", 21, 1), new Among$SII("issant", -1, 1), new Among$SII("iraIent", -1, 1), new Among$SII("issaIent", -1, 1), new Among$SII("irent", -1, 1), new Among$SII("issent", -1, 1), new Among$SII("iront", -1, 1), new Among$SII("\u00EEt", -1, 1), new Among$SII("iriez", -1, 1), new Among$SII("issiez", -1, 1), new Among$SII("irez", -1, 1), new Among$SII("issez", -1, 1) ];
+});
+$__jsx_lazy_init(FrenchStemmer, "a_6", function () {
+ return [ new Among$SII("a", -1, 3), new Among$SII("era", 0, 2), new Among$SII("asse", -1, 3), new Among$SII("ante", -1, 3), new Among$SII("\u00E9e", -1, 2), new Among$SII("ai", -1, 3), new Among$SII("erai", 5, 2), new Among$SII("er", -1, 2), new Among$SII("as", -1, 3), new Among$SII("eras", 8, 2), new Among$SII("\u00E2mes", -1, 3), new Among$SII("asses", -1, 3), new Among$SII("antes", -1, 3), new Among$SII("\u00E2tes", -1, 3), new Among$SII("\u00E9es", -1, 2), new Among$SII("ais", -1, 3), new Among$SII("erais", 15, 2), new Among$SII("ions", -1, 1), new Among$SII("erions", 17, 2), new Among$SII("assions", 17, 3), new Among$SII("erons", -1, 2), new Among$SII("ants", -1, 3), new Among$SII("\u00E9s", -1, 2), new Among$SII("ait", -1, 3), new Among$SII("erait", 23, 2), new Among$SII("ant", -1, 3), new Among$SII("aIent", -1, 3), new Among$SII("eraIent", 26, 2), new Among$SII("\u00E8rent", -1, 2), new Among$SII("assent", -1, 3), new Among$SII("eront", -1, 2), new Among$SII("\u00E2t", -1, 3), new Among$SII("ez", -1, 2), new Among$SII("iez", 32, 2), new Among$SII("eriez", 33, 2), new Among$SII("assiez", 33, 3), new Among$SII("erez", 32, 2), new Among$SII("\u00E9", -1, 2) ];
+});
+$__jsx_lazy_init(FrenchStemmer, "a_7", function () {
+ return [ new Among$SII("e", -1, 3), new Among$SII("I\u00E8re", 0, 2), new Among$SII("i\u00E8re", 0, 2), new Among$SII("ion", -1, 1), new Among$SII("Ier", -1, 2), new Among$SII("ier", -1, 2), new Among$SII("\u00EB", -1, 4) ];
+});
+$__jsx_lazy_init(FrenchStemmer, "a_8", function () {
+ return [ new Among$SII("ell", -1, -1), new Among$SII("eill", -1, -1), new Among$SII("enn", -1, -1), new Among$SII("onn", -1, -1), new Among$SII("ett", -1, -1) ];
+});
+$__jsx_lazy_init(FrenchStemmer, "g_v", function () {
+ return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 130, 103, 8, 5 ];
+});
+$__jsx_lazy_init(FrenchStemmer, "g_keep_with_s", function () {
+ return [ 1, 65, 20, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ];
+});
+FinnishStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(FinnishStemmer, "methodObject", function () {
+ return new FinnishStemmer$();
+});
+$__jsx_lazy_init(FinnishStemmer, "a_0", function () {
+ return [ new Among$SII("pa", -1, 1), new Among$SII("sti", -1, 2), new Among$SII("kaan", -1, 1), new Among$SII("han", -1, 1), new Among$SII("kin", -1, 1), new Among$SII("h\u00E4n", -1, 1), new Among$SII("k\u00E4\u00E4n", -1, 1), new Among$SII("ko", -1, 1), new Among$SII("p\u00E4", -1, 1), new Among$SII("k\u00F6", -1, 1) ];
+});
+$__jsx_lazy_init(FinnishStemmer, "a_1", function () {
+ return [ new Among$SII("lla", -1, -1), new Among$SII("na", -1, -1), new Among$SII("ssa", -1, -1), new Among$SII("ta", -1, -1), new Among$SII("lta", 3, -1), new Among$SII("sta", 3, -1) ];
+});
+$__jsx_lazy_init(FinnishStemmer, "a_2", function () {
+ return [ new Among$SII("ll\u00E4", -1, -1), new Among$SII("n\u00E4", -1, -1), new Among$SII("ss\u00E4", -1, -1), new Among$SII("t\u00E4", -1, -1), new Among$SII("lt\u00E4", 3, -1), new Among$SII("st\u00E4", 3, -1) ];
+});
+$__jsx_lazy_init(FinnishStemmer, "a_3", function () {
+ return [ new Among$SII("lle", -1, -1), new Among$SII("ine", -1, -1) ];
+});
+$__jsx_lazy_init(FinnishStemmer, "a_4", function () {
+ return [ new Among$SII("nsa", -1, 3), new Among$SII("mme", -1, 3), new Among$SII("nne", -1, 3), new Among$SII("ni", -1, 2), new Among$SII("si", -1, 1), new Among$SII("an", -1, 4), new Among$SII("en", -1, 6), new Among$SII("\u00E4n", -1, 5), new Among$SII("ns\u00E4", -1, 3) ];
+});
+$__jsx_lazy_init(FinnishStemmer, "a_5", function () {
+ return [ new Among$SII("aa", -1, -1), new Among$SII("ee", -1, -1), new Among$SII("ii", -1, -1), new Among$SII("oo", -1, -1), new Among$SII("uu", -1, -1), new Among$SII("\u00E4\u00E4", -1, -1), new Among$SII("\u00F6\u00F6", -1, -1) ];
+});
+$__jsx_lazy_init(FinnishStemmer, "a_6", function () {
+ return [ new Among$SII("a", -1, 8), new Among$SII("lla", 0, -1), new Among$SII("na", 0, -1), new Among$SII("ssa", 0, -1), new Among$SII("ta", 0, -1), new Among$SII("lta", 4, -1), new Among$SII("sta", 4, -1), new Among$SII("tta", 4, 9), new Among$SII("lle", -1, -1), new Among$SII("ine", -1, -1), new Among$SII("ksi", -1, -1), new Among$SII("n", -1, 7), new Among$SII("han", 11, 1), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("den", 11, -1, (function (instance) {
+ return instance.r_VI$();
+ }), FinnishStemmer.methodObject), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("seen", 11, -1, (function (instance) {
+ return instance.r_LONG$();
+ }), FinnishStemmer.methodObject), new Among$SII("hen", 11, 2), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("tten", 11, -1, (function (instance) {
+ return instance.r_VI$();
+ }), FinnishStemmer.methodObject), new Among$SII("hin", 11, 3), new Among$SIIF$LBaseStemmer$B$LBaseStemmer$("siin", 11, -1, (function (instance) {
+ return instance.r_VI$();
+ }), FinnishStemmer.methodObject), new Among$SII("hon", 11, 4), new Among$SII("h\u00E4n", 11, 5), new Among$SII("h\u00F6n", 11, 6), new Among$SII("\u00E4", -1, 8), new Among$SII("ll\u00E4", 22, -1), new Among$SII("n\u00E4", 22, -1), new Among$SII("ss\u00E4", 22, -1), new Among$SII("t\u00E4", 22, -1), new Among$SII("lt\u00E4", 26, -1), new Among$SII("st\u00E4", 26, -1), new Among$SII("tt\u00E4", 26, 9) ];
+});
+$__jsx_lazy_init(FinnishStemmer, "a_7", function () {
+ return [ new Among$SII("eja", -1, -1), new Among$SII("mma", -1, 1), new Among$SII("imma", 1, -1), new Among$SII("mpa", -1, 1), new Among$SII("impa", 3, -1), new Among$SII("mmi", -1, 1), new Among$SII("immi", 5, -1), new Among$SII("mpi", -1, 1), new Among$SII("impi", 7, -1), new Among$SII("ej\u00E4", -1, -1), new Among$SII("mm\u00E4", -1, 1), new Among$SII("imm\u00E4", 10, -1), new Among$SII("mp\u00E4", -1, 1), new Among$SII("imp\u00E4", 12, -1) ];
+});
+$__jsx_lazy_init(FinnishStemmer, "a_8", function () {
+ return [ new Among$SII("i", -1, -1), new Among$SII("j", -1, -1) ];
+});
+$__jsx_lazy_init(FinnishStemmer, "a_9", function () {
+ return [ new Among$SII("mma", -1, 1), new Among$SII("imma", 0, -1) ];
+});
+$__jsx_lazy_init(FinnishStemmer, "g_AEI", function () {
+ return [ 17, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8 ];
+});
+$__jsx_lazy_init(FinnishStemmer, "g_V1", function () {
+ return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ];
+});
+$__jsx_lazy_init(FinnishStemmer, "g_V2", function () {
+ return [ 17, 65, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ];
+});
+$__jsx_lazy_init(FinnishStemmer, "g_particle_end", function () {
+ return [ 17, 97, 24, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 32 ];
+});
+EnglishStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(EnglishStemmer, "methodObject", function () {
+ return new EnglishStemmer$();
+});
+$__jsx_lazy_init(EnglishStemmer, "a_0", function () {
+ return [ new Among$SII("arsen", -1, -1), new Among$SII("commun", -1, -1), new Among$SII("gener", -1, -1) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "a_1", function () {
+ return [ new Among$SII("'", -1, 1), new Among$SII("'s'", 0, 1), new Among$SII("'s", -1, 1) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "a_2", function () {
+ return [ new Among$SII("ied", -1, 2), new Among$SII("s", -1, 3), new Among$SII("ies", 1, 2), new Among$SII("sses", 1, 1), new Among$SII("ss", 1, -1), new Among$SII("us", 1, -1) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "a_3", function () {
+ return [ new Among$SII("", -1, 3), new Among$SII("bb", 0, 2), new Among$SII("dd", 0, 2), new Among$SII("ff", 0, 2), new Among$SII("gg", 0, 2), new Among$SII("bl", 0, 1), new Among$SII("mm", 0, 2), new Among$SII("nn", 0, 2), new Among$SII("pp", 0, 2), new Among$SII("rr", 0, 2), new Among$SII("at", 0, 1), new Among$SII("tt", 0, 2), new Among$SII("iz", 0, 1) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "a_4", function () {
+ return [ new Among$SII("ed", -1, 2), new Among$SII("eed", 0, 1), new Among$SII("ing", -1, 2), new Among$SII("edly", -1, 2), new Among$SII("eedly", 3, 1), new Among$SII("ingly", -1, 2) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "a_5", function () {
+ return [ new Among$SII("anci", -1, 3), new Among$SII("enci", -1, 2), new Among$SII("ogi", -1, 13), new Among$SII("li", -1, 16), new Among$SII("bli", 3, 12), new Among$SII("abli", 4, 4), new Among$SII("alli", 3, 8), new Among$SII("fulli", 3, 14), new Among$SII("lessli", 3, 15), new Among$SII("ousli", 3, 10), new Among$SII("entli", 3, 5), new Among$SII("aliti", -1, 8), new Among$SII("biliti", -1, 12), new Among$SII("iviti", -1, 11), new Among$SII("tional", -1, 1), new Among$SII("ational", 14, 7), new Among$SII("alism", -1, 8), new Among$SII("ation", -1, 7), new Among$SII("ization", 17, 6), new Among$SII("izer", -1, 6), new Among$SII("ator", -1, 7), new Among$SII("iveness", -1, 11), new Among$SII("fulness", -1, 9), new Among$SII("ousness", -1, 10) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "a_6", function () {
+ return [ new Among$SII("icate", -1, 4), new Among$SII("ative", -1, 6), new Among$SII("alize", -1, 3), new Among$SII("iciti", -1, 4), new Among$SII("ical", -1, 4), new Among$SII("tional", -1, 1), new Among$SII("ational", 5, 2), new Among$SII("ful", -1, 5), new Among$SII("ness", -1, 5) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "a_7", function () {
+ return [ new Among$SII("ic", -1, 1), new Among$SII("ance", -1, 1), new Among$SII("ence", -1, 1), new Among$SII("able", -1, 1), new Among$SII("ible", -1, 1), new Among$SII("ate", -1, 1), new Among$SII("ive", -1, 1), new Among$SII("ize", -1, 1), new Among$SII("iti", -1, 1), new Among$SII("al", -1, 1), new Among$SII("ism", -1, 1), new Among$SII("ion", -1, 2), new Among$SII("er", -1, 1), new Among$SII("ous", -1, 1), new Among$SII("ant", -1, 1), new Among$SII("ent", -1, 1), new Among$SII("ment", 15, 1), new Among$SII("ement", 16, 1) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "a_8", function () {
+ return [ new Among$SII("e", -1, 1), new Among$SII("l", -1, 2) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "a_9", function () {
+ return [ new Among$SII("succeed", -1, -1), new Among$SII("proceed", -1, -1), new Among$SII("exceed", -1, -1), new Among$SII("canning", -1, -1), new Among$SII("inning", -1, -1), new Among$SII("earring", -1, -1), new Among$SII("herring", -1, -1), new Among$SII("outing", -1, -1) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "a_10", function () {
+ return [ new Among$SII("andes", -1, -1), new Among$SII("atlas", -1, -1), new Among$SII("bias", -1, -1), new Among$SII("cosmos", -1, -1), new Among$SII("dying", -1, 3), new Among$SII("early", -1, 9), new Among$SII("gently", -1, 7), new Among$SII("howe", -1, -1), new Among$SII("idly", -1, 6), new Among$SII("lying", -1, 4), new Among$SII("news", -1, -1), new Among$SII("only", -1, 10), new Among$SII("singly", -1, 11), new Among$SII("skies", -1, 2), new Among$SII("skis", -1, 1), new Among$SII("sky", -1, -1), new Among$SII("tying", -1, 5), new Among$SII("ugly", -1, 8) ];
+});
+$__jsx_lazy_init(EnglishStemmer, "g_v", function () {
+ return [ 17, 65, 16, 1 ];
+});
+$__jsx_lazy_init(EnglishStemmer, "g_v_WXY", function () {
+ return [ 1, 17, 65, 208, 1 ];
+});
+$__jsx_lazy_init(EnglishStemmer, "g_valid_LI", function () {
+ return [ 55, 141, 2 ];
+});
+DutchStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(DutchStemmer, "methodObject", function () {
+ return new DutchStemmer$();
+});
+$__jsx_lazy_init(DutchStemmer, "a_0", function () {
+ return [ new Among$SII("", -1, 6), new Among$SII("\u00E1", 0, 1), new Among$SII("\u00E4", 0, 1), new Among$SII("\u00E9", 0, 2), new Among$SII("\u00EB", 0, 2), new Among$SII("\u00ED", 0, 3), new Among$SII("\u00EF", 0, 3), new Among$SII("\u00F3", 0, 4), new Among$SII("\u00F6", 0, 4), new Among$SII("\u00FA", 0, 5), new Among$SII("\u00FC", 0, 5) ];
+});
+$__jsx_lazy_init(DutchStemmer, "a_1", function () {
+ return [ new Among$SII("", -1, 3), new Among$SII("I", 0, 2), new Among$SII("Y", 0, 1) ];
+});
+$__jsx_lazy_init(DutchStemmer, "a_2", function () {
+ return [ new Among$SII("dd", -1, -1), new Among$SII("kk", -1, -1), new Among$SII("tt", -1, -1) ];
+});
+$__jsx_lazy_init(DutchStemmer, "a_3", function () {
+ return [ new Among$SII("ene", -1, 2), new Among$SII("se", -1, 3), new Among$SII("en", -1, 2), new Among$SII("heden", 2, 1), new Among$SII("s", -1, 3) ];
+});
+$__jsx_lazy_init(DutchStemmer, "a_4", function () {
+ return [ new Among$SII("end", -1, 1), new Among$SII("ig", -1, 2), new Among$SII("ing", -1, 1), new Among$SII("lijk", -1, 3), new Among$SII("baar", -1, 4), new Among$SII("bar", -1, 5) ];
+});
+$__jsx_lazy_init(DutchStemmer, "a_5", function () {
+ return [ new Among$SII("aa", -1, -1), new Among$SII("ee", -1, -1), new Among$SII("oo", -1, -1), new Among$SII("uu", -1, -1) ];
+});
+$__jsx_lazy_init(DutchStemmer, "g_v", function () {
+ return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ];
+});
+$__jsx_lazy_init(DutchStemmer, "g_v_I", function () {
+ return [ 1, 0, 0, 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ];
+});
+$__jsx_lazy_init(DutchStemmer, "g_v_j", function () {
+ return [ 17, 67, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128 ];
+});
+DanishStemmer.serialVersionUID = 1;
+$__jsx_lazy_init(DanishStemmer, "methodObject", function () {
+ return new DanishStemmer$();
+});
+$__jsx_lazy_init(DanishStemmer, "a_0", function () {
+ return [ new Among$SII("hed", -1, 1), new Among$SII("ethed", 0, 1), new Among$SII("ered", -1, 1), new Among$SII("e", -1, 1), new Among$SII("erede", 3, 1), new Among$SII("ende", 3, 1), new Among$SII("erende", 5, 1), new Among$SII("ene", 3, 1), new Among$SII("erne", 3, 1), new Among$SII("ere", 3, 1), new Among$SII("en", -1, 1), new Among$SII("heden", 10, 1), new Among$SII("eren", 10, 1), new Among$SII("er", -1, 1), new Among$SII("heder", 13, 1), new Among$SII("erer", 13, 1), new Among$SII("s", -1, 2), new Among$SII("heds", 16, 1), new Among$SII("es", 16, 1), new Among$SII("endes", 18, 1), new Among$SII("erendes", 19, 1), new Among$SII("enes", 18, 1), new Among$SII("ernes", 18, 1), new Among$SII("eres", 18, 1), new Among$SII("ens", 16, 1), new Among$SII("hedens", 24, 1), new Among$SII("erens", 24, 1), new Among$SII("ers", 16, 1), new Among$SII("ets", 16, 1), new Among$SII("erets", 28, 1), new Among$SII("et", -1, 1), new Among$SII("eret", 30, 1) ];
+});
+$__jsx_lazy_init(DanishStemmer, "a_1", function () {
+ return [ new Among$SII("gd", -1, -1), new Among$SII("dt", -1, -1), new Among$SII("gt", -1, -1), new Among$SII("kt", -1, -1) ];
+});
+$__jsx_lazy_init(DanishStemmer, "a_2", function () {
+ return [ new Among$SII("ig", -1, 1), new Among$SII("lig", 0, 1), new Among$SII("elig", 1, 1), new Among$SII("els", -1, 1), new Among$SII("l\u00F8st", -1, 2) ];
+});
+$__jsx_lazy_init(DanishStemmer, "g_v", function () {
+ return [ 17, 65, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 48, 0, 128 ];
+});
+$__jsx_lazy_init(DanishStemmer, "g_s_ending", function () {
+ return [ 239, 254, 42, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16 ];
+});
+BitVector.SMALL_BLOCK_SIZE = 32;
+BitVector.LARGE_BLOCK_SIZE = 256;
+BitVector.BLOCK_RATE = 8;
+$__jsx_lazy_init(BurrowsWheelerTransform, "END_MARKER", function () {
+ return String.fromCharCode(0);
+});
+var $__jsx_classMap = {
+ "tool/oktavia-search.jsx": {
+ Search: Search,
+ Search$: Search$,
+ _Main: _Main,
+ _Main$: _Main$
+ },
+ "system:lib/js/js/nodejs.jsx": {
+ node: node,
+ node$: node$
+ },
+ "src/oktavia.jsx": {
+ Oktavia: Oktavia,
+ Oktavia$: Oktavia$
+ },
+ "src/getopt.jsx": {
+ CommandOption: CommandOption,
+ CommandOption$S: CommandOption$S,
+ CommandOption$SS: CommandOption$SS,
+ CommandOption$SSB: CommandOption$SSB,
+ BasicParser: BasicParser,
+ BasicParser$SAS: BasicParser$SAS
+ },
+ "src/query-parser.jsx": {
+ QueryParser: QueryParser,
+ QueryParser$: QueryParser$
+ },
+ "src/search-result.jsx": {
+ Proposal: Proposal,
+ Proposal$II: Proposal$II,
+ Position: Position,
+ Position$SIB: Position$SIB,
+ SearchUnit: SearchUnit,
+ SearchUnit$I: SearchUnit$I,
+ SingleResult: SingleResult,
+ SingleResult$: SingleResult$,
+ SingleResult$SBB: SingleResult$SBB,
+ SearchSummary: SearchSummary,
+ SearchSummary$: SearchSummary$,
+ SearchSummary$LOktavia$: SearchSummary$LOktavia$
+ },
+ "src/style.jsx": {
+ Style: Style,
+ Style$S: Style$S,
+ _HTMLHandler: _HTMLHandler,
+ _HTMLHandler$HASB: _HTMLHandler$HASB
+ },
+ "src/binary-util.jsx": {
+ Binary: Binary,
+ Binary$: Binary$,
+ LoadedStringResult: LoadedStringResult,
+ LoadedStringResult$SI: LoadedStringResult$SI,
+ LoadedStringListResult: LoadedStringListResult,
+ LoadedStringListResult$SI: LoadedStringListResult$SI,
+ LoadedStringListMapResult: LoadedStringListMapResult,
+ LoadedStringListMapResult$SI: LoadedStringListMapResult$SI,
+ LoadedNumberListResult: LoadedNumberListResult,
+ LoadedNumberListResult$SI: LoadedNumberListResult$SI,
+ CompressionReport: CompressionReport,
+ CompressionReport$: CompressionReport$
+ },
+ "src/stemmer/stemmer.jsx": {
+ Stemmer: Stemmer,
+ Stemmer$: Stemmer$
+ },
+ "system:lib/js/js.jsx": {
+ js: js,
+ js$: js$
+ },
+ "src/metadata.jsx": {
+ Metadata: Metadata,
+ Metadata$LOktavia$: Metadata$LOktavia$,
+ Section: Section,
+ Section$LOktavia$: Section$LOktavia$,
+ Splitter: Splitter,
+ Splitter$LOktavia$: Splitter$LOktavia$,
+ Splitter$LOktavia$S: Splitter$LOktavia$S,
+ Table: Table,
+ Table$LOktavia$AS: Table$LOktavia$AS,
+ Block: Block,
+ Block$LOktavia$: Block$LOktavia$
+ },
+ "src/fm-index.jsx": {
+ FMIndex: FMIndex,
+ FMIndex$: FMIndex$
+ },
+ "src/query.jsx": {
+ Query: Query,
+ Query$: Query$
+ },
+ "src/sax.jsx": {
+ Tag: Tag,
+ Tag$S: Tag$S,
+ _Common: _Common,
+ _Common$: _Common$,
+ _State: _State,
+ _State$: _State$,
+ SAXHandler: SAXHandler,
+ SAXHandler$: SAXHandler$,
+ SAXParser: SAXParser,
+ SAXParser$LSAXHandler$: SAXParser$LSAXHandler$,
+ SAXParser$LSAXHandler$B: SAXParser$LSAXHandler$B,
+ Char: Char,
+ Char$: Char$,
+ _Entities: _Entities,
+ _Entities$: _Entities$
+ },
+ "src/stemmer/base-stemmer.jsx": {
+ BaseStemmer: BaseStemmer,
+ BaseStemmer$: BaseStemmer$
+ },
+ "src/stemmer/turkish-stemmer.jsx": {
+ TurkishStemmer: TurkishStemmer,
+ TurkishStemmer$: TurkishStemmer$
+ },
+ "src/stemmer/swedish-stemmer.jsx": {
+ SwedishStemmer: SwedishStemmer,
+ SwedishStemmer$: SwedishStemmer$
+ },
+ "src/stemmer/spanish-stemmer.jsx": {
+ SpanishStemmer: SpanishStemmer,
+ SpanishStemmer$: SpanishStemmer$
+ },
+ "src/stemmer/russian-stemmer.jsx": {
+ RussianStemmer: RussianStemmer,
+ RussianStemmer$: RussianStemmer$
+ },
+ "src/stemmer/romanian-stemmer.jsx": {
+ RomanianStemmer: RomanianStemmer,
+ RomanianStemmer$: RomanianStemmer$
+ },
+ "src/stemmer/portuguese-stemmer.jsx": {
+ PortugueseStemmer: PortugueseStemmer,
+ PortugueseStemmer$: PortugueseStemmer$
+ },
+ "src/stemmer/porter-stemmer.jsx": {
+ PorterStemmer: PorterStemmer,
+ PorterStemmer$: PorterStemmer$
+ },
+ "src/stemmer/norwegian-stemmer.jsx": {
+ NorwegianStemmer: NorwegianStemmer,
+ NorwegianStemmer$: NorwegianStemmer$
+ },
+ "src/stemmer/italian-stemmer.jsx": {
+ ItalianStemmer: ItalianStemmer,
+ ItalianStemmer$: ItalianStemmer$
+ },
+ "src/stemmer/hungarian-stemmer.jsx": {
+ HungarianStemmer: HungarianStemmer,
+ HungarianStemmer$: HungarianStemmer$
+ },
+ "src/stemmer/german-stemmer.jsx": {
+ GermanStemmer: GermanStemmer,
+ GermanStemmer$: GermanStemmer$
+ },
+ "src/stemmer/french-stemmer.jsx": {
+ FrenchStemmer: FrenchStemmer,
+ FrenchStemmer$: FrenchStemmer$
+ },
+ "src/stemmer/finnish-stemmer.jsx": {
+ FinnishStemmer: FinnishStemmer,
+ FinnishStemmer$: FinnishStemmer$
+ },
+ "src/stemmer/english-stemmer.jsx": {
+ EnglishStemmer: EnglishStemmer,
+ EnglishStemmer$: EnglishStemmer$
+ },
+ "src/stemmer/dutch-stemmer.jsx": {
+ DutchStemmer: DutchStemmer,
+ DutchStemmer$: DutchStemmer$
+ },
+ "src/stemmer/danish-stemmer.jsx": {
+ DanishStemmer: DanishStemmer,
+ DanishStemmer$: DanishStemmer$
+ },
+ "src/stemmer/among.jsx": {
+ Among: Among,
+ Among$SII: Among$SII,
+ Among$SIIF$LBaseStemmer$B$LBaseStemmer$: Among$SIIF$LBaseStemmer$B$LBaseStemmer$
+ },
+ "src/bit-vector.jsx": {
+ BitVector: BitVector,
+ BitVector$: BitVector$
+ },
+ "src/wavelet-matrix.jsx": {
+ WaveletMatrix: WaveletMatrix,
+ WaveletMatrix$: WaveletMatrix$
+ },
+ "src/burrows-wheeler-transform.jsx": {
+ BurrowsWheelerTransform: BurrowsWheelerTransform,
+ BurrowsWheelerTransform$: BurrowsWheelerTransform$
+ },
+ "src/sais.jsx": {
+ OArray: OArray,
+ OArray$AI: OArray$AI,
+ OArray$AII: OArray$AII,
+ SAIS: SAIS,
+ SAIS$: SAIS$
+ }
+};
+
+
+/**
+ * launches _Main.main(:string[]):void invoked by jsx --run|--executable
+ */
+JSX.runMain = function (sourceFile, args) {
+ var module = JSX.require(sourceFile);
+ if (! module) {
+ throw new ReferenceError("entry point module not found in " + sourceFile);
+ }
+ if (! module._Main) {
+ throw new ReferenceError("entry point _Main not found in " + sourceFile);
+ }
+ if (! module._Main.main$AS) {
+ throw new ReferenceError("entry point _Main.main(:string[]):void not found in " + sourceFile);
+ }
+ module._Main.main$AS(args);
+};
+
+/**
+ * launches _Test#test*():void invoked by jsx --test
+ */
+JSX.runTests = function (sourceFile, tests) {
+ var module = JSX.require(sourceFile);
+ var testClass = module._Test$;
+
+ if (!testClass) return; // skip if there's no test class
+
+ if(tests.length === 0) {
+ var p = testClass.prototype;
+ for (var m in p) {
+ if (p[m] instanceof Function
+ && /^test.*[$]$/.test(m)) {
+ tests.push(m);
+ }
+ }
+ }
+ else { // set as process arguments
+ tests = tests.map(function (name) {
+ return name + "$"; // mangle for function test*():void
+ });
+ }
+
+ var testCase = new testClass();
+
+ if (testCase.beforeClass$AS != null)
+ testCase.beforeClass$AS(tests);
+
+ for (var i = 0; i < tests.length; ++i) {
+ (function (method) {
+ if (method in testCase) {
+ testCase.run$SF$V$(method, function() { testCase[method](); });
+ }
+ else {
+ throw new ReferenceError("No such test method: " + method);
+ }
+ }(tests[i]));
+ }
+
+ if (testCase.afterClass$ != null)
+ testCase.afterClass$();
+};
+JSX.runMain("tool/oktavia-search.jsx", process.argv.slice(2))
+})(JSX);