1 | {"version":3,"sources":["webpack://MessageFormat/webpack/universalModuleDefinition","webpack://MessageFormat/webpack/bootstrap","webpack://MessageFormat/./node_modules/make-plural/umd/plurals.js","webpack://MessageFormat/../formatters/index.js","webpack://MessageFormat/../parser/parser.js","webpack://MessageFormat/./node_modules/make-plural/umd/pluralCategories.js","webpack://MessageFormat/../formatters/lib/date.js","webpack://MessageFormat/../formatters/lib/duration.js","webpack://MessageFormat/../formatters/lib/number.js","webpack://MessageFormat/../formatters/lib/time.js","webpack://MessageFormat/./src/utils.js","webpack://MessageFormat/./src/compiler.js","webpack://MessageFormat/./src/plurals.js","webpack://MessageFormat/./src/runtime.js","webpack://MessageFormat/./src/messageformat.js"],"names":["root","factory","exports","module","define","amd","this","installedModules","__webpack_require__","moduleId","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","__WEBPACK_AMD_DEFINE_FACTORY__","__WEBPACK_AMD_DEFINE_RESULT__","undefined","af","ord","ak","am","ar","String","split","t0","Number","n100","slice","ars","as","asa","ast","v0","az","i10","i100","i1000","be","n10","bem","bez","bg","bh","bm","bn","bo","br","n1000000","brx","bs","f","f10","f100","ca","ce","cgg","chr","ckb","cs","cy","da","de","dsb","dv","dz","ee","el","en","eo","es","et","eu","fa","ff","fi","fil","fo","fr","fur","fy","ga","gd","gl","gsw","gu","guw","gv","ha","haw","he","hi","hr","hsb","hu","hy","ia","id","ig","ii","in","io","is","it","iu","iw","ja","jbo","jgo","ji","jmc","jv","jw","ka","kab","kaj","kcg","kde","kea","kk","kkj","kl","km","kn","ko","ks","ksb","ksh","ku","kw","ky","lag","lb","lg","lkt","ln","lo","lt","lv","v","length","mas","mg","mgo","mk","ml","mn","mo","mr","ms","mt","my","nah","naq","nb","nd","ne","nl","nn","nnh","no","nqo","nr","nso","ny","nyn","om","or","os","pa","pap","pl","prg","ps","pt","pt-PT","rm","ro","rof","ru","rwk","sah","saq","sc","scn","sd","sdh","se","seh","ses","sg","sh","shi","si","sk","sl","sma","smi","smj","smn","sms","sn","so","sq","sr","ss","ssy","st","sv","sw","syr","ta","te","teo","th","ti","tig","tk","tl","tn","to","tr","ts","tzm","ug","uk","ur","uz","ve","vi","vo","vun","wa","wae","wo","xh","xog","yi","yo","yue","zh","zu","date","require","duration","number","time","peg$SyntaxError","message","expected","found","location","Error","captureStackTrace","child","parent","ctor","constructor","peg$subclass","buildMessage","DESCRIBE_EXPECTATION_FNS","literal","expectation","literalEscape","text","class","escapedParts","parts","Array","classEscape","inverted","any","end","other","description","hex","ch","charCodeAt","toString","toUpperCase","replace","j","descriptions","type","sort","join","describeExpected","describeFound","SyntaxError","parse","input","options","peg$result","peg$FAILED","peg$startRuleFunctions","start","peg$parsestart","peg$startRuleFunction","peg$c0","peg$c1","peg$literalExpectation","peg$c2","inPlural","peg$c3","peg$c4","str","peg$c5","peg$c6","peg$c7","peg$c8","peg$c9","arg","peg$c10","peg$c11","peg$c12","peg$c13","peg$c14","strict","unshift","peg$c15","cases","shift","peg$c16","peg$c17","peg$c18","peg$c19","peg$c20","peg$c21","offset","ls","ordinal","cardinal","forEach","isNaN","indexOf","peg$c22","param","peg$c23","peg$otherExpectation","peg$c24","peg$c25","peg$classExpectation","peg$c26","tokens","peg$c27","peg$c28","peg$c29","peg$c30","peg$c31","peg$c32","peg$c33","peg$c34","peg$c35","peg$c36","peg$c37","peg$c38","peg$c39","peg$c40","peg$c41","peg$c42","peg$c43","peg$c44","peg$c45","peg$c46","peg$c47","peg$c48","test","toLowerCase","peg$c49","peg$c50","peg$c51","peg$c52","peg$c53","peg$c54","peg$c55","peg$c56","peg$c57","peg$c58","peg$c59","quoted","peg$c60","peg$c61","peg$c62","peg$c63","peg$c64","peg$c65","peg$c66","peg$c67","peg$c68","peg$c69","peg$c70","peg$c71","peg$c72","peg$c73","peg$c74","peg$c75","peg$c76","peg$c77","quotedOcto","peg$c78","peg$c79","peg$c80","peg$c81","octo","peg$c82","peg$c83","peg$c84","peg$c85","peg$c86","peg$c87","peg$c88","peg$currPos","peg$posDetailsCache","line","column","peg$maxFailPos","peg$maxFailExpected","peg$silentFails","startRule","ignoreCase","peg$computePosDetails","pos","details","peg$computeLocation","startPos","endPos","startPosDetails","endPosDetails","peg$fail","push","peg$buildStructuredError","s0","s1","peg$parsetoken","s2","s3","s5","peg$parse_","peg$parseid","peg$parseargument","s8","s9","s11","s12","s13","substr","peg$parseselectCase","peg$parseselect","s7","s14","s4","s6","peg$parsedigits","peg$parseoffset","peg$parsepluralCase","peg$parseplural","s10","peg$parsefunctionKey","peg$parsestrictFunctionParamPart","peg$parsefunctionParam","peg$parsefunction","peg$parsechar","charAt","substring","peg$parsecaseTokens","peg$parsepluralKey","peg$parsedoubleapos","peg$parseinapos","peg$parsequoted","peg$parsequotedCurly","peg$parseplainChar","_cc","lc","day","month","year","weekday","Date","toLocaleDateString","isFinite","sign","Math","abs","sec","round","toFixed","map","mf","a","opt","integer","maximumFractionDigits","percent","style","currency","trim","CURRENCY","minimumFractionDigits","Intl","NumberFormat","format","JSON","stringify","match","Function","second","minute","hour","timeZoneName","toLocaleTimeString","reservedES3","break","continue","delete","else","for","function","if","new","return","typeof","var","void","while","with","case","catch","default","do","finally","instanceof","switch","throw","try","reservedES5","debugger","enum","extends","super","const","export","import","null","true","false","implements","let","private","public","yield","interface","package","protected","static","propname","obj","concat","jkey","funcname","fn","rtlRegExp","RegExp","Compiler","_classCallCheck","locales","runtime","formatters","src","plurals","_this","_typeof","pc","strictNumberSign","token","result","lcKey","compile","plural","_this2","needOther","hasCustomPluralFuncs","_ref","tok","_this3","locale","isLocaleRTL","mark","args","biDiSupport","select","fmt","wrapPluralFunc","pf","pluralKeyChecks","apply","arguments","pluralCategories","getPlural","Runtime","runtime_classCallCheck","lcfunc","data","isOrdinal","setStrictNumber","enable","strictNumber","defaultNumber","pluralFuncs","compiler","lcKeys","keys","rtKeys","fmtKeys","fk","_stringify","level","runtime_typeof","funcStr","funcIndent","exec","indent","oc","MessageFormat","messageformat_classCallCheck","assign","customFormatters","defaultLocale","isArray","errMsg","octothorpe","esc","messages","pfn0","lcs","_ref2","getAllPlurals","pfn1","pfs","messageformat_typeof","rt","rtStr","objStr","k","global","Formatters"],"mappings":"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","file":"messageformat.js","sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"MessageFormat\"] = factory();\n\telse\n\t\troot[\"MessageFormat\"] = factory();\n})(this, function() {\nreturn "," \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 8);\n","var _cp = [\nfunction(n, ord) {\n if (ord) return 'other';\n return 'other';\n},\nfunction(n, ord) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\nfunction(n, ord) {\n if (ord) return 'other';\n return ((n == 0\n || n == 1)) ? 'one' : 'other';\n},\nfunction(n, ord) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n}\n];\n\n(function (root, plurals) {\n if (typeof define === 'function' && define.amd) {\n define(plurals);\n } else if (typeof exports === 'object') {\n module.exports = plurals;\n } else {\n root.plurals = plurals;\n }\n}(this, {\naf: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nak: function(n, ord\n) {\n if (ord) return 'other';\n return ((n == 0\n || n == 1)) ? 'one' : 'other';\n},\n\nam: function(n, ord\n) {\n if (ord) return 'other';\n return (n >= 0 && n <= 1) ? 'one' : 'other';\n},\n\nar: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return (n == 0) ? 'zero'\n : (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : ((n100 >= 3 && n100 <= 10)) ? 'few'\n : ((n100 >= 11 && n100 <= 99)) ? 'many'\n : 'other';\n},\n\nars: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return (n == 0) ? 'zero'\n : (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : ((n100 >= 3 && n100 <= 10)) ? 'few'\n : ((n100 >= 11 && n100 <= 99)) ? 'many'\n : 'other';\n},\n\nas: function(n, ord\n) {\n if (ord) return ((n == 1 || n == 5 || n == 7 || n == 8 || n == 9\n || n == 10)) ? 'one'\n : ((n == 2\n || n == 3)) ? 'two'\n : (n == 4) ? 'few'\n : (n == 6) ? 'many'\n : 'other';\n return (n >= 0 && n <= 1) ? 'one' : 'other';\n},\n\nasa: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nast: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\naz: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], i10 = i.slice(-1),\n i100 = i.slice(-2), i1000 = i.slice(-3);\n if (ord) return ((i10 == 1 || i10 == 2 || i10 == 5 || i10 == 7 || i10 == 8)\n || (i100 == 20 || i100 == 50 || i100 == 70\n || i100 == 80)) ? 'one'\n : ((i10 == 3 || i10 == 4) || (i1000 == 100 || i1000 == 200\n || i1000 == 300 || i1000 == 400 || i1000 == 500 || i1000 == 600 || i1000 == 700\n || i1000 == 800\n || i1000 == 900)) ? 'few'\n : (i == 0 || i10 == 6 || (i100 == 40 || i100 == 60\n || i100 == 90)) ? 'many'\n : 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nbe: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return ((n10 == 2\n || n10 == 3) && n100 != 12 && n100 != 13) ? 'few' : 'other';\n return (n10 == 1 && n100 != 11) ? 'one'\n : ((n10 >= 2 && n10 <= 4) && (n100 < 12\n || n100 > 14)) ? 'few'\n : (t0 && n10 == 0 || (n10 >= 5 && n10 <= 9)\n || (n100 >= 11 && n100 <= 14)) ? 'many'\n : 'other';\n},\n\nbem: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nbez: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nbg: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nbh: function(n, ord\n) {\n if (ord) return 'other';\n return ((n == 0\n || n == 1)) ? 'one' : 'other';\n},\n\nbm: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nbn: function(n, ord\n) {\n if (ord) return ((n == 1 || n == 5 || n == 7 || n == 8 || n == 9\n || n == 10)) ? 'one'\n : ((n == 2\n || n == 3)) ? 'two'\n : (n == 4) ? 'few'\n : (n == 6) ? 'many'\n : 'other';\n return (n >= 0 && n <= 1) ? 'one' : 'other';\n},\n\nbo: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nbr: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2),\n n1000000 = t0 && s[0].slice(-6);\n if (ord) return 'other';\n return (n10 == 1 && n100 != 11 && n100 != 71 && n100 != 91) ? 'one'\n : (n10 == 2 && n100 != 12 && n100 != 72 && n100 != 92) ? 'two'\n : (((n10 == 3 || n10 == 4) || n10 == 9) && (n100 < 10\n || n100 > 19) && (n100 < 70 || n100 > 79) && (n100 < 90\n || n100 > 99)) ? 'few'\n : (n != 0 && t0 && n1000000 == 0) ? 'many'\n : 'other';\n},\n\nbrx: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nbs: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1],\n i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return (v0 && i10 == 1 && i100 != 11\n || f10 == 1 && f100 != 11) ? 'one'\n : (v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14)\n || (f10 >= 2 && f10 <= 4) && (f100 < 12\n || f100 > 14)) ? 'few'\n : 'other';\n},\n\nca: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return ((n == 1\n || n == 3)) ? 'one'\n : (n == 2) ? 'two'\n : (n == 4) ? 'few'\n : 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nce: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\ncgg: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nchr: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nckb: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\ncs: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one'\n : ((i >= 2 && i <= 4) && v0) ? 'few'\n : (!v0) ? 'many'\n : 'other';\n},\n\ncy: function(n, ord\n) {\n if (ord) return ((n == 0 || n == 7 || n == 8\n || n == 9)) ? 'zero'\n : (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : ((n == 3\n || n == 4)) ? 'few'\n : ((n == 5\n || n == 6)) ? 'many'\n : 'other';\n return (n == 0) ? 'zero'\n : (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : (n == 3) ? 'few'\n : (n == 6) ? 'many'\n : 'other';\n},\n\nda: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return (n == 1 || !t0 && (i == 0\n || i == 1)) ? 'one' : 'other';\n},\n\nde: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\ndsb: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1],\n i100 = i.slice(-2), f100 = f.slice(-2);\n if (ord) return 'other';\n return (v0 && i100 == 1\n || f100 == 1) ? 'one'\n : (v0 && i100 == 2\n || f100 == 2) ? 'two'\n : (v0 && (i100 == 3 || i100 == 4) || (f100 == 3\n || f100 == 4)) ? 'few'\n : 'other';\n},\n\ndv: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\ndz: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nee: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nel: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nen: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return (n10 == 1 && n100 != 11) ? 'one'\n : (n10 == 2 && n100 != 12) ? 'two'\n : (n10 == 3 && n100 != 13) ? 'few'\n : 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\neo: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nes: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\net: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\neu: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nfa: function(n, ord\n) {\n if (ord) return 'other';\n return (n >= 0 && n <= 1) ? 'one' : 'other';\n},\n\nff: function(n, ord\n) {\n if (ord) return 'other';\n return (n >= 0 && n < 2) ? 'one' : 'other';\n},\n\nfi: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nfil: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1],\n i10 = i.slice(-1), f10 = f.slice(-1);\n if (ord) return (n == 1) ? 'one' : 'other';\n return (v0 && (i == 1 || i == 2 || i == 3)\n || v0 && i10 != 4 && i10 != 6 && i10 != 9\n || !v0 && f10 != 4 && f10 != 6 && f10 != 9) ? 'one' : 'other';\n},\n\nfo: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nfr: function(n, ord\n) {\n if (ord) return (n == 1) ? 'one' : 'other';\n return (n >= 0 && n < 2) ? 'one' : 'other';\n},\n\nfur: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nfy: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nga: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return (n == 1) ? 'one' : 'other';\n return (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : ((t0 && n >= 3 && n <= 6)) ? 'few'\n : ((t0 && n >= 7 && n <= 10)) ? 'many'\n : 'other';\n},\n\ngd: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return ((n == 1\n || n == 11)) ? 'one'\n : ((n == 2\n || n == 12)) ? 'two'\n : ((n == 3\n || n == 13)) ? 'few'\n : 'other';\n return ((n == 1\n || n == 11)) ? 'one'\n : ((n == 2\n || n == 12)) ? 'two'\n : (((t0 && n >= 3 && n <= 10)\n || (t0 && n >= 13 && n <= 19))) ? 'few'\n : 'other';\n},\n\ngl: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\ngsw: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\ngu: function(n, ord\n) {\n if (ord) return (n == 1) ? 'one'\n : ((n == 2\n || n == 3)) ? 'two'\n : (n == 4) ? 'few'\n : (n == 6) ? 'many'\n : 'other';\n return (n >= 0 && n <= 1) ? 'one' : 'other';\n},\n\nguw: function(n, ord\n) {\n if (ord) return 'other';\n return ((n == 0\n || n == 1)) ? 'one' : 'other';\n},\n\ngv: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1),\n i100 = i.slice(-2);\n if (ord) return 'other';\n return (v0 && i10 == 1) ? 'one'\n : (v0 && i10 == 2) ? 'two'\n : (v0 && (i100 == 0 || i100 == 20 || i100 == 40 || i100 == 60\n || i100 == 80)) ? 'few'\n : (!v0) ? 'many'\n : 'other';\n},\n\nha: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nhaw: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nhe: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], v0 = !s[1], t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1);\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one'\n : (i == 2 && v0) ? 'two'\n : (v0 && (n < 0\n || n > 10) && t0 && n10 == 0) ? 'many'\n : 'other';\n},\n\nhi: function(n, ord\n) {\n if (ord) return (n == 1) ? 'one'\n : ((n == 2\n || n == 3)) ? 'two'\n : (n == 4) ? 'few'\n : (n == 6) ? 'many'\n : 'other';\n return (n >= 0 && n <= 1) ? 'one' : 'other';\n},\n\nhr: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1],\n i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return (v0 && i10 == 1 && i100 != 11\n || f10 == 1 && f100 != 11) ? 'one'\n : (v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14)\n || (f10 >= 2 && f10 <= 4) && (f100 < 12\n || f100 > 14)) ? 'few'\n : 'other';\n},\n\nhsb: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1],\n i100 = i.slice(-2), f100 = f.slice(-2);\n if (ord) return 'other';\n return (v0 && i100 == 1\n || f100 == 1) ? 'one'\n : (v0 && i100 == 2\n || f100 == 2) ? 'two'\n : (v0 && (i100 == 3 || i100 == 4) || (f100 == 3\n || f100 == 4)) ? 'few'\n : 'other';\n},\n\nhu: function(n, ord\n) {\n if (ord) return ((n == 1\n || n == 5)) ? 'one' : 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nhy: function(n, ord\n) {\n if (ord) return (n == 1) ? 'one' : 'other';\n return (n >= 0 && n < 2) ? 'one' : 'other';\n},\n\nia: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nid: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nig: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nii: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\n\"in\": function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nio: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nis: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], t0 = Number(s[0]) == n,\n i10 = i.slice(-1), i100 = i.slice(-2);\n if (ord) return 'other';\n return (t0 && i10 == 1 && i100 != 11\n || !t0) ? 'one' : 'other';\n},\n\nit: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return ((n == 11 || n == 8 || n == 80\n || n == 800)) ? 'many' : 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\niu: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : 'other';\n},\n\niw: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], v0 = !s[1], t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1);\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one'\n : (i == 2 && v0) ? 'two'\n : (v0 && (n < 0\n || n > 10) && t0 && n10 == 0) ? 'many'\n : 'other';\n},\n\nja: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\njbo: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\njgo: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nji: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\njmc: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\njv: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\njw: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nka: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], i100 = i.slice(-2);\n if (ord) return (i == 1) ? 'one'\n : (i == 0 || ((i100 >= 2 && i100 <= 20) || i100 == 40 || i100 == 60\n || i100 == 80)) ? 'many'\n : 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nkab: function(n, ord\n) {\n if (ord) return 'other';\n return (n >= 0 && n < 2) ? 'one' : 'other';\n},\n\nkaj: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nkcg: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nkde: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nkea: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nkk: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1);\n if (ord) return (n10 == 6 || n10 == 9\n || t0 && n10 == 0 && n != 0) ? 'many' : 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nkkj: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nkl: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nkm: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nkn: function(n, ord\n) {\n if (ord) return 'other';\n return (n >= 0 && n <= 1) ? 'one' : 'other';\n},\n\nko: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nks: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nksb: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nksh: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 0) ? 'zero'\n : (n == 1) ? 'one'\n : 'other';\n},\n\nku: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nkw: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : 'other';\n},\n\nky: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nlag: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0];\n if (ord) return 'other';\n return (n == 0) ? 'zero'\n : ((i == 0\n || i == 1) && n != 0) ? 'one'\n : 'other';\n},\n\nlb: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nlg: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nlkt: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nln: function(n, ord\n) {\n if (ord) return 'other';\n return ((n == 0\n || n == 1)) ? 'one' : 'other';\n},\n\nlo: function(n, ord\n) {\n if (ord) return (n == 1) ? 'one' : 'other';\n return 'other';\n},\n\nlt: function(n, ord\n) {\n var s = String(n).split('.'), f = s[1] || '', t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return (n10 == 1 && (n100 < 11\n || n100 > 19)) ? 'one'\n : ((n10 >= 2 && n10 <= 9) && (n100 < 11\n || n100 > 19)) ? 'few'\n : (f != 0) ? 'many'\n : 'other';\n},\n\nlv: function(n, ord\n) {\n var s = String(n).split('.'), f = s[1] || '', v = f.length,\n t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2), f100 = f.slice(-2), f10 = f.slice(-1);\n if (ord) return 'other';\n return (t0 && n10 == 0 || (n100 >= 11 && n100 <= 19)\n || v == 2 && (f100 >= 11 && f100 <= 19)) ? 'zero'\n : (n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11\n || v != 2 && f10 == 1) ? 'one'\n : 'other';\n},\n\nmas: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nmg: function(n, ord\n) {\n if (ord) return 'other';\n return ((n == 0\n || n == 1)) ? 'one' : 'other';\n},\n\nmgo: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nmk: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1],\n i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return (i10 == 1 && i100 != 11) ? 'one'\n : (i10 == 2 && i100 != 12) ? 'two'\n : ((i10 == 7\n || i10 == 8) && i100 != 17 && i100 != 18) ? 'many'\n : 'other';\n return (v0 && i10 == 1 && i100 != 11\n || f10 == 1 && f100 != 11) ? 'one' : 'other';\n},\n\nml: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nmn: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nmo: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n if (ord) return (n == 1) ? 'one' : 'other';\n return (n == 1 && v0) ? 'one'\n : (!v0 || n == 0\n || n != 1 && (n100 >= 1 && n100 <= 19)) ? 'few'\n : 'other';\n},\n\nmr: function(n, ord\n) {\n if (ord) return (n == 1) ? 'one'\n : ((n == 2\n || n == 3)) ? 'two'\n : (n == 4) ? 'few'\n : 'other';\n return (n >= 0 && n <= 1) ? 'one' : 'other';\n},\n\nms: function(n, ord\n) {\n if (ord) return (n == 1) ? 'one' : 'other';\n return 'other';\n},\n\nmt: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n if (ord) return 'other';\n return (n == 1) ? 'one'\n : (n == 0\n || (n100 >= 2 && n100 <= 10)) ? 'few'\n : ((n100 >= 11 && n100 <= 19)) ? 'many'\n : 'other';\n},\n\nmy: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nnah: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nnaq: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : 'other';\n},\n\nnb: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nnd: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nne: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return ((t0 && n >= 1 && n <= 4)) ? 'one' : 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nnl: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nnn: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nnnh: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nno: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nnqo: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nnr: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nnso: function(n, ord\n) {\n if (ord) return 'other';\n return ((n == 0\n || n == 1)) ? 'one' : 'other';\n},\n\nny: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nnyn: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nom: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nor: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return ((n == 1 || n == 5\n || (t0 && n >= 7 && n <= 9))) ? 'one'\n : ((n == 2\n || n == 3)) ? 'two'\n : (n == 4) ? 'few'\n : (n == 6) ? 'many'\n : 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nos: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\npa: function(n, ord\n) {\n if (ord) return 'other';\n return ((n == 0\n || n == 1)) ? 'one' : 'other';\n},\n\npap: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\npl: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1),\n i100 = i.slice(-2);\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one'\n : (v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12\n || i100 > 14)) ? 'few'\n : (v0 && i != 1 && (i10 == 0 || i10 == 1)\n || v0 && (i10 >= 5 && i10 <= 9)\n || v0 && (i100 >= 12 && i100 <= 14)) ? 'many'\n : 'other';\n},\n\nprg: function(n, ord\n) {\n var s = String(n).split('.'), f = s[1] || '', v = f.length,\n t0 = Number(s[0]) == n, n10 = t0 && s[0].slice(-1),\n n100 = t0 && s[0].slice(-2), f100 = f.slice(-2), f10 = f.slice(-1);\n if (ord) return 'other';\n return (t0 && n10 == 0 || (n100 >= 11 && n100 <= 19)\n || v == 2 && (f100 >= 11 && f100 <= 19)) ? 'zero'\n : (n10 == 1 && n100 != 11 || v == 2 && f10 == 1 && f100 != 11\n || v != 2 && f10 == 1) ? 'one'\n : 'other';\n},\n\nps: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\npt: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0];\n if (ord) return 'other';\n return ((i == 0\n || i == 1)) ? 'one' : 'other';\n},\n\n\"pt-PT\": function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nrm: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nro: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n,\n n100 = t0 && s[0].slice(-2);\n if (ord) return (n == 1) ? 'one' : 'other';\n return (n == 1 && v0) ? 'one'\n : (!v0 || n == 0\n || n != 1 && (n100 >= 1 && n100 <= 19)) ? 'few'\n : 'other';\n},\n\nrof: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nroot: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nru: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], v0 = !s[1], i10 = i.slice(-1),\n i100 = i.slice(-2);\n if (ord) return 'other';\n return (v0 && i10 == 1 && i100 != 11) ? 'one'\n : (v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12\n || i100 > 14)) ? 'few'\n : (v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9)\n || v0 && (i100 >= 11 && i100 <= 14)) ? 'many'\n : 'other';\n},\n\nrwk: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nsah: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nsaq: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nsc: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return ((n == 11 || n == 8 || n == 80\n || n == 800)) ? 'many' : 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nscn: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return ((n == 11 || n == 8 || n == 80\n || n == 800)) ? 'many' : 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nsd: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nsdh: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nse: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : 'other';\n},\n\nseh: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nses: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nsg: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nsh: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1],\n i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return (v0 && i10 == 1 && i100 != 11\n || f10 == 1 && f100 != 11) ? 'one'\n : (v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14)\n || (f10 >= 2 && f10 <= 4) && (f100 < 12\n || f100 > 14)) ? 'few'\n : 'other';\n},\n\nshi: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return (n >= 0 && n <= 1) ? 'one'\n : ((t0 && n >= 2 && n <= 10)) ? 'few'\n : 'other';\n},\n\nsi: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], f = s[1] || '';\n if (ord) return 'other';\n return ((n == 0 || n == 1)\n || i == 0 && f == 1) ? 'one' : 'other';\n},\n\nsk: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one'\n : ((i >= 2 && i <= 4) && v0) ? 'few'\n : (!v0) ? 'many'\n : 'other';\n},\n\nsl: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], v0 = !s[1], i100 = i.slice(-2);\n if (ord) return 'other';\n return (v0 && i100 == 1) ? 'one'\n : (v0 && i100 == 2) ? 'two'\n : (v0 && (i100 == 3 || i100 == 4)\n || !v0) ? 'few'\n : 'other';\n},\n\nsma: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : 'other';\n},\n\nsmi: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : 'other';\n},\n\nsmj: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : 'other';\n},\n\nsmn: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : 'other';\n},\n\nsms: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one'\n : (n == 2) ? 'two'\n : 'other';\n},\n\nsn: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nso: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nsq: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return (n == 1) ? 'one'\n : (n10 == 4 && n100 != 14) ? 'many'\n : 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nsr: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1],\n i10 = i.slice(-1), i100 = i.slice(-2), f10 = f.slice(-1), f100 = f.slice(-2);\n if (ord) return 'other';\n return (v0 && i10 == 1 && i100 != 11\n || f10 == 1 && f100 != 11) ? 'one'\n : (v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12 || i100 > 14)\n || (f10 >= 2 && f10 <= 4) && (f100 < 12\n || f100 > 14)) ? 'few'\n : 'other';\n},\n\nss: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nssy: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nst: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nsv: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1], t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2);\n if (ord) return ((n10 == 1\n || n10 == 2) && n100 != 11 && n100 != 12) ? 'one' : 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nsw: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nsyr: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nta: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nte: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nteo: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nth: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nti: function(n, ord\n) {\n if (ord) return 'other';\n return ((n == 0\n || n == 1)) ? 'one' : 'other';\n},\n\ntig: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\ntk: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1);\n if (ord) return ((n10 == 6 || n10 == 9)\n || n == 10) ? 'few' : 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\ntl: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], f = s[1] || '', v0 = !s[1],\n i10 = i.slice(-1), f10 = f.slice(-1);\n if (ord) return (n == 1) ? 'one' : 'other';\n return (v0 && (i == 1 || i == 2 || i == 3)\n || v0 && i10 != 4 && i10 != 6 && i10 != 9\n || !v0 && f10 != 4 && f10 != 6 && f10 != 9) ? 'one' : 'other';\n},\n\ntn: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nto: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\ntr: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nts: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\ntzm: function(n, ord\n) {\n var s = String(n).split('.'), t0 = Number(s[0]) == n;\n if (ord) return 'other';\n return ((n == 0 || n == 1)\n || (t0 && n >= 11 && n <= 99)) ? 'one' : 'other';\n},\n\nug: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nuk: function(n, ord\n) {\n var s = String(n).split('.'), i = s[0], v0 = !s[1], t0 = Number(s[0]) == n,\n n10 = t0 && s[0].slice(-1), n100 = t0 && s[0].slice(-2), i10 = i.slice(-1),\n i100 = i.slice(-2);\n if (ord) return (n10 == 3 && n100 != 13) ? 'few' : 'other';\n return (v0 && i10 == 1 && i100 != 11) ? 'one'\n : (v0 && (i10 >= 2 && i10 <= 4) && (i100 < 12\n || i100 > 14)) ? 'few'\n : (v0 && i10 == 0 || v0 && (i10 >= 5 && i10 <= 9)\n || v0 && (i100 >= 11 && i100 <= 14)) ? 'many'\n : 'other';\n},\n\nur: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nuz: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nve: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nvi: function(n, ord\n) {\n if (ord) return (n == 1) ? 'one' : 'other';\n return 'other';\n},\n\nvo: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nvun: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nwa: function(n, ord\n) {\n if (ord) return 'other';\n return ((n == 0\n || n == 1)) ? 'one' : 'other';\n},\n\nwae: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nwo: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nxh: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nxog: function(n, ord\n) {\n if (ord) return 'other';\n return (n == 1) ? 'one' : 'other';\n},\n\nyi: function(n, ord\n) {\n var s = String(n).split('.'), v0 = !s[1];\n if (ord) return 'other';\n return (n == 1 && v0) ? 'one' : 'other';\n},\n\nyo: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nyue: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nzh: function(n, ord\n) {\n if (ord) return 'other';\n return 'other';\n},\n\nzu: function(n, ord\n) {\n if (ord) return 'other';\n return (n >= 0 && n <= 1) ? 'one' : 'other';\n}\n}));\n","/**\n * @classdesc\n * Default number formatting functions in the style of ICU's\n * {@link http://icu-project.org/apiref/icu4j/com/ibm/icu/text/MessageFormat.html simpleArg syntax}\n * implemented using the\n * {@link https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl Intl}\n * object defined by ECMA-402.\n *\n * In MessageFormat source, a formatter function is called with the syntax\n * `{var, name, arg}`, where `var` is a variable, `name` is the formatter name\n * (by default, either `date`, `duration`, `number` or `time`; `spellout` and\n * `ordinal` are not supported by default), and `arg` is an optional string\n * argument.\n *\n * In JavaScript, a formatter is a function called with three parameters:\n * - The **`value`** of the variable; this can be of any user-defined type\n * - The current **`locale`** code\n * - The trimmed **`arg`** string value, or `null` if not set\n *\n * As formatter functions may be used in a precompiled context, they should not\n * refer to any variables that are not defined by the function parameters or\n * within the function body. To add your own formatter, either add it to the\n * static `MessageFormat.formatters` object, or use\n * {@link MessageFormat#addFormatters} to add it to a MessageFormat instance.\n *\n * @class Formatters\n * @hideconstructor\n */\n\nmodule.exports = {\n date: require('./lib/date'),\n duration: require('./lib/duration'),\n number: require('./lib/number'),\n time: require('./lib/time')\n};\n","/*\n * Generated by PEG.js 0.10.0.\n *\n * http://pegjs.org/\n */\n\n\"use strict\";\n\nfunction peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n}\n\nfunction peg$SyntaxError(message, expected, found, location) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.location = location;\n this.name = \"SyntaxError\";\n\n if (typeof Error.captureStackTrace === \"function\") {\n Error.captureStackTrace(this, peg$SyntaxError);\n }\n}\n\npeg$subclass(peg$SyntaxError, Error);\n\npeg$SyntaxError.buildMessage = function(expected, found) {\n var DESCRIBE_EXPECTATION_FNS = {\n literal: function(expectation) {\n return \"\\\"\" + literalEscape(expectation.text) + \"\\\"\";\n },\n\n \"class\": function(expectation) {\n var escapedParts = \"\",\n i;\n\n for (i = 0; i < expectation.parts.length; i++) {\n escapedParts += expectation.parts[i] instanceof Array\n ? classEscape(expectation.parts[i][0]) + \"-\" + classEscape(expectation.parts[i][1])\n : classEscape(expectation.parts[i]);\n }\n\n return \"[\" + (expectation.inverted ? \"^\" : \"\") + escapedParts + \"]\";\n },\n\n any: function(expectation) {\n return \"any character\";\n },\n\n end: function(expectation) {\n return \"end of input\";\n },\n\n other: function(expectation) {\n return expectation.description;\n }\n };\n\n function hex(ch) {\n return ch.charCodeAt(0).toString(16).toUpperCase();\n }\n\n function literalEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function classEscape(s) {\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\]/g, '\\\\]')\n .replace(/\\^/g, '\\\\^')\n .replace(/-/g, '\\\\-')\n .replace(/\\0/g, '\\\\0')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x7F-\\x9F]/g, function(ch) { return '\\\\x' + hex(ch); });\n }\n\n function describeExpectation(expectation) {\n return DESCRIBE_EXPECTATION_FNS[expectation.type](expectation);\n }\n\n function describeExpected(expected) {\n var descriptions = new Array(expected.length),\n i, j;\n\n for (i = 0; i < expected.length; i++) {\n descriptions[i] = describeExpectation(expected[i]);\n }\n\n descriptions.sort();\n\n if (descriptions.length > 0) {\n for (i = 1, j = 1; i < descriptions.length; i++) {\n if (descriptions[i - 1] !== descriptions[i]) {\n descriptions[j] = descriptions[i];\n j++;\n }\n }\n descriptions.length = j;\n }\n\n switch (descriptions.length) {\n case 1:\n return descriptions[0];\n\n case 2:\n return descriptions[0] + \" or \" + descriptions[1];\n\n default:\n return descriptions.slice(0, -1).join(\", \")\n + \", or \"\n + descriptions[descriptions.length - 1];\n }\n }\n\n function describeFound(found) {\n return found ? \"\\\"\" + literalEscape(found) + \"\\\"\" : \"end of input\";\n }\n\n return \"Expected \" + describeExpected(expected) + \" but \" + describeFound(found) + \" found.\";\n};\n\nfunction peg$parse(input, options) {\n options = options !== void 0 ? options : {};\n\n var peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = \"#\",\n peg$c1 = peg$literalExpectation(\"#\", false),\n peg$c2 = function() { return inPlural[0]; },\n peg$c3 = function() { return { type: 'octothorpe' }; },\n peg$c4 = function(str) { return str.join(''); },\n peg$c5 = \"{\",\n peg$c6 = peg$literalExpectation(\"{\", false),\n peg$c7 = \"}\",\n peg$c8 = peg$literalExpectation(\"}\", false),\n peg$c9 = function(arg) {\n return {\n type: 'argument',\n arg: arg\n };\n },\n peg$c10 = \",\",\n peg$c11 = peg$literalExpectation(\",\", false),\n peg$c12 = \"select\",\n peg$c13 = peg$literalExpectation(\"select\", false),\n peg$c14 = function(arg, m) { if (options.strict) { inPlural.unshift(false); } return m; },\n peg$c15 = function(arg, cases) {\n if (options.strict) inPlural.shift()\n return {\n type: 'select',\n arg: arg,\n cases: cases\n };\n },\n peg$c16 = \"plural\",\n peg$c17 = peg$literalExpectation(\"plural\", false),\n peg$c18 = \"selectordinal\",\n peg$c19 = peg$literalExpectation(\"selectordinal\", false),\n peg$c20 = function(arg, m) { inPlural.unshift(true); return m; },\n peg$c21 = function(arg, type, offset, cases) {\n var ls = ((type === 'selectordinal') ? options.ordinal : options.cardinal)\n || ['zero', 'one', 'two', 'few', 'many', 'other'];\n if (ls && ls.length) cases.forEach(function(c) {\n if (isNaN(c.key) && ls.indexOf(c.key) < 0) throw new Error(\n 'Invalid key `' + c.key + '` for argument `' + arg + '`.' +\n ' Valid ' + type + ' keys for this locale are `' + ls.join('`, `') +\n '`, and explicit keys like `=0`.');\n });\n inPlural.shift()\n return {\n type: type,\n arg: arg,\n offset: offset || 0,\n cases: cases\n };\n },\n peg$c22 = function(arg, key, param) {\n return {\n type: 'function',\n arg: arg,\n key: key,\n param: param\n };\n },\n peg$c23 = peg$otherExpectation(\"identifier\"),\n peg$c24 = /^[^\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029!-\\/:-@[-\\^`{-~\\xA1-\\xA7\\xA9\\xAB\\xAC\\xAE\\xB0\\xB1\\xB6\\xBB\\xBF\\xD7\\xF7\\u2010-\\u2027\\u2030-\\u203E\\u2041-\\u2053\\u2055-\\u205E\\u2190-\\u245F\\u2500-\\u2775\\u2794-\\u2BFF\\u2E00-\\u2E7F\\u3001-\\u3003\\u3008-\\u3020\\u3030\\uFD3E\\uFD3F\\uFE45\\uFE46]/,\n peg$c25 = peg$classExpectation([[\"\\t\", \"\\r\"], \" \", \"\\x85\", \"\\u200E\", \"\\u200F\", \"\\u2028\", \"\\u2029\", [\"!\", \"/\"], [\":\", \"@\"], [\"[\", \"^\"], \"`\", [\"{\", \"~\"], [\"\\xA1\", \"\\xA7\"], \"\\xA9\", \"\\xAB\", \"\\xAC\", \"\\xAE\", \"\\xB0\", \"\\xB1\", \"\\xB6\", \"\\xBB\", \"\\xBF\", \"\\xD7\", \"\\xF7\", [\"\\u2010\", \"\\u2027\"], [\"\\u2030\", \"\\u203E\"], [\"\\u2041\", \"\\u2053\"], [\"\\u2055\", \"\\u205E\"], [\"\\u2190\", \"\\u245F\"], [\"\\u2500\", \"\\u2775\"], [\"\\u2794\", \"\\u2BFF\"], [\"\\u2E00\", \"\\u2E7F\"], [\"\\u3001\", \"\\u3003\"], [\"\\u3008\", \"\\u3020\"], \"\\u3030\", \"\\uFD3E\", \"\\uFD3F\", \"\\uFE45\", \"\\uFE46\"], true, false),\n peg$c26 = function(key, tokens) { return { key: key, tokens: tokens }; },\n peg$c27 = function(tokens) { return tokens; },\n peg$c28 = peg$otherExpectation(\"plural offset\"),\n peg$c29 = \"offset\",\n peg$c30 = peg$literalExpectation(\"offset\", false),\n peg$c31 = \":\",\n peg$c32 = peg$literalExpectation(\":\", false),\n peg$c33 = function(d) { return d; },\n peg$c34 = \"=\",\n peg$c35 = peg$literalExpectation(\"=\", false),\n peg$c36 = \"number\",\n peg$c37 = peg$literalExpectation(\"number\", false),\n peg$c38 = \"date\",\n peg$c39 = peg$literalExpectation(\"date\", false),\n peg$c40 = \"time\",\n peg$c41 = peg$literalExpectation(\"time\", false),\n peg$c42 = \"spellout\",\n peg$c43 = peg$literalExpectation(\"spellout\", false),\n peg$c44 = \"ordinal\",\n peg$c45 = peg$literalExpectation(\"ordinal\", false),\n peg$c46 = \"duration\",\n peg$c47 = peg$literalExpectation(\"duration\", false),\n peg$c48 = function(key) {\n if (options.strict || /^\\d/.test(key)) return false\n switch (key.toLowerCase()) {\n case 'select':\n case 'plural':\n case 'selectordinal':\n return false\n default:\n return true\n }\n },\n peg$c49 = function(key) { return key },\n peg$c50 = function(tokens) { return !options.strict },\n peg$c51 = function(tokens) { return { tokens: tokens } },\n peg$c52 = function(parts) { return { tokens: [parts.join('')] } },\n peg$c53 = peg$otherExpectation(\"a valid (strict) function parameter\"),\n peg$c54 = /^[^'{}]/,\n peg$c55 = peg$classExpectation([\"'\", \"{\", \"}\"], true, false),\n peg$c56 = function(p) { return p.join('') },\n peg$c57 = \"'\",\n peg$c58 = peg$literalExpectation(\"'\", false),\n peg$c59 = function(quoted) { return quoted },\n peg$c60 = function(p) { return '{' + p.join('') + '}' },\n peg$c61 = peg$otherExpectation(\"doubled apostrophe\"),\n peg$c62 = \"''\",\n peg$c63 = peg$literalExpectation(\"''\", false),\n peg$c64 = function() { return \"'\"; },\n peg$c65 = /^[^']/,\n peg$c66 = peg$classExpectation([\"'\"], true, false),\n peg$c67 = \"'{\",\n peg$c68 = peg$literalExpectation(\"'{\", false),\n peg$c69 = function(str) { return '\\u007B'+str.join(''); },\n peg$c70 = \"'}\",\n peg$c71 = peg$literalExpectation(\"'}\", false),\n peg$c72 = function(str) { return '\\u007D'+str.join(''); },\n peg$c73 = peg$otherExpectation(\"escaped string\"),\n peg$c74 = \"'#\",\n peg$c75 = peg$literalExpectation(\"'#\", false),\n peg$c76 = function(str) { return \"#\"+str.join(''); },\n peg$c77 = function(quotedOcto) { return quotedOcto[0]; },\n peg$c78 = peg$otherExpectation(\"plain char\"),\n peg$c79 = /^[^{}#\\0-\\x08\\x0E-\\x1F\\x7F]/,\n peg$c80 = peg$classExpectation([\"{\", \"}\", \"#\", [\"\\0\", \"\\b\"], [\"\\x0E\", \"\\x1F\"], \"\\x7F\"], true, false),\n peg$c81 = function(octo) { return !inPlural[0]; },\n peg$c82 = function(octo) { return octo; },\n peg$c83 = peg$otherExpectation(\"integer\"),\n peg$c84 = /^[0-9]/,\n peg$c85 = peg$classExpectation([[\"0\", \"9\"]], false, false),\n peg$c86 = peg$otherExpectation(\"white space\"),\n peg$c87 = /^[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/,\n peg$c88 = peg$classExpectation([[\"\\t\", \"\\r\"], \" \", \"\\x85\", \"\\u200E\", \"\\u200F\", \"\\u2028\", \"\\u2029\"], false, false),\n\n peg$currPos = 0,\n peg$savedPos = 0,\n peg$posDetailsCache = [{ line: 1, column: 1 }],\n peg$maxFailPos = 0,\n peg$maxFailExpected = [],\n peg$silentFails = 0,\n\n peg$result;\n\n if (\"startRule\" in options) {\n if (!(options.startRule in peg$startRuleFunctions)) {\n throw new Error(\"Can't start parsing from rule \\\"\" + options.startRule + \"\\\".\");\n }\n\n peg$startRuleFunction = peg$startRuleFunctions[options.startRule];\n }\n\n function text() {\n return input.substring(peg$savedPos, peg$currPos);\n }\n\n function location() {\n return peg$computeLocation(peg$savedPos, peg$currPos);\n }\n\n function expected(description, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildStructuredError(\n [peg$otherExpectation(description)],\n input.substring(peg$savedPos, peg$currPos),\n location\n );\n }\n\n function error(message, location) {\n location = location !== void 0 ? location : peg$computeLocation(peg$savedPos, peg$currPos)\n\n throw peg$buildSimpleError(message, location);\n }\n\n function peg$literalExpectation(text, ignoreCase) {\n return { type: \"literal\", text: text, ignoreCase: ignoreCase };\n }\n\n function peg$classExpectation(parts, inverted, ignoreCase) {\n return { type: \"class\", parts: parts, inverted: inverted, ignoreCase: ignoreCase };\n }\n\n function peg$anyExpectation() {\n return { type: \"any\" };\n }\n\n function peg$endExpectation() {\n return { type: \"end\" };\n }\n\n function peg$otherExpectation(description) {\n return { type: \"other\", description: description };\n }\n\n function peg$computePosDetails(pos) {\n var details = peg$posDetailsCache[pos], p;\n\n if (details) {\n return details;\n } else {\n p = pos - 1;\n while (!peg$posDetailsCache[p]) {\n p--;\n }\n\n details = peg$posDetailsCache[p];\n details = {\n line: details.line,\n column: details.column\n };\n\n while (p < pos) {\n if (input.charCodeAt(p) === 10) {\n details.line++;\n details.column = 1;\n } else {\n details.column++;\n }\n\n p++;\n }\n\n peg$posDetailsCache[pos] = details;\n return details;\n }\n }\n\n function peg$computeLocation(startPos, endPos) {\n var startPosDetails = peg$computePosDetails(startPos),\n endPosDetails = peg$computePosDetails(endPos);\n\n return {\n start: {\n offset: startPos,\n line: startPosDetails.line,\n column: startPosDetails.column\n },\n end: {\n offset: endPos,\n line: endPosDetails.line,\n column: endPosDetails.column\n }\n };\n }\n\n function peg$fail(expected) {\n if (peg$currPos < peg$maxFailPos) { return; }\n\n if (peg$currPos > peg$maxFailPos) {\n peg$maxFailPos = peg$currPos;\n peg$maxFailExpected = [];\n }\n\n peg$maxFailExpected.push(expected);\n }\n\n function peg$buildSimpleError(message, location) {\n return new peg$SyntaxError(message, null, null, location);\n }\n\n function peg$buildStructuredError(expected, found, location) {\n return new peg$SyntaxError(\n peg$SyntaxError.buildMessage(expected, found),\n expected,\n found,\n location\n );\n }\n\n function peg$parsestart() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parsetoken();\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parsetoken();\n }\n\n return s0;\n }\n\n function peg$parsetoken() {\n var s0, s1, s2;\n\n s0 = peg$parseargument();\n if (s0 === peg$FAILED) {\n s0 = peg$parseselect();\n if (s0 === peg$FAILED) {\n s0 = peg$parseplural();\n if (s0 === peg$FAILED) {\n s0 = peg$parsefunction();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c0;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c2();\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c3();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parsechar();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parsechar();\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c4(s1);\n }\n s0 = s1;\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseargument() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseid();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s5 = peg$c7;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c9(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseselect() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseid();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c10;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c12) {\n s8 = peg$c12;\n peg$currPos += 6;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s7;\n s8 = peg$c14(s3, s8);\n }\n s7 = s8;\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s9 = peg$c10;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s11 = [];\n s12 = peg$parseselectCase();\n if (s12 !== peg$FAILED) {\n while (s12 !== peg$FAILED) {\n s11.push(s12);\n s12 = peg$parseselectCase();\n }\n } else {\n s11 = peg$FAILED;\n }\n if (s11 !== peg$FAILED) {\n s12 = peg$parse_();\n if (s12 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s13 = peg$c7;\n peg$currPos++;\n } else {\n s13 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s13 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c15(s3, s11);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseplural() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10, s11, s12, s13, s14;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseid();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c10;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n s7 = peg$currPos;\n if (input.substr(peg$currPos, 6) === peg$c16) {\n s8 = peg$c16;\n peg$currPos += 6;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s8 === peg$FAILED) {\n if (input.substr(peg$currPos, 13) === peg$c18) {\n s8 = peg$c18;\n peg$currPos += 13;\n } else {\n s8 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n }\n if (s8 !== peg$FAILED) {\n peg$savedPos = s7;\n s8 = peg$c20(s3, s8);\n }\n s7 = s8;\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s9 = peg$c10;\n peg$currPos++;\n } else {\n s9 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s9 !== peg$FAILED) {\n s10 = peg$parse_();\n if (s10 !== peg$FAILED) {\n s11 = peg$parseoffset();\n if (s11 === peg$FAILED) {\n s11 = null;\n }\n if (s11 !== peg$FAILED) {\n s12 = [];\n s13 = peg$parsepluralCase();\n if (s13 !== peg$FAILED) {\n while (s13 !== peg$FAILED) {\n s12.push(s13);\n s13 = peg$parsepluralCase();\n }\n } else {\n s12 = peg$FAILED;\n }\n if (s12 !== peg$FAILED) {\n s13 = peg$parse_();\n if (s13 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s14 = peg$c7;\n peg$currPos++;\n } else {\n s14 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s14 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c21(s3, s7, s11, s12);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsefunction() {\n var s0, s1, s2, s3, s4, s5, s6, s7, s8, s9, s10;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parse_();\n if (s2 !== peg$FAILED) {\n s3 = peg$parseid();\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s5 = peg$c10;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s5 !== peg$FAILED) {\n s6 = peg$parse_();\n if (s6 !== peg$FAILED) {\n s7 = peg$parsefunctionKey();\n if (s7 !== peg$FAILED) {\n s8 = peg$parse_();\n if (s8 !== peg$FAILED) {\n s9 = peg$parsefunctionParam();\n if (s9 === peg$FAILED) {\n s9 = null;\n }\n if (s9 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s10 = peg$c7;\n peg$currPos++;\n } else {\n s10 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s10 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c22(s3, s7, s9);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseid() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n if (peg$c24.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c24.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c25); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c23); }\n }\n\n return s0;\n }\n\n function peg$parseselectCase() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parseid();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsecaseTokens();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsepluralCase() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n s2 = peg$parsepluralKey();\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$parsecaseTokens();\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c26(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parsecaseTokens() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n s4 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 123) {\n s5 = peg$c5;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n peg$silentFails--;\n if (s5 !== peg$FAILED) {\n peg$currPos = s4;\n s4 = void 0;\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n s3 = [s3, s4];\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 === peg$FAILED) {\n s2 = null;\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsetoken();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsetoken();\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parse_();\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s5 = peg$c7;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c27(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n\n return s0;\n }\n\n function peg$parseoffset() {\n var s0, s1, s2, s3, s4, s5, s6, s7;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.substr(peg$currPos, 6) === peg$c29) {\n s2 = peg$c29;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c30); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parse_();\n if (s3 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 58) {\n s4 = peg$c31;\n peg$currPos++;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s4 !== peg$FAILED) {\n s5 = peg$parse_();\n if (s5 !== peg$FAILED) {\n s6 = peg$parsedigits();\n if (s6 !== peg$FAILED) {\n s7 = peg$parse_();\n if (s7 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c33(s6);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c28); }\n }\n\n return s0;\n }\n\n function peg$parsepluralKey() {\n var s0, s1, s2;\n\n s0 = peg$parseid();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s1 = peg$c34;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c35); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parsedigits();\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c33(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsefunctionKey() {\n var s0, s1, s2, s3, s4, s5;\n\n if (input.substr(peg$currPos, 6) === peg$c36) {\n s0 = peg$c36;\n peg$currPos += 6;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c38) {\n s0 = peg$c38;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c39); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 4) === peg$c40) {\n s0 = peg$c40;\n peg$currPos += 4;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c41); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c42) {\n s0 = peg$c42;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c43); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 7) === peg$c44) {\n s0 = peg$c44;\n peg$currPos += 7;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c45); }\n }\n if (s0 === peg$FAILED) {\n if (input.substr(peg$currPos, 8) === peg$c46) {\n s0 = peg$c46;\n peg$currPos += 8;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c47); }\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 6) === peg$c12) {\n s2 = peg$c12;\n peg$currPos += 6;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = void 0;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 6) === peg$c16) {\n s3 = peg$c16;\n peg$currPos += 6;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n peg$silentFails--;\n if (s3 === peg$FAILED) {\n s2 = void 0;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$currPos;\n peg$silentFails++;\n if (input.substr(peg$currPos, 13) === peg$c18) {\n s4 = peg$c18;\n peg$currPos += 13;\n } else {\n s4 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c19); }\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = void 0;\n } else {\n peg$currPos = s3;\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseid();\n if (s4 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s5 = peg$c48(s4);\n if (s5) {\n s5 = void 0;\n } else {\n s5 = peg$FAILED;\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c49(s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsefunctionParam() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s2 = peg$c10;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsetoken();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsetoken();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s4 = peg$c50(s3);\n if (s4) {\n s4 = void 0;\n } else {\n s4 = peg$FAILED;\n }\n if (s4 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c51(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parse_();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 44) {\n s2 = peg$c10;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c11); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parsestrictFunctionParamPart();\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parsestrictFunctionParamPart();\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c52(s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsestrictFunctionParamPart() {\n var s0, s1, s2, s3;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n if (peg$c54.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c54.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c55); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c56(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n s0 = peg$parsedoubleapos();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 39) {\n s1 = peg$c57;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseinapos();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s3 = peg$c57;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c59(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 123) {\n s1 = peg$c5;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c6); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parsestrictFunctionParamPart();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parsestrictFunctionParamPart();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s3 = peg$c7;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c8); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c60(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c53); }\n }\n\n return s0;\n }\n\n function peg$parsedoubleapos() {\n var s0, s1;\n\n peg$silentFails++;\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c62) {\n s1 = peg$c62;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c63); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c64();\n }\n s0 = s1;\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c61); }\n }\n\n return s0;\n }\n\n function peg$parseinapos() {\n var s0, s1, s2;\n\n s0 = peg$parsedoubleapos();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n if (peg$c65.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c66); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c65.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c66); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c4(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parsequotedCurly() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c67) {\n s1 = peg$c67;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c68); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseinapos();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseinapos();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s3 = peg$c57;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c69(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c70) {\n s1 = peg$c70;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c71); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n s3 = peg$parseinapos();\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n s3 = peg$parseinapos();\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s3 = peg$c57;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s3 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c72(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n }\n\n return s0;\n }\n\n function peg$parsequoted() {\n var s0, s1, s2, s3, s4, s5;\n\n peg$silentFails++;\n s0 = peg$parsequotedCurly();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n s2 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c74) {\n s3 = peg$c74;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c75); }\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseinapos();\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseinapos();\n }\n if (s4 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s5 = peg$c57;\n peg$currPos++;\n } else {\n s5 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n if (s5 !== peg$FAILED) {\n peg$savedPos = s2;\n s3 = peg$c76(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s3 = peg$c2();\n if (s3) {\n s3 = void 0;\n } else {\n s3 = peg$FAILED;\n }\n if (s3 !== peg$FAILED) {\n s2 = [s2, s3];\n s1 = s2;\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n } else {\n peg$currPos = s1;\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c77(s1);\n }\n s0 = s1;\n if (s0 === peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 39) {\n s0 = peg$c57;\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c58); }\n }\n }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c73); }\n }\n\n return s0;\n }\n\n function peg$parseplainChar() {\n var s0, s1;\n\n peg$silentFails++;\n if (peg$c79.test(input.charAt(peg$currPos))) {\n s0 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s0 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c80); }\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c78); }\n }\n\n return s0;\n }\n\n function peg$parsechar() {\n var s0, s1, s2;\n\n s0 = peg$parsedoubleapos();\n if (s0 === peg$FAILED) {\n s0 = peg$parsequoted();\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 35) {\n s1 = peg$c0;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c1); }\n }\n if (s1 !== peg$FAILED) {\n peg$savedPos = peg$currPos;\n s2 = peg$c81(s1);\n if (s2) {\n s2 = void 0;\n } else {\n s2 = peg$FAILED;\n }\n if (s2 !== peg$FAILED) {\n peg$savedPos = s0;\n s1 = peg$c82(s1);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$FAILED;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseplainChar();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parsedigits() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n if (peg$c84.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c85); }\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c84.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c85); }\n }\n }\n } else {\n s1 = peg$FAILED;\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c83); }\n }\n\n return s0;\n }\n\n function peg$parse_() {\n var s0, s1, s2;\n\n peg$silentFails++;\n s0 = peg$currPos;\n s1 = [];\n if (peg$c87.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c88); }\n }\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n if (peg$c87.test(input.charAt(peg$currPos))) {\n s2 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c88); }\n }\n }\n if (s1 !== peg$FAILED) {\n s0 = input.substring(s0, peg$currPos);\n } else {\n s0 = s1;\n }\n peg$silentFails--;\n if (s0 === peg$FAILED) {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c86); }\n }\n\n return s0;\n }\n\n\n var inPlural = [false];\n\n\n peg$result = peg$startRuleFunction();\n\n if (peg$result !== peg$FAILED && peg$currPos === input.length) {\n return peg$result;\n } else {\n if (peg$result !== peg$FAILED && peg$currPos < input.length) {\n peg$fail(peg$endExpectation());\n }\n\n throw peg$buildStructuredError(\n peg$maxFailExpected,\n peg$maxFailPos < input.length ? input.charAt(peg$maxFailPos) : null,\n peg$maxFailPos < input.length\n ? peg$computeLocation(peg$maxFailPos, peg$maxFailPos + 1)\n : peg$computeLocation(peg$maxFailPos, peg$maxFailPos)\n );\n }\n}\n\nmodule.exports = {\n SyntaxError: peg$SyntaxError,\n parse: peg$parse\n};\n","var _cc = [\n {cardinal:[\"other\"],ordinal:[\"other\"]},\n {cardinal:[\"one\",\"other\"],ordinal:[\"other\"]},\n {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"other\"]},\n {cardinal:[\"one\",\"two\",\"other\"],ordinal:[\"other\"]}\n];\n\n(function (root, pluralCategories) {\n if (typeof define === 'function' && define.amd) {\n define(pluralCategories);\n } else if (typeof exports === 'object') {\n module.exports = pluralCategories;\n } else {\n root.pluralCategories = pluralCategories;\n }\n}(this, {\naf: _cc[1],\nak: _cc[1],\nam: _cc[1],\nar: {cardinal:[\"zero\",\"one\",\"two\",\"few\",\"many\",\"other\"],ordinal:[\"other\"]},\nars: {cardinal:[\"zero\",\"one\",\"two\",\"few\",\"many\",\"other\"],ordinal:[\"other\"]},\nas: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"two\",\"few\",\"many\",\"other\"]},\nasa: _cc[1],\nast: _cc[1],\naz: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"few\",\"many\",\"other\"]},\nbe: {cardinal:[\"one\",\"few\",\"many\",\"other\"],ordinal:[\"few\",\"other\"]},\nbem: _cc[1],\nbez: _cc[1],\nbg: _cc[1],\nbh: _cc[1],\nbm: _cc[0],\nbn: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"two\",\"few\",\"many\",\"other\"]},\nbo: _cc[0],\nbr: {cardinal:[\"one\",\"two\",\"few\",\"many\",\"other\"],ordinal:[\"other\"]},\nbrx: _cc[1],\nbs: {cardinal:[\"one\",\"few\",\"other\"],ordinal:[\"other\"]},\nca: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"two\",\"few\",\"other\"]},\nce: _cc[1],\ncgg: _cc[1],\nchr: _cc[1],\nckb: _cc[1],\ncs: {cardinal:[\"one\",\"few\",\"many\",\"other\"],ordinal:[\"other\"]},\ncy: {cardinal:[\"zero\",\"one\",\"two\",\"few\",\"many\",\"other\"],ordinal:[\"zero\",\"one\",\"two\",\"few\",\"many\",\"other\"]},\nda: _cc[1],\nde: _cc[1],\ndsb: {cardinal:[\"one\",\"two\",\"few\",\"other\"],ordinal:[\"other\"]},\ndv: _cc[1],\ndz: _cc[0],\nee: _cc[1],\nel: _cc[1],\nen: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"two\",\"few\",\"other\"]},\neo: _cc[1],\nes: _cc[1],\net: _cc[1],\neu: _cc[1],\nfa: _cc[1],\nff: _cc[1],\nfi: _cc[1],\nfil: _cc[2],\nfo: _cc[1],\nfr: _cc[2],\nfur: _cc[1],\nfy: _cc[1],\nga: {cardinal:[\"one\",\"two\",\"few\",\"many\",\"other\"],ordinal:[\"one\",\"other\"]},\ngd: {cardinal:[\"one\",\"two\",\"few\",\"other\"],ordinal:[\"one\",\"two\",\"few\",\"other\"]},\ngl: _cc[1],\ngsw: _cc[1],\ngu: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"two\",\"few\",\"many\",\"other\"]},\nguw: _cc[1],\ngv: {cardinal:[\"one\",\"two\",\"few\",\"many\",\"other\"],ordinal:[\"other\"]},\nha: _cc[1],\nhaw: _cc[1],\nhe: {cardinal:[\"one\",\"two\",\"many\",\"other\"],ordinal:[\"other\"]},\nhi: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"two\",\"few\",\"many\",\"other\"]},\nhr: {cardinal:[\"one\",\"few\",\"other\"],ordinal:[\"other\"]},\nhsb: {cardinal:[\"one\",\"two\",\"few\",\"other\"],ordinal:[\"other\"]},\nhu: _cc[2],\nhy: _cc[2],\nia: _cc[1],\nid: _cc[0],\nig: _cc[0],\nii: _cc[0],\n\"in\": _cc[0],\nio: _cc[1],\nis: _cc[1],\nit: {cardinal:[\"one\",\"other\"],ordinal:[\"many\",\"other\"]},\niu: _cc[3],\niw: {cardinal:[\"one\",\"two\",\"many\",\"other\"],ordinal:[\"other\"]},\nja: _cc[0],\njbo: _cc[0],\njgo: _cc[1],\nji: _cc[1],\njmc: _cc[1],\njv: _cc[0],\njw: _cc[0],\nka: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"many\",\"other\"]},\nkab: _cc[1],\nkaj: _cc[1],\nkcg: _cc[1],\nkde: _cc[0],\nkea: _cc[0],\nkk: {cardinal:[\"one\",\"other\"],ordinal:[\"many\",\"other\"]},\nkkj: _cc[1],\nkl: _cc[1],\nkm: _cc[0],\nkn: _cc[1],\nko: _cc[0],\nks: _cc[1],\nksb: _cc[1],\nksh: {cardinal:[\"zero\",\"one\",\"other\"],ordinal:[\"other\"]},\nku: _cc[1],\nkw: _cc[3],\nky: _cc[1],\nlag: {cardinal:[\"zero\",\"one\",\"other\"],ordinal:[\"other\"]},\nlb: _cc[1],\nlg: _cc[1],\nlkt: _cc[0],\nln: _cc[1],\nlo: {cardinal:[\"other\"],ordinal:[\"one\",\"other\"]},\nlt: {cardinal:[\"one\",\"few\",\"many\",\"other\"],ordinal:[\"other\"]},\nlv: {cardinal:[\"zero\",\"one\",\"other\"],ordinal:[\"other\"]},\nmas: _cc[1],\nmg: _cc[1],\nmgo: _cc[1],\nmk: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"two\",\"many\",\"other\"]},\nml: _cc[1],\nmn: _cc[1],\nmo: {cardinal:[\"one\",\"few\",\"other\"],ordinal:[\"one\",\"other\"]},\nmr: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"two\",\"few\",\"other\"]},\nms: {cardinal:[\"other\"],ordinal:[\"one\",\"other\"]},\nmt: {cardinal:[\"one\",\"few\",\"many\",\"other\"],ordinal:[\"other\"]},\nmy: _cc[0],\nnah: _cc[1],\nnaq: _cc[3],\nnb: _cc[1],\nnd: _cc[1],\nne: _cc[2],\nnl: _cc[1],\nnn: _cc[1],\nnnh: _cc[1],\nno: _cc[1],\nnqo: _cc[0],\nnr: _cc[1],\nnso: _cc[1],\nny: _cc[1],\nnyn: _cc[1],\nom: _cc[1],\nor: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"two\",\"few\",\"many\",\"other\"]},\nos: _cc[1],\npa: _cc[1],\npap: _cc[1],\npl: {cardinal:[\"one\",\"few\",\"many\",\"other\"],ordinal:[\"other\"]},\nprg: {cardinal:[\"zero\",\"one\",\"other\"],ordinal:[\"other\"]},\nps: _cc[1],\npt: _cc[1],\n\"pt-PT\": _cc[1],\nrm: _cc[1],\nro: {cardinal:[\"one\",\"few\",\"other\"],ordinal:[\"one\",\"other\"]},\nrof: _cc[1],\nroot: _cc[0],\nru: {cardinal:[\"one\",\"few\",\"many\",\"other\"],ordinal:[\"other\"]},\nrwk: _cc[1],\nsah: _cc[0],\nsaq: _cc[1],\nsc: {cardinal:[\"one\",\"other\"],ordinal:[\"many\",\"other\"]},\nscn: {cardinal:[\"one\",\"other\"],ordinal:[\"many\",\"other\"]},\nsd: _cc[1],\nsdh: _cc[1],\nse: _cc[3],\nseh: _cc[1],\nses: _cc[0],\nsg: _cc[0],\nsh: {cardinal:[\"one\",\"few\",\"other\"],ordinal:[\"other\"]},\nshi: {cardinal:[\"one\",\"few\",\"other\"],ordinal:[\"other\"]},\nsi: _cc[1],\nsk: {cardinal:[\"one\",\"few\",\"many\",\"other\"],ordinal:[\"other\"]},\nsl: {cardinal:[\"one\",\"two\",\"few\",\"other\"],ordinal:[\"other\"]},\nsma: _cc[3],\nsmi: _cc[3],\nsmj: _cc[3],\nsmn: _cc[3],\nsms: _cc[3],\nsn: _cc[1],\nso: _cc[1],\nsq: {cardinal:[\"one\",\"other\"],ordinal:[\"one\",\"many\",\"other\"]},\nsr: {cardinal:[\"one\",\"few\",\"other\"],ordinal:[\"other\"]},\nss: _cc[1],\nssy: _cc[1],\nst: _cc[1],\nsv: _cc[2],\nsw: _cc[1],\nsyr: _cc[1],\nta: _cc[1],\nte: _cc[1],\nteo: _cc[1],\nth: _cc[0],\nti: _cc[1],\ntig: _cc[1],\ntk: {cardinal:[\"one\",\"other\"],ordinal:[\"few\",\"other\"]},\ntl: _cc[2],\ntn: _cc[1],\nto: _cc[0],\ntr: _cc[1],\nts: _cc[1],\ntzm: _cc[1],\nug: _cc[1],\nuk: {cardinal:[\"one\",\"few\",\"many\",\"other\"],ordinal:[\"few\",\"other\"]},\nur: _cc[1],\nuz: _cc[1],\nve: _cc[1],\nvi: {cardinal:[\"other\"],ordinal:[\"one\",\"other\"]},\nvo: _cc[1],\nvun: _cc[1],\nwa: _cc[1],\nwae: _cc[1],\nwo: _cc[0],\nxh: _cc[1],\nxog: _cc[1],\nyi: _cc[1],\nyo: _cc[0],\nyue: _cc[0],\nzh: _cc[0],\nzu: _cc[1]\n}));\n","/* eslint-disable no-fallthrough */\n\n/** Represent a date as a short/default/long/full string\n *\n * The input value needs to be in a form that the\n * {@link https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date Date object}\n * can process using its single-argument form, `new Date(value)`.\n *\n * @memberof Formatters\n * @param {number|string} value - Either a Unix epoch time in milliseconds, or a string value representing a date\n * @param {string} [type='default'] - One of `'short'`, `'default'`, `'long'` , or `full`\n *\n * @example\n * var mf = new MessageFormat(['en', 'fi']);\n *\n * mf.compile('Today is {T, date}')({ T: Date.now() })\n * // 'Today is Feb 21, 2016'\n *\n * mf.compile('Tänään on {T, date}', 'fi')({ T: Date.now() })\n * // 'Tänään on 21. helmikuuta 2016'\n *\n * mf.compile('Unix time started on {T, date, full}')({ T: 0 })\n * // 'Unix time started on Thursday, January 1, 1970'\n *\n * var cf = mf.compile('{sys} became operational on {d0, date, short}');\n * cf({ sys: 'HAL 9000', d0: '12 January 1999' })\n * // 'HAL 9000 became operational on 1/12/1999'\n */\nfunction date(v, lc, p) {\n var o = { day: 'numeric', month: 'short', year: 'numeric' };\n switch (p) {\n case 'full':\n o.weekday = 'long';\n case 'long':\n o.month = 'long';\n break;\n case 'short':\n o.month = 'numeric';\n }\n return new Date(v).toLocaleDateString(lc, o);\n}\n\nmodule.exports = function() {\n return date;\n};\n","/**\n * Represent a duration in seconds as a string\n *\n * Input should be a finite number; output will include one or two `:`\n * separators, and match the pattern `hhhh:mm:ss`, possibly with a leading `-`\n * for negative values and a trailing `.sss` part for non-integer input\n *\n * @memberof Formatters\n * @param {number|string} value - A finite number, or its string representation\n *\n * @example\n * var mf = new MessageFormat();\n *\n * mf.compile('It has been {D, duration}')({ D: 123 })\n * // 'It has been 2:03'\n *\n * mf.compile('Countdown: {D, duration}')({ D: -151200.42 })\n * // 'Countdown: -42:00:00.420'\n */\nfunction duration(value) {\n if (!isFinite(value)) return String(value);\n var sign = '';\n if (value < 0) {\n sign = '-';\n value = Math.abs(value);\n } else {\n value = Number(value);\n }\n var sec = value % 60;\n var parts = [Math.round(sec) === sec ? sec : sec.toFixed(3)];\n if (value < 60) {\n parts.unshift(0); // at least one : is required\n } else {\n value = Math.round((value - parts[0]) / 60);\n parts.unshift(value % 60); // minutes\n if (value >= 60) {\n value = Math.round((value - parts[0]) / 60);\n parts.unshift(value); // hours\n }\n }\n var first = parts.shift();\n return (\n sign +\n first +\n ':' +\n parts\n .map(function(n) {\n return n < 10 ? '0' + String(n) : String(n);\n })\n .join(':')\n );\n}\n\nmodule.exports = function() {\n return duration;\n};\n","/* global CURRENCY, Intl */\n\n/** Represent a number as an integer, percent or currency value\n *\n * Available in MessageFormat strings as `{VAR, number, integer|percent|currency}`.\n * Internally, calls Intl.NumberFormat with appropriate parameters. `currency` will\n * default to USD; to change, set `MessageFormat#currency` to the appropriate\n * three-letter currency code, or use the `currency:EUR` form of the argument.\n *\n * @memberof Formatters\n * @param {number} value - The value to operate on\n * @param {string} type - One of `'integer'`, `'percent'` , `'currency'`, or `/currency:[A-Z]{3}/`\n *\n * @example\n * var mf = new MessageFormat('en');\n * mf.currency = 'EUR'; // needs to be set before first compile() call\n *\n * mf.compile('{N} is almost {N, number, integer}')({ N: 3.14 })\n * // '3.14 is almost 3'\n *\n * mf.compile('{P, number, percent} complete')({ P: 0.99 })\n * // '99% complete'\n *\n * mf.compile('The total is {V, number, currency}.')({ V: 5.5 })\n * // 'The total is €5.50.'\n *\n * mf.compile('The total is {V, number, currency:GBP}.')({ V: 5.5 })\n * // 'The total is £5.50.'\n */\n\nfunction number(value, lc, arg) {\n var a = (arg && arg.split(':')) || [];\n var opt = {\n integer: { maximumFractionDigits: 0 },\n percent: { style: 'percent' },\n currency: {\n style: 'currency',\n currency: (a[1] && a[1].trim()) || CURRENCY,\n minimumFractionDigits: 2,\n maximumFractionDigits: 2\n }\n };\n return new Intl.NumberFormat(lc, opt[a[0]] || {}).format(value);\n}\n\nmodule.exports = function(mf) {\n var parts = number\n .toString()\n .replace('CURRENCY', JSON.stringify(mf.currency || 'USD'))\n .match(/\\(([^)]*)\\)[^{]*{([\\s\\S]*)}/);\n return new Function(parts[1], parts[2]);\n};\n","/** Represent a time as a short/default/long string\n *\n * The input value needs to be in a form that the\n * {@link https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Date Date object}\n * can process using its single-argument form, `new Date(value)`.\n *\n * @memberof Formatters\n * @param {number|string} value - Either a Unix epoch time in milliseconds, or a string value representing a date\n * @param {string} [type='default'] - One of `'short'`, `'default'`, `'long'` , or `full`\n *\n * @example\n * var mf = new MessageFormat(['en', 'fi']);\n *\n * mf.compile('The time is now {T, time}')({ T: Date.now() })\n * // 'The time is now 11:26:35 PM'\n *\n * mf.compile('Kello on nyt {T, time}', 'fi')({ T: Date.now() })\n * // 'Kello on nyt 23.26.35'\n *\n * var cf = mf.compile('The Eagle landed at {T, time, full} on {T, date, full}');\n * cf({ T: '1969-07-20 20:17:40 UTC' })\n * // 'The Eagle landed at 10:17:40 PM GMT+2 on Sunday, July 20, 1969'\n */\nfunction time(v, lc, p) {\n var o = { second: 'numeric', minute: 'numeric', hour: 'numeric' };\n switch (p) {\n case 'full':\n case 'long':\n o.timeZoneName = 'short';\n break;\n case 'short':\n delete o.second;\n }\n return new Date(v).toLocaleTimeString(lc, o);\n}\n\nmodule.exports = function() {\n return time;\n};\n","const reservedES3 = {\n break: true,\n continue: true,\n delete: true,\n else: true,\n for: true,\n function: true,\n if: true,\n in: true,\n new: true,\n return: true,\n this: true,\n typeof: true,\n var: true,\n void: true,\n while: true,\n with: true,\n case: true,\n catch: true,\n default: true,\n do: true,\n finally: true,\n instanceof: true,\n switch: true,\n throw: true,\n try: true\n};\n\nconst reservedES5 = {\n // in addition to reservedES3\n debugger: true,\n class: true,\n enum: true,\n extends: true,\n super: true,\n const: true,\n export: true,\n import: true,\n null: true,\n true: true,\n false: true,\n implements: true,\n let: true,\n private: true,\n public: true,\n yield: true,\n interface: true,\n package: true,\n protected: true,\n static: true\n};\n\n/**\n * Utility function for quoting an Object's key value if required\n *\n * Quotes the key if it contains invalid characters or is an\n * ECMAScript 3rd Edition reserved word (for IE8).\n *\n * @private\n */\nexport function propname(key, obj) {\n if (/^[A-Z_$][0-9A-Z_$]*$/i.test(key) && !reservedES3[key]) {\n return obj ? `${obj}.${key}` : key;\n } else {\n const jkey = JSON.stringify(key);\n return obj ? obj + `[${jkey}]` : jkey;\n }\n}\n\n/**\n * Utility function for escaping a function name if required\n *\n * @private\n */\nexport function funcname(key) {\n const fn = key.trim().replace(/\\W+/g, '_');\n return reservedES3[fn] || reservedES5[fn] || /^\\d/.test(fn) ? '_' + fn : fn;\n}\n\nconst rtlLanguages = [\n 'ar',\n 'ckb',\n 'fa',\n 'he',\n 'ks($|[^bfh])',\n 'lrc',\n 'mzn',\n 'pa-Arab',\n 'ps',\n 'ug',\n 'ur',\n 'uz-Arab',\n 'yi'\n];\nconst rtlRegExp = new RegExp('^' + rtlLanguages.join('|^'));\n\n/**\n * Utility formatter function for enforcing Bidi Structured Text by using UCC\n *\n * List inlined from data extracted from CLDR v27 & v28\n * To verify/recreate, use the following:\n *\n * git clone https://github.com/unicode-cldr/cldr-misc-full.git\n * cd cldr-misc-full/main/\n * grep characterOrder -r . | tr '\"/' '\\t' | cut -f2,6 | grep -C4 right-to-left\n *\n * @private\n */\nexport function biDiMarkText(text, locale) {\n const isLocaleRTL = rtlRegExp.test(locale);\n const mark = JSON.stringify(isLocaleRTL ? '\\u200F' : '\\u200E');\n return `${mark} + ${text} + ${mark}`;\n}\n","import { parse } from 'messageformat-parser';\nimport { biDiMarkText, funcname, propname } from './utils';\n\n/** @private */\nexport default class Compiler {\n /** Creates a new message compiler. Called internally from {@link MessageFormat#compile}.\n *\n * @private\n * @param {MessageFormat} mf - A MessageFormat instance\n * @property {object} locales - The locale identifiers that are used by the compiled functions\n * @property {object} runtime - Names of the core runtime functions that are used by the compiled functions\n * @property {object} formatters - The formatter functions that are used by the compiled functions\n */\n constructor(mf) {\n this.mf = mf;\n this.lc = null;\n this.locales = {};\n this.runtime = {};\n this.formatters = {};\n }\n\n /** Recursively compile a string or a tree of strings to JavaScript function sources\n *\n * If `src` is an object with a key that is also present in `plurals`, the key\n * in question will be used as the locale identifier for its value. To disable\n * the compile-time checks for plural & selectordinal keys while maintaining\n * multi-locale support, use falsy values in `plurals`.\n *\n * @private\n * @param {string|object} src - the source for which the JS code should be generated\n * @param {string} lc - the default locale\n * @param {object} plurals - a map of pluralization keys for all available locales\n */\n compile(src, lc, plurals) {\n if (typeof src != 'object') {\n this.lc = lc;\n const pc = plurals[lc] || { cardinal: [], ordinal: [] };\n pc.strict = !!this.mf.options.strictNumberSign;\n const r = parse(src, pc).map(token => this.token(token));\n return `function(d) { return ${r.join(' + ') || '\"\"'}; }`;\n } else {\n const result = {};\n for (var key in src) {\n // eslint-disable-next-line no-prototype-builtins\n var lcKey = plurals.hasOwnProperty(key) ? key : lc;\n result[key] = this.compile(src[key], lcKey, plurals);\n }\n return result;\n }\n }\n\n /** @private */\n cases(token, plural) {\n let needOther = token.type === 'select' || !this.mf.hasCustomPluralFuncs;\n const r = token.cases.map(({ key, tokens }) => {\n if (key === 'other') needOther = false;\n const s = tokens.map(tok => this.token(tok, plural));\n return propname(key) + ': ' + (s.join(' + ') || '\"\"');\n });\n if (needOther)\n throw new Error(\"No 'other' form found in \" + JSON.stringify(token));\n return `{ ${r.join(', ')} }`;\n }\n\n /** @private */\n token(token, plural) {\n if (typeof token == 'string') return JSON.stringify(token);\n\n let fn;\n let args = [propname(token.arg, 'd')];\n switch (token.type) {\n case 'argument':\n return this.mf.options.biDiSupport\n ? biDiMarkText(args[0], this.lc)\n : args[0];\n\n case 'select':\n fn = 'select';\n if (plural && this.mf.options.strictNumberSign) plural = null;\n args.push(this.cases(token, plural));\n this.runtime.select = true;\n break;\n\n case 'selectordinal':\n fn = 'plural';\n args.push(0, funcname(this.lc), this.cases(token, token), 1);\n this.locales[this.lc] = true;\n this.runtime.plural = true;\n break;\n\n case 'plural':\n fn = 'plural';\n args.push(\n token.offset || 0,\n funcname(this.lc),\n this.cases(token, token)\n );\n this.locales[this.lc] = true;\n this.runtime.plural = true;\n break;\n\n case 'function':\n if (\n !(token.key in this.mf.fmt) &&\n token.key in this.mf.constructor.formatters\n ) {\n const fmt = this.mf.constructor.formatters[token.key];\n this.mf.fmt[token.key] = fmt(this.mf);\n }\n if (!this.mf.fmt[token.key])\n throw new Error(\n `Formatting function ${JSON.stringify(token.key)} not found!`\n );\n args.push(JSON.stringify(this.lc));\n if (token.param) {\n if (plural && this.mf.options.strictNumberSign) plural = null;\n const s = token.param.tokens.map(tok => this.token(tok, plural));\n args.push('(' + (s.join(' + ') || '\"\"') + ').trim()');\n }\n fn = propname(token.key, 'fmt');\n this.formatters[token.key] = true;\n break;\n\n case 'octothorpe':\n if (!plural) return '\"#\"';\n fn = 'number';\n args = [propname(plural.arg, 'd'), JSON.stringify(plural.arg)];\n if (plural.offset) args.push(plural.offset);\n this.runtime.number = true;\n break;\n }\n\n if (!fn) throw new Error('Parser error for token ' + JSON.stringify(token));\n return `${fn}(${args.join(', ')})`;\n }\n}\n","import pluralCategories from 'make-plural/umd/pluralCategories';\nimport plurals from 'make-plural/umd/plurals';\n\n/**\n * @class\n * @private\n * @hideconstructor\n * @classdesc Utility getter/wrapper for pluralization functions from\n * {@link http://github.com/eemeli/make-plural.js make-plural}\n */\n\nfunction wrapPluralFunc(lc, pf, pluralKeyChecks) {\n var fn = function() {\n return pf.apply(this, arguments);\n };\n fn.toString = () => pf.toString();\n if (pluralKeyChecks) {\n const pc = pluralCategories[lc] || {};\n fn.cardinal = pc.cardinal;\n fn.ordinal = pc.ordinal;\n } else {\n fn.cardinal = [];\n fn.ordinal = [];\n }\n return fn;\n}\n\nexport function getPlural(locale, { pluralKeyChecks }) {\n for (let lc = String(locale); lc; lc = lc.replace(/[-_]?[^-_]*$/, '')) {\n const pf = plurals[lc];\n if (pf) return wrapPluralFunc(lc, pf, pluralKeyChecks);\n }\n throw new Error(\n 'Localisation function not found for locale ' + JSON.stringify(locale)\n );\n}\n\nexport function getAllPlurals({ pluralKeyChecks }) {\n const locales = {};\n const keys = Object.keys(plurals);\n for (let i = 0; i < keys.length; ++i) {\n const lc = keys[i];\n locales[lc] = wrapPluralFunc(lc, plurals[lc], pluralKeyChecks);\n }\n return locales;\n}\n","import { funcname, propname } from './utils';\n\n/** A set of utility functions that are called by the compiled Javascript\n * functions, these are included locally in the output of {@link\n * MessageFormat#compile compile()}.\n *\n * @class\n * @private\n * @param {MessageFormat} mf - A MessageFormat instance\n */\nexport default class Runtime {\n /** Utility function for `#` in plural rules\n *\n * Will throw an Error if `value` has a non-numeric value and `offset` is\n * non-zero or {@link MessageFormat#setStrictNumberSign} is set.\n *\n * @function Runtime#number\n * @param {number} value - The value to operate on\n * @param {string} name - The name of the argument, used for error reporting\n * @param {number} [offset=0] - An optional offset, set by the surrounding context\n * @returns {number|string} The result of applying the offset to the input value\n */\n static defaultNumber = function(value, name, offset) {\n if (!offset) return value;\n if (isNaN(value))\n throw new Error(\n \"Can't apply offset:\" +\n offset +\n ' to argument `' +\n name +\n '` with non-numerical value ' +\n JSON.stringify(value) +\n '.'\n );\n return value - offset;\n };\n\n /** @private */\n static strictNumber = function(value, name, offset) {\n if (isNaN(value))\n throw new Error(\n 'Argument `' +\n name +\n '` has non-numerical value ' +\n JSON.stringify(value) +\n '.'\n );\n return value - (offset || 0);\n };\n\n constructor(mf) {\n this.mf = mf;\n this.setStrictNumber(mf.options.strictNumberSign);\n }\n\n /** Utility function for `{N, plural|selectordinal, ...}`\n *\n * @param {number} value - The key to use to find a pluralization rule\n * @param {number} offset - An offset to apply to `value`\n * @param {function} lcfunc - A locale function from `pluralFuncs`\n * @param {Object.<string,string>} data - The object from which results are looked up\n * @param {?boolean} isOrdinal - If true, use ordinal rather than cardinal rules\n * @returns {string} The result of the pluralization\n */\n plural = function(value, offset, lcfunc, data, isOrdinal) {\n if ({}.hasOwnProperty.call(data, value)) return data[value];\n if (offset) value -= offset;\n var key = lcfunc(value, isOrdinal);\n return key in data ? data[key] : data.other;\n };\n\n /** Utility function for `{N, select, ...}`\n *\n * @param {number} value - The key to use to find a selection\n * @param {Object.<string,string>} data - The object from which results are looked up\n * @returns {string} The result of the select statement\n */\n select = function(value, data) {\n return {}.hasOwnProperty.call(data, value) ? data[value] : data.other;\n };\n\n /** Set how strictly the {@link number} method parses its input.\n *\n * According to the ICU MessageFormat spec, `#` can only be used to replace a\n * number input of a `plural` statement. By default, messageformat does not\n * throw a runtime error if you use non-numeric argument with a `plural` rule,\n * unless rule also includes a non-zero `offset`.\n *\n * This is called by {@link MessageFormat#setStrictNumberSign} to follow the\n * stricter ICU MessageFormat spec.\n *\n * @private\n * @param {boolean} [enable=false]\n */\n setStrictNumber(enable) {\n this.number = enable ? Runtime.strictNumber : Runtime.defaultNumber;\n }\n\n /** @private */\n toString(pluralFuncs, compiler) {\n function _stringify(o, level) {\n if (typeof o != 'object') {\n const funcStr = o.toString().replace(/^(function )\\w*/, '$1');\n const funcIndent = /([ \\t]*)\\S.*$/.exec(funcStr);\n return funcIndent\n ? funcStr.replace(new RegExp('^' + funcIndent[1], 'mg'), '')\n : funcStr;\n }\n const s = [];\n for (let i in o) {\n const v = _stringify(o[i], level + 1);\n s.push(level === 0 ? `var ${i} = ${v};\\n` : `${propname(i)}: ${v}`);\n }\n if (level === 0) return s.join('');\n if (s.length === 0) return '{}';\n let indent = ' ';\n while (--level) indent += ' ';\n const oc = s.join(',\\n').replace(/^/gm, indent);\n return `{\\n${oc}\\n}`;\n }\n\n const obj = {};\n const lcKeys = Object.keys(compiler.locales);\n for (let i = 0; i < lcKeys.length; ++i) {\n const lc = lcKeys[i];\n obj[funcname(lc)] = pluralFuncs[lc];\n }\n const rtKeys = Object.keys(compiler.runtime);\n for (let i = 0; i < rtKeys.length; ++i) {\n const fn = rtKeys[i];\n obj[fn] = this[fn];\n }\n const fmtKeys = Object.keys(compiler.formatters);\n if (fmtKeys.length > 0) {\n obj.fmt = {};\n for (let i = 0; i < fmtKeys.length; ++i) {\n const fk = fmtKeys[i];\n obj.fmt[fk] = this.mf.fmt[fk];\n }\n }\n return _stringify(obj, 0);\n }\n}\n","import Formatters from 'messageformat-formatters';\nimport Compiler from './compiler';\nimport { funcname, propname } from './utils';\nimport { getAllPlurals, getPlural } from './plurals';\nimport Runtime from './runtime';\n\nexport default class MessageFormat {\n /**\n * The default locale\n *\n * Used by the constructor when no `locale` has been set to initialise the value\n * of its instance counterpart, `MessageFormat#defaultLocale`.\n *\n * @memberof MessageFormat\n * @default 'en'\n */\n static defaultLocale = 'en';\n\n /** Escape special characaters\n *\n * Surround the characters `{` and `}` in the input string with 'quotes'.\n * This will allow those characters to not be considered as MessageFormat\n * control characters.\n *\n * @memberof MessageFormat\n * @param {string} str - The input string\n * @param {boolean} [octothorpe=false] - Include `#` in the escaped characters\n * @returns {string} The escaped string\n */\n static escape(str, octothorpe) {\n const esc = octothorpe ? /[#{}]/g : /[{}]/g;\n return String(str).replace(esc, \"'$&'\");\n }\n\n static formatters = Formatters;\n\n /**\n * Create a new MessageFormat compiler\n *\n * If set, the `locale` parameter limits the compiler to use a subset of the 204\n * languages' pluralisation rules made available by the Unicode CLDR.\n *\n * Leaving `locale` undefined or using an array of strings will create a\n * MessageFormat instance with multi-language support. To select which to use,\n * use the second parameter of `{@link MessageFormat#compile compile()}`, or use\n * message keys corresponding to your locales. The default locale will be the\n * first entry of the array, or `{@link MessageFormat.defaultLocale defaultLocale}`\n * if not set.\n *\n * A string `locale` will create a single-locale MessageFormat instance.\n *\n * Using an object `locale` with all properties of type `function` allows for\n * the use of custom or externally defined pluralisation rules; in this case\n *\n * @class MessageFormat\n * @classdesc MessageFormat-to-JavaScript compiler\n * @param {string|string[]|Object} [locale] - The locale(s) to use\n * @param {Object} [options] - Compiler options\n * @param {boolean} [options.biDiSupport=false] - Add Unicode control\n * characters to all input parts to preserve the integrity of the output\n * when mixing LTR and RTL text\n * @param {Object} [options.customFormatters] - Map of custom formatting\n * functions to include. See the {@tutorial guide} for more details.\n * @param {boolean} [options.pluralKeyChecks=true] - Validate plural and\n * selectordinal case keys according to the current locale\n * @param {boolean} [options.strictNumberSign=false] - Allow `#` only directly\n * within a plural or selectordinal case, rather than in any inner select\n * case as well.\n *\n * ```\n * import MessageFormat from 'messageformat'\n * ```\n */\n constructor(locale, options) {\n this.options = Object.assign(\n {\n biDiSupport: false,\n customFormatters: null,\n pluralKeyChecks: true,\n strictNumberSign: false\n },\n options\n );\n this.pluralFuncs = {};\n if (typeof locale === 'string') {\n this.pluralFuncs[locale] = getPlural(locale, this.options);\n this.defaultLocale = locale;\n } else if (Array.isArray(locale)) {\n locale.forEach(lc => {\n this.pluralFuncs[lc] = getPlural(lc, this.options);\n });\n this.defaultLocale = locale[0];\n } else {\n if (locale) {\n const lcKeys = Object.keys(locale);\n for (let i = 0; i < lcKeys.length; ++i) {\n const lc = lcKeys[i];\n if (typeof locale[lc] !== 'function') {\n const errMsg = 'Expected function value for locale ' + String(lc);\n throw new Error(errMsg);\n }\n this.pluralFuncs[lc] = locale[lc];\n if (!this.defaultLocale) this.defaultLocale = lc;\n }\n }\n if (this.defaultLocale) {\n this.hasCustomPluralFuncs = true;\n } else {\n this.defaultLocale = MessageFormat.defaultLocale;\n this.hasCustomPluralFuncs = false;\n }\n }\n this.fmt = Object.assign({}, this.options.customFormatters);\n this.runtime = new Runtime(this);\n }\n\n /**\n * Add custom formatter functions to this MessageFormat instance. See the\n * {@tutorial guide} for more details.\n *\n * The general syntax for calling a formatting function in MessageFormat is\n * `{var, fn[, arg]}`, where `var` is the variable that will be set by the\n * user code, `fn` determines the formatting function, and `arg` is an\n * optional string argument.\n *\n * In JavaScript, each formatting function is called with three parameters;\n * the variable value `v`, the current locale `lc`, and `arg` as a string, or\n * undefined if not set. `arg` will be trimmed of surrounding whitespace.\n * Formatting functions should not have side effects.\n *\n * @memberof MessageFormat\n * @instance\n * @param {Object.<string,function>} fmt - A map of formatting functions\n * @returns {MessageFormat} The MessageFormat instance, to allow for chaining\n *\n * @example\n * const mf = new MessageFormat('en-GB')\n * mf.addFormatters({\n * upcase: function(v) { return v.toUpperCase() },\n * locale: function(v, lc) { return lc },\n * prop: function(v, lc, p) { return v[p] }\n * })\n * const messages = mf.compile({\n * describe: 'This is {VAR, upcase}.',\n * locale: 'The current locale is {_, locale}.',\n * answer: 'Answer: {obj, prop, a}'\n * }\n *\n * messages.describe({ VAR: 'big' }) // 'This is BIG.'\n * messages.locale({}) // 'The current locale is en-GB.'\n * messages.answer({ obj: {q: 3, a: 42} }) // 'Answer: 42'\n */\n addFormatters(fmt) {\n const fmtKeys = Object.keys(fmt);\n for (let i = 0; i < fmtKeys.length; ++i) {\n const name = fmtKeys[i];\n this.fmt[name] = fmt[name];\n }\n return this;\n }\n\n /**\n * Disable the validation of plural & selectordinal keys\n *\n * Previous versions of messageformat allowed the use of plural &\n * selectordinal statements with any keys; now we throw an error when a\n * statement uses a non-numerical key that will never be matched as a\n * pluralization category for the current locale.\n *\n * Use this method to disable the validation and allow usage as previously.\n * To re-enable, you'll need to create a new MessageFormat instance.\n *\n * @memberof MessageFormat\n * @instance\n * @returns {MessageFormat} The MessageFormat instance, to allow for chaining\n *\n * @example\n * const mf = new MessageFormat('en')\n * const msg = '{X, plural, zero{no answers} one{an answer} other{# answers}}'\n *\n * mf.compile(msg)\n * // Error: Invalid key `zero` for argument `X`. Valid plural keys for this\n * // locale are `one`, `other`, and explicit keys like `=0`.\n *\n * mf.disablePluralKeyChecks()\n * mf.compile(msg)({ X: 0 }) // '0 answers'\n */\n disablePluralKeyChecks() {\n this.options.pluralKeyChecks = false;\n for (const lc in this.pluralFuncs) {\n const pf = this.pluralFuncs[lc];\n if (pf) {\n pf.cardinal = [];\n pf.ordinal = [];\n }\n }\n return this;\n }\n\n /**\n * Enable or disable the addition of Unicode control characters to all input\n * to preserve the integrity of the output when mixing LTR and RTL text.\n *\n * @see http://cldr.unicode.org/development/development-process/design-proposals/bidi-handling-of-structured-text\n *\n * @memberof MessageFormat\n * @instance\n * @param {boolean} [enable=true]\n * @returns {MessageFormat} The MessageFormat instance, to allow for chaining\n *\n * @example\n * // upper case stands for RTL characters, output is shown as rendered\n * const mf = new MessageFormat('en')\n *\n * mf.compile('{0} >> {1} >> {2}')(['first', 'SECOND', 'THIRD'])\n * // 'first >> THIRD << SECOND'\n *\n * mf.setBiDiSupport(true)\n * mf.compile('{0} >> {1} >> {2}')(['first', 'SECOND', 'THIRD'])\n * // 'first >> SECOND >> THIRD'\n */\n setBiDiSupport(enable) {\n this.options.biDiSupport = !!enable || typeof enable == 'undefined';\n return this;\n }\n\n /**\n * According to the ICU MessageFormat spec, a `#` character directly inside a\n * `plural` or `selectordinal` statement should be replaced by the number\n * matching the surrounding statement. By default, messageformat will replace\n * `#` signs with the value of the nearest surrounding `plural` or\n * `selectordinal` statement.\n *\n * Set this to true to follow the stricter ICU MessageFormat spec, and to\n * throw a runtime error if `#` is used with non-numeric input.\n *\n * @memberof MessageFormat\n * @instance\n * @param {boolean} [enable=true]\n * @returns {MessageFormat} The MessageFormat instance, to allow for chaining\n *\n * @example\n * const mf = new MessageFormat('en')\n * const src = {\n * cookie: '#: {X, plural, =0{no cookies} one{a cookie} other{# cookies}}',\n * pastry: `{X, plural,\n * one {{P, select, cookie{a cookie} other{a pie}}}\n * other {{P, select, cookie{# cookies} other{# pies}}}\n * }`\n * }\n * let messages = mf.compile(src)\n *\n * messages.cookie({ X: 3 }) // '#: 3 cookies'\n * messages.pastry({ X: 3, P: 'pie' }) // '3 pies'\n *\n * mf.setStrictNumberSign(true)\n * messages = mf.compile(src)\n * messages.pastry({ X: 3, P: 'pie' }) // '# pies'\n */\n setStrictNumberSign(enable) {\n this.options.strictNumberSign = !!enable || typeof enable == 'undefined';\n this.runtime.setStrictNumber(this.options.strictNumberSign);\n return this;\n }\n\n /**\n * Compile messages into storable functions\n *\n * If `messages` is a single string including ICU MessageFormat declarations,\n * the result of `compile()` is a function taking a single Object parameter\n * `d` representing each of the input's defined variables.\n *\n * If `messages` is a hierarchical structure of such strings, the output of\n * `compile()` will match that structure, with each string replaced by its\n * corresponding JavaScript function.\n *\n * If the input `messages` -- and therefore the output -- of `compile()` is an\n * object, the output object will have a `toString(global)` method that may be\n * used to store or cache the compiled functions to disk, for later inclusion\n * in any JS environment, without a local MessageFormat instance required. If\n * its `global` parameter is null or undefined, the result is an ES6 module\n * with a default export. If `global` is a string containing `.`, the result\n * will be a script setting its value. Otherwise, the output defaults to an UMD\n * pattern that sets the value of `global` if used outside of AMD and CommonJS\n * loaders.\n *\n * If `locale` is not set, it will default to\n * `{@link MessageFormat.defaultLocale defaultLocale}`; using a key at any\n * depth of `messages` that is a declared locale will set its child elements to\n * use that locale.\n *\n * If `locale` is set, it is used for all messages, ignoring any otherwise\n * matching locale keys. If the constructor declared any locales, `locale`\n * needs to be one of them.\n *\n * If `compile()` is called with a `messages` object on a MessageFormat\n * instance that does not specify any locales, it will match keys to *all* 204\n * available locales. This is really useful if you want your messages to be\n * completely determined by your data, but may provide surprising results if\n * your input includes any 2-3 letter strings that are not locale identifiers.\n *\n * @memberof MessageFormat\n * @instance\n * @param {string|Object} messages - The input message(s) to be compiled, in ICU MessageFormat\n * @param {string} [locale] - A locale to use for the messages\n * @returns {function|Object} The first match found for the given locale(s)\n *\n * @example\n * const mf = new MessageFormat('en')\n * const msg = mf.compile('A {TYPE} example.')\n *\n * msg({ TYPE: 'simple' }) // 'A simple example.'\n *\n * @example\n * const mf = new MessageFormat(['en', 'fi'])\n * const messages = mf.compile({\n * en: { a: 'A {TYPE} example.',\n * b: 'This is the {COUNT, selectordinal, one{#st} two{#nd} few{#rd} other{#th}} example.' },\n * fi: { a: '{TYPE} esimerkki.',\n * b: 'Tämä on {COUNT, selectordinal, other{#.}} esimerkki.' }\n * })\n *\n * messages.en.b({ COUNT: 2 }) // 'This is the 2nd example.'\n * messages.fi.b({ COUNT: 2 }) // 'Tämä on 2. esimerkki.'\n *\n * @example\n * const fs = require('fs')\n * const mf = new MessageFormat('en')\n * const msgSet = {\n * a: 'A {TYPE} example.',\n * b: 'This has {COUNT, plural, one{one member} other{# members}}.',\n * c: 'We have {P, number, percent} code coverage.'\n * }\n * const msgStr = mf.compile(msgSet).toString('module.exports')\n * fs.writeFileSync('messages.js', msgStr)\n *\n * ...\n *\n * const messages = require('./messages')\n *\n * messages.a({ TYPE: 'more complex' }) // 'A more complex example.'\n * messages.b({ COUNT: 3 }) // 'This has 3 members.'\n */\n compile(messages, locale) {\n function _stringify(obj, level) {\n if (!level) level = 0;\n if (typeof obj != 'object') return obj;\n let indent = '';\n for (let i = 0; i < level; ++i) indent += ' ';\n const o = [];\n for (const k in obj) {\n const v = _stringify(obj[k], level + 1);\n o.push(`\\n${indent} ${propname(k)}: ${v}`);\n }\n return `{${o.join(',')}\\n${indent}}`;\n }\n\n let pf = {};\n if (Object.keys(this.pluralFuncs).length === 0) {\n if (locale) {\n const pfn0 = getPlural(locale, this.options);\n if (!pfn0) {\n const lcs = JSON.stringify(locale);\n throw new Error(`Locale ${lcs} not found!`);\n }\n pf[locale] = pfn0;\n } else {\n locale = this.defaultLocale;\n pf = getAllPlurals(this.options);\n }\n } else if (locale) {\n const pfn1 = this.pluralFuncs[locale];\n if (!pfn1) {\n const lcs = JSON.stringify(locale);\n const pfs = JSON.stringify(this.pluralFuncs);\n throw new Error(`Locale ${lcs} not found in ${pfs}!`);\n }\n pf[locale] = pfn1;\n } else {\n locale = this.defaultLocale;\n pf = this.pluralFuncs;\n }\n\n const compiler = new Compiler(this);\n const obj = compiler.compile(messages, locale, pf);\n\n if (typeof messages != 'object') {\n const fn = new Function(\n 'number, plural, select, fmt',\n funcname(locale),\n 'return ' + obj\n );\n const rt = this.runtime;\n return fn(rt.number, rt.plural, rt.select, this.fmt, pf[locale]);\n }\n\n const rtStr = this.runtime.toString(pf, compiler) + '\\n';\n const objStr = _stringify(obj);\n const result = new Function(rtStr + 'return ' + objStr)();\n // eslint-disable-next-line no-prototype-builtins\n if (result.hasOwnProperty('toString'))\n throw new Error('The top-level message key `toString` is reserved');\n\n result.toString = function(global) {\n if (!global || global === 'export default') {\n return rtStr + 'export default ' + objStr;\n } else if (global.indexOf('.') > -1) {\n return rtStr + global + ' = ' + objStr;\n } else {\n return (\n rtStr +\n [\n '(function (root, G) {',\n ' if (typeof define === \"function\" && define.amd) { define(G); }',\n ' else if (typeof exports === \"object\") { module.exports = G; }',\n ' else { ' + propname(global, 'root') + ' = G; }',\n '})(this, ' + objStr + ');'\n ].join('\\n')\n );\n }\n };\n return result;\n }\n}\n"],"sourceRoot":""} |