{"version":3,"file":"tutorial.2a9599e0c06c629bb631.js","mappings":"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","sources":["webpack://wp/./locales/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/engine/koa/error/locales/network/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/engine/prism/locales/ sync ^\\.\\/.*\\.yml$","webpack://wp/./modules/client/config.js","webpack://wp/./modules/client/delegate.js","webpack://wp/./modules/client/dom/getDocumentHeight.js","webpack://wp/./modules/client/dom/getScrollbarHeight.js","webpack://wp/./modules/client/getCsrfCookie.js","webpack://wp/./modules/client/head/resizeOnload/iframeResize.js","webpack://wp/./modules/client/head/resizeOnload/index.js","webpack://wp/./modules/client/isScrolledIntoView.js","webpack://wp/./modules/client/notification/index.js","webpack://wp/./modules/client/spinner.js","webpack://wp/./modules/client/trackSticky.js","webpack://wp/./modules/client/xhr.js","webpack://wp/./modules/engine/console/consoleFormat.js","webpack://wp/./modules/engine/i18n/t.js","webpack://wp/./modules/engine/koa/tutorial/client/itemSlider.js","webpack://wp/./modules/engine/prism/codeBox.js","webpack://wp/./modules/engine/prism/codeTabsBox.js","webpack://wp/./modules/engine/prism/core.js","webpack://wp/./modules/engine/prism/index.js","webpack://wp/./modules/engine/prism/makeHighlight.js","webpack://wp/./modules/engine/prism/makeLineNumbers.js","webpack://wp/./modules/engine/prism/proxyConsoleLog.js","webpack://wp/./modules/engine/prism/sql.js","webpack://wp/./modules/lib/throttle.js","webpack://wp/./modules/tutorialMap/client/tutorialMap.js","webpack://wp/./modules/tutorialMap/client/tutorialMapModal.js","webpack://wp/./node_modules/babelfish/index.js","webpack://wp/./node_modules/babelfish/lib/parser.js","webpack://wp/./node_modules/lodash/_Symbol.js","webpack://wp/./node_modules/lodash/_baseGetTag.js","webpack://wp/./node_modules/lodash/_baseTrim.js","webpack://wp/./node_modules/lodash/_freeGlobal.js","webpack://wp/./node_modules/lodash/_getRawTag.js","webpack://wp/./node_modules/lodash/_objectToString.js","webpack://wp/./node_modules/lodash/_root.js","webpack://wp/./node_modules/lodash/_trimmedEndIndex.js","webpack://wp/./node_modules/lodash/debounce.js","webpack://wp/./node_modules/lodash/isObject.js","webpack://wp/./node_modules/lodash/isObjectLike.js","webpack://wp/./node_modules/lodash/isSymbol.js","webpack://wp/./node_modules/lodash/now.js","webpack://wp/./node_modules/lodash/throttle.js","webpack://wp/./node_modules/lodash/toNumber.js","webpack://wp/./node_modules/plurals-cldr/index.js","webpack://wp/./node_modules/prismjs/components/prism-bash.js","webpack://wp/./node_modules/prismjs/components/prism-clike.js","webpack://wp/./node_modules/prismjs/components/prism-core.js","webpack://wp/./node_modules/prismjs/components/prism-css-extras.js","webpack://wp/./node_modules/prismjs/components/prism-css.js","webpack://wp/./node_modules/prismjs/components/prism-http.js","webpack://wp/./node_modules/prismjs/components/prism-java.js","webpack://wp/./node_modules/prismjs/components/prism-javascript.js","webpack://wp/./node_modules/prismjs/components/prism-markup.js","webpack://wp/./node_modules/prismjs/components/prism-scss.js","webpack://wp/./node_modules/prismjs/components/prism-sql.js","webpack://wp/./locales/fr.yml","webpack://wp/./modules/engine/koa/error/locales/network/fr.yml","webpack://wp/./modules/engine/prism/locales/fr.yml","webpack://wp/webpack/bootstrap","webpack://wp/webpack/runtime/define property getters","webpack://wp/webpack/runtime/global","webpack://wp/webpack/runtime/hasOwnProperty shorthand","webpack://wp/webpack/runtime/make namespace object","webpack://wp/./modules/engine/koa/tutorial/client/index.js","webpack://wp/./modules/tutorialMap/client/index.js"],"sourcesContent":["var map = {\n\t\"./fr.yml\": 3334\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3205;","var map = {\n\t\"./fr.yml\": 371\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 6188;","var map = {\n\t\"./fr.yml\": 4147\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 3692;","module.exports = {\n lang: LANG,\n localCurrency: localCurrency,\n shopCurrency: shopCurrency,\n env: NODE_ENV,\n rateShopTo: rateShopTo,\n countryCode: countryCode,\n ordersMail: ordersMail,\n providers: providers,\n stripeKey: stripeKey,\n paypalClientId: paypalClientId,\n telegramBotId: telegramBotId,\n lookatCodeUrlBase: lookatCodeUrlBase,\n isRTL: isRTL\n};\n","\nfunction findDelegateTarget(event, selector) {\n let currentNode = event.target;\n while (currentNode) {\n if (currentNode.matches(selector)) {\n return currentNode;\n }\n\n if (currentNode == event.currentTarget) {\n break;\n }\n currentNode = currentNode.parentElement;\n }\n return null;\n}\n\n// delegate(table, 'th', click, handler)\n// table\n// thead\n// th ^*\n// code <--\nfunction delegate(topElement, selector, eventName, handler, context) {\n /* jshint -W040 */\n topElement.addEventListener(eventName, function(event) {\n let found = findDelegateTarget(event, selector);\n\n // .currentTarget is read only, I can not overwrite it to the \"found\" element\n // Object.create wrapper would break event.preventDefault()\n // so, keep in mind:\n // --> event.currentTarget is always the top-level (delegating) element!\n // use \"this\" to get the found target\n\n event.delegateTarget = found; // use instead of \"this\" in object methods\n\n if (found) {\n // if in context of object, use object as this,\n handler.call(context || this, event);\n }\n });\n}\n\ndelegate.delegateMixin = function(obj) {\n obj.delegate = function(selector, eventName, handler) {\n delegate(this.elem, selector, eventName, handler, this);\n };\n};\n\nmodule.exports = delegate;\n\n","let getScrollbarHeight = require('./getScrollbarHeight');\nlet scrollbarHeight;\n\nfunction getDocumentHeight(doc) {\n doc = doc || document;\n\n let height = Math.max(\n doc.body.scrollHeight, doc.documentElement.scrollHeight,\n doc.body.offsetHeight, doc.documentElement.offsetHeight,\n doc.body.clientHeight, doc.documentElement.clientHeight\n );\n\n if (doc.documentElement.scrollWidth > doc.documentElement.clientWidth) {\n // got a horiz scroll, let's add it\n if (!scrollbarHeight) scrollbarHeight = getScrollbarHeight();\n height += scrollbarHeight;\n }\n\n return height;\n}\n\nmodule.exports = getDocumentHeight;\n\n","function getScrollbarHeight() {\n let outer = document.createElement(\"div\");\n outer.style.cssText = \"visibility:hidden;height:100px\";\n if (!document.body) {\n throw new Error(\"getScrollbarHeight called to early: no document.body\");\n }\n document.body.appendChild(outer);\n\n let widthNoScroll = outer.offsetWidth;\n // force scrollbars\n outer.style.overflow = \"scroll\";\n\n // add innerdiv\n let inner = document.createElement(\"div\");\n inner.style.width = \"100%\";\n outer.appendChild(inner);\n\n let widthWithScroll = inner.offsetWidth;\n\n // remove divs\n outer.parentNode.removeChild(outer);\n\n return widthNoScroll - widthWithScroll;\n}\n\nmodule.exports = getScrollbarHeight;\n","module.exports = function() {\n let csrfCookie = document.cookie.match(/XSRF-TOKEN=([\\w-]+)/);\n return csrfCookie ? csrfCookie[1] : null;\n};\n\n","let getDocumentHeight = require('client/dom/getDocumentHeight');\n\nfunction iframeResize(ifrElem, callback) {\n try {\n // throws if cross-domain\n (ifrElem.contentDocument || ifrElem.contentWindow.document).body;\n } catch (e) {\n return;\n // not implemented crossdomain resize\n // iframeResizeCrossDomain(ifrElem, done);\n }\n\n let timeoutTimer = setTimeout(function() {\n // default height\n callback(new Error(\"timeout\"));\n }, 500);\n\n function done(err, height) {\n clearTimeout(timeoutTimer);\n\n callback(err, height);\n }\n\n // HINT: I shoulnd't move iframe in DOM, because it will reload it's contents when appended/inserted anywhere!\n // so I create a clone and work on it\n if (!ifrElem.offsetWidth) {\n // clone iframe at another place to see the size\n let cloneIframe = ifrElem.cloneNode(true);\n cloneIframe.name = \"\";\n\n cloneIframe.style.height = '50px';\n cloneIframe.style.position = 'absolute';\n cloneIframe.style.display = 'block';\n cloneIframe.style.top = '10000px';\n\n cloneIframe.onload = function() {\n let height = getDocumentHeight(this.contentDocument);\n ifrElem.style.display = 'block';\n cloneIframe.remove();\n done(null, height);\n };\n\n document.body.appendChild(cloneIframe);\n return;\n }\n\n ifrElem.style.display = 'block';\n ifrElem.style.height = '1px';\n\n let height = getDocumentHeight(ifrElem.contentDocument);\n\n ifrElem.style.height = '';\n done(null, height);\n}\n\niframeResize.async = function iframeResizeAsync(iframe, callback) {\n // delay to let the code inside the iframe finish\n setTimeout(function() {\n iframeResize(iframe, callback);\n }, 0);\n};\n\n\nfunction iframeResizeCrossDomain(ifrElem, callback) {\n throw new Error(\"Not implemented yet\");\n}\n\nmodule.exports = iframeResize;\n\n\n/*\n window.onmessage = function(e) {\n if (e.origin != \"http://ru.lookatcode.com\") return;\n let data = JSON.parse(e.data);\n if (!data || data.cmd != \"resize-iframe\") return;\n let elem = document.getElementsByName(data.name)[0];\n\n elem.style.height = +data.height + 10 + \"px\";\n let deferred = iframeResizeCrossDomain.deferreds[data.id];\n deferred.resolve();\n };\n\n function iframeResizeCrossDomain(ifrElem, callback) {\n\n setTimeout(function() {\n callback(new Error(\"timeout\"));\n }, 500);\n\n try {\n // try to see if resizer can work on this iframe\n ifrElem.contentWindow.postMessage(\"test\", \"http://ru.lookatcode.com\");\n } catch(e) {\n // iframe from another domain, sorry\n callback(new Error(\"the resizer must be from ru.lookatcode.com\"));\n return;\n }\n\n if (!ifrElem.offsetWidth) {\n // move iframe to another place to resize there\n let placeholder = document.createElement('span');\n ifrElem.parentNode.insertBefore(placeholder, ifrElem);\n document.body.appendChild(ifrElem);\n }\n\n ifrElem.style.display = 'none';\n\n let id = \"\" + Math.random();\n let message = { cmd: 'resize-iframe', name: ifrElem[0].name, id: id };\n // TODO\n iframeResizeCrossDomain.deferreds[id] = deferred;\n deferred.always(function() {\n delete iframeResizeCrossDomain.deferreds[id];\n });\n\n let frame = iframeResizeCrossDomain.iframe;\n if (frame.loaded) {\n frame.contentWindow.postMessage(JSON.stringify(message), \"http://ru.lookatcode.com\");\n } else {\n frame.on('load', function() {\n frame.contentWindow.postMessage(JSON.stringify(message), \"http://ru.lookatcode.com\");\n });\n }\n\n if (placeholder) {\n setTimeout(function() {\n placeholder.replaceWith(ifrElem);\n }, 20);\n }\n\n return deferred;\n }\n\n iframeResizeCrossDomain.deferreds = {};\n iframeResizeCrossDomain.iframe = $('').prependTo('body');\n iframeResizeCrossDomain.iframe.on('load', function() {\n this.loaded = true;\n });\n */\n","let iframeResize = require('./iframeResize');\nlet throttle = require('lib/throttle');\n// track resized iframes in window.onresize\n\nlet onResizeQueue = [];\n\nexports.iframe = function(iframe) {\n\n function resize() {\n iframeResize.async(iframe, function(err, height) {\n if (err) console.error(err);\n if (height) iframe.style.height = height + 'px';\n });\n }\n\n resize();\n};\n\nexports.codeTabs = function(iframe) {\n function hideShowArrows() {\n\n // add arrows if needed\n let elem = iframe.closest('.code-tabs');\n let contentElem = iframe.closest('[data-code-tabs-content]');\n let switchesElem = elem.querySelector('[data-code-tabs-switches]');\n let switchesElemItems = switchesElem.firstElementChild;\n\n if (switchesElemItems.offsetWidth > switchesElem.offsetWidth) {\n elem.classList.add('code-tabs_scroll');\n } else {\n elem.classList.remove('code-tabs_scroll');\n }\n\n }\n\n hideShowArrows();\n onResizeQueue.push(hideShowArrows);\n};\n\n\n\nwindow.addEventListener('resize', throttle(function() {\n onResizeQueue.forEach(onResize => onResize());\n}, 200));\n","\nfunction isScrolledIntoView(elem) {\n let coords = elem.getBoundingClientRect();\n\n let visibleHeight = 0;\n\n if (coords.top < 0) {\n visibleHeight = coords.bottom;\n } else if (coords.bottom > window.innerHeight) {\n visibleHeight = window.innerHeight - top;\n } else {\n return true;\n }\n\n return visibleHeight > 10;\n}\n\nmodule.exports = isScrolledIntoView;\n","/**\n * For new notification types extend Notification\n */\n\nlet delegate = require('client/delegate');\n\n/**\n * Calculates translateY positions when notifications are added/removed\n */\nclass NotificationManager {\n\n constructor(options = {}) {\n this.notifications = [];\n this.verticalSpace = options.verticalSpace || 8;\n }\n\n register(notification) {\n this.notifications.unshift(notification);\n setTimeout(() => this.recalculate(), 20);\n }\n\n unregister(notification) {\n let idx = this.notifications.indexOf(notification);\n this.notifications.splice(idx, 1);\n this.recalculate();\n }\n\n recalculate() {\n let top = this.verticalSpace;\n this.notifications.forEach(notification => {\n notification.top = top;\n top += notification.height + this.verticalSpace;\n });\n }\n\n}\n\n// if this module is included into different webpack builds,\n// ensure they share the same manager object\nexport function init(options) {\n if (!window.notificationManager) {\n window.notificationManager = new NotificationManager(options);\n }\n}\n\n\nclass Notification {\n\n constructor(html, type, timeout) {\n let elemHtml = `
`;\n\n mask += '\\n'.repeat(range.start);\n\n if (range.end) {\n mask += `${'\\n'.repeat(range.end - range.start + 1)}
`;\n } else if (range.cols) {\n for (let i = 0; i < range.cols.length; i++) {\n let col = range.cols[i];\n let prevCol = (i === 0) ? null : range.cols[i - 1];\n mask += ' '.repeat((prevCol ? (col.start - prevCol.end) : col.start));\n mask += `${' '.repeat(col.end - col.start)}
`;\n }\n }\n\n mask += '
';\n\n results.push(mask);\n }\n\n // first bigger (lower) block\n // results.reverse();\n\n return results.join('');\n\n};\n","\n// const escapeHtml = require('escape-html');\n\nmodule.exports = function makeLineNumbers(html) {\n\n let linesNum = (1 + html.split('\\n').length);\n let lineNumbersWrapper;\n\n let lines = new Array(linesNum);\n lines = lines.join('');\n\n lineNumbersWrapper = `${lines}`;\n\n return lineNumbersWrapper;\n};\n","let consoleFormat = require('engine/console/consoleFormat');\n\nmodule.exports = function proxyConsoleLog() {\n // use window.console.log to work around \"drop_console: true\" in webpack uglify settings\n window.consoleLogNative = window.console.log.bind(console);\n\n // console.log for the main window\n // js code always has globalThis.__codeBoxId\n // trusted iframe uses its own console.log (created in codeBox.js)\n // untrusted uses lookatcode/consoleLog module and window.name\n console.log = function(...args) {\n consoleLogNative(...args);\n\n let formattedArgs = consoleFormat(args);\n // in the main window we have: window.__codeBoxId,\n let message = {\n type: 'console-log',\n log: formattedArgs,\n codeBoxId: window.__codeBoxId\n };\n\n // console.info(\"message sent\", message);\n window.postMessage(message, '*');\n };\n\n window.addEventListener('message', ({source, data}) => {\n\n // message from parent frame? never happens for console-log\n if (source != window && source == window.parent) return;\n\n if (data.type != 'console-log') return;\n // console.info(\"message received\", data);\n\n let codeBoxElem = document.getElementById(data.codeBoxId);\n if (!codeBoxElem) {\n console.error(\"No codeBoxElem\", data);\n return;\n }\n\n let codeBox = codeBoxElem.codeBox;\n codeBox.consoleLog(data.log);\n\n });\n\n};","module.exports = (Prism) => {\n Prism.languages.sql = {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n 'variable': [\n {\n pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n greedy: true\n },\n /@[\\w.$]+/\n ],\n 'string': {\n pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n greedy: true,\n lookbehind: true\n },\n 'identifier': {\n pattern: /(^|[^@\\\\])`(?:\\\\[\\s\\S]|[^`\\\\]|``)*`/,\n greedy: true,\n lookbehind: true,\n inside: {\n 'punctuation': /^`|`$/\n }\n },\n 'function': /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i, // Should we highlight user defined functions too?\n 'keyword': /\\b(?:ACTION|ADD|AFTER|ALGORITHM|ALL|ALTER|ANALYZE|ANY|APPLY|AS|ASC|AUTHORIZATION|AUTO_INCREMENT|BACKUP|BDB|BEGIN|BERKELEYDB|BIGINT|BINARY|BIT|BLOB|BOOL|BOOLEAN|BREAK|BROWSE|BTREE|BULK|BY|CALL|CASCADED?|CASE|CHAIN|CHAR(?:ACTER|SET)?|CHECK(?:POINT)?|CLOSE|CLUSTERED|COALESCE|COLLATE|COLUMNS?|COMMENT|COMMIT(?:TED)?|COMPUTE|CONNECT|CONSISTENT|CONSTRAINT|CONTAINS(?:TABLE)?|CONTINUE|CONVERT|CREATE|CROSS|CURRENT(?:_DATE|_TIME|_TIMESTAMP|_USER)?|CURSOR|CYCLE|DATA(?:BASES?)?|DATE(?:TIME)?|DAY|DBCC|DEALLOCATE|DEC|DECIMAL|DECLARE|DEFAULT|DEFINER|DELAYED|DELETE|DELIMITERS?|DENY|DESC|DESCRIBE|DETERMINISTIC|DISABLE|DISCARD|DISK|DISTINCT|DISTINCTROW|DISTRIBUTED|DO|DOUBLE|DROP|DUMMY|DUMP(?:FILE)?|DUPLICATE|ELSE(?:IF)?|ENABLE|ENCLOSED|END|ENGINE|ENUM|ERRLVL|ERRORS|ESCAPED?|EXCEPT|EXEC(?:UTE)?|EXISTS|EXIT|EXPLAIN|EXTENDED|FETCH|FIELDS|FILE|FILLFACTOR|FIRST|FIXED|FLOAT|FOLLOWING|FOR(?: EACH ROW)?|FORCE|FOREIGN|FREETEXT(?:TABLE)?|FROM|FULL|FUNCTION|GEOMETRY(?:COLLECTION)?|GLOBAL|GOTO|GRANT|GROUP|HANDLER|HASH|HAVING|HOLDLOCK|HOUR|IDENTITY(?:COL|_INSERT)?|IF|IGNORE|IMPORT|INDEX|INFILE|INNER|INNODB|INOUT|INSERT|INT|INTEGER|INTERSECT|INTERVAL|INTO|INVOKER|ISOLATION|ITERATE|JOIN|KEYS?|KILL|LANGUAGE|LAST|LEAVE|LEFT|LEVEL|LIMIT|LINENO|LINES|LINESTRING|LOAD|LOCAL|LOCK|LONG(?:BLOB|TEXT)|LOOP|MATCH(?:ED)?|MEDIUM(?:BLOB|INT|TEXT)|MERGE|MIDDLEINT|MINUTE|MODE|MODIFIES|MODIFY|MONTH|MULTI(?:LINESTRING|POINT|POLYGON)|NATIONAL|NATURAL|NCHAR|NEXT|NO|NONCLUSTERED|NULLIF|NUMERIC|OFF?|OFFSETS?|ON|OPEN(?:DATASOURCE|QUERY|ROWSET)?|OPTIMIZE|OPTION(?:ALLY)?|ORDER|OUT(?:ER|FILE)?|OVER|PARTIAL|PARTITION|PERCENT|PIVOT|PLAN|POINT|POLYGON|PRECEDING|PRECISION|PREPARE|PREV|PRIMARY|PRINT|PRIVILEGES|PROC(?:EDURE)?|PUBLIC|PURGE|QUICK|RAISERROR|READS?|REAL|RECONFIGURE|REFERENCES|RELEASE|RENAME|REPEAT(?:ABLE)?|REPLACE|REPLICATION|REQUIRE|RESIGNAL|RESTORE|RESTRICT|RETURN(?:ING|S)?|REVOKE|RIGHT|ROLLBACK|ROUTINE|ROW(?:COUNT|GUIDCOL|S)?|RTREE|RULE|SAVE(?:POINT)?|SCHEMA|SECOND|SELECT|SERIAL(?:IZABLE)?|SESSION(?:_USER)?|SET(?:USER)?|SHARE|SHOW|SHUTDOWN|SIMPLE|SMALLINT|SNAPSHOT|SOME|SONAME|SQL|START(?:ING)?|STATISTICS|STATUS|STRIPED|SYSTEM_USER|TABLES?|TABLESPACE|TEMP(?:ORARY|TABLE)?|TERMINATED|TEXT(?:SIZE)?|THEN|TIME(?:STAMP)?|TINY(?:BLOB|INT|TEXT)|TOP?|TRAN(?:SACTIONS?)?|TRIGGER|TRUNCATE|TSEQUAL|TYPES?|UNBOUNDED|UNCOMMITTED|UNDEFINED|UNION|UNIQUE|UNLOCK|UNPIVOT|UNSIGNED|UPDATE(?:TEXT)?|USAGE|USE|USER|USING|VALUES?|VAR(?:BINARY|CHAR|CHARACTER|YING)|VIEW|WAITFOR|WARNINGS|WHEN|WHERE|WHILE|WITH(?: ROLLUP|IN)?|WORK|WRITE(?:TEXT)?|YEAR)\\b/i,\n 'boolean': /\\b(?:FALSE|NULL|TRUE)\\b/i,\n 'number': /\\b0x[\\da-f]+\\b|\\b\\d+(?:\\.\\d*)?|\\B\\.\\d+\\b/i,\n 'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n 'punctuation': /[;[\\]()`,.]/,\n 'error': /^\\s*ERROR/\n };\n};","\nfunction throttle(func, ms) {\n\n let isThrottled = false,\n savedArgs,\n savedThis;\n\n function wrapper() {\n\n if (isThrottled) {\n savedArgs = arguments;\n savedThis = this;\n return;\n }\n\n func.apply(this, arguments);\n\n isThrottled = true;\n\n setTimeout(() => {\n isThrottled = false;\n if (savedArgs) {\n wrapper.apply(savedThis, savedArgs);\n savedArgs = savedThis = null;\n }\n }, ms);\n }\n\n return wrapper;\n}\n\nmodule.exports = throttle;\n","let throttle = require('lodash/throttle');\nlet delegate = require('client/delegate');\n\nclass TutorialMap {\n constructor(elem) {\n this.elem = elem;\n\n this.throttleFilter = throttle(this.filter, 200);\n\n this.showTasksCheckbox = elem.querySelector('[data-tutorial-map-show-tasks]');\n this.showTasksCheckbox.checked = +sessionStorage.showTasksCheckbox;\n\n this.updateShowTasks();\n\n this.showTasksCheckbox.onchange = this.updateShowTasks.bind(this);\n\n this.filterInput = this.elem.querySelector('[data-tutorial-map-filter]');\n this.textInputBlock = this.elem.querySelector('.tutorial-map__filter .text-input');\n\n this.filterInput.oninput = this.onFilterInput.bind(this);\n this.filterInput.onkeydown = this.onFilterKeydown.bind(this);\n\n this.elem.querySelector('.text-input__clear').onclick = () => {\n this.filterInput.value = '';\n this.showClearButton(false);\n this.filter('');\n };\n\n this.chaptersCollapsed = JSON.parse(sessionStorage.tutorialMapChapters || \"{}\");\n this.showChaptersCollapsed();\n\n this.delegate('.tutorial-map__item > .tutorial-map__link', 'click', (event) => {\n event.preventDefault();\n let href = event.delegateTarget.getAttribute('href');\n if (this.chaptersCollapsed[href]) {\n delete this.chaptersCollapsed[href];\n } else {\n this.chaptersCollapsed[href] = 1;\n }\n sessionStorage.tutorialMapChapters = JSON.stringify(this.chaptersCollapsed);\n this.showChaptersCollapsed();\n });\n\n let activeLink = this.elem.querySelector('.tutorial-map-list-three__link[href=\"' + location.pathname + '\"]');\n if (activeLink) {\n activeLink.classList.add('tutorial-map-list-three__link_active');\n }\n\n this.filterInput.focus();\n\n }\n\n showChaptersCollapsed() {\n let links = this.elem.querySelectorAll('.tutorial-map__item > .tutorial-map__link');\n for (let i = 0; i < links.length; i++) {\n let link = links[i];\n\n if (this.chaptersCollapsed[link.getAttribute('href')]) {\n link.parentNode.classList.add('tutorial-map__item_collapsed');\n } else {\n link.parentNode.classList.remove('tutorial-map__item_collapsed');\n }\n }\n };\n\n\n updateShowTasks() {\n if (this.showTasksCheckbox.checked) {\n this.elem.classList.add('tutorial-map_show-tasks');\n } else {\n this.elem.classList.remove('tutorial-map_show-tasks');\n }\n\n sessionStorage.showTasksCheckbox = this.showTasksCheckbox.checked ? \"1\" : \"0\";\n }\n\n onFilterInput(event) {\n this.showClearButton(event.target.value);\n this.throttleFilter(event.target.value);\n }\n\n onFilterKeydown(event) {\n if (event.keyCode === 27) { // escape\n this.filterInput.value = '';\n this.showClearButton(false);\n this.filter('');\n }\n }\n\n showClearButton(show) {\n if (show) {\n this.textInputBlock.classList.add('text-input_clear-button');\n } else {\n this.textInputBlock.classList.remove('text-input_clear-button');\n }\n }\n\n // focus on the map itself, to allow immediate scrolling with arrow up/down keys\n focus() {\n this.elem.tabIndex = -1;\n this.elem.focus();\n }\n\n filter(value) {\n value = value.toLowerCase();\n\n let showingTasks = this.showTasksCheckbox.checked;\n\n let links = this.elem.querySelectorAll('.tutorial-map-list a');\n\n let topItems = this.elem.querySelectorAll('.tutorial-map-list-two__item');\n\n function checkLiMatch(li) {\n return isSubSequence(li.querySelector('a').innerHTML.toLowerCase(), value.replace(/\\s/g, ''));\n }\n\n // an item is shown if any of its children is shown OR it's link matches the filter\n for (let i = 0; i < topItems.length; i++) {\n let li = topItems[i];\n let subItems = li.querySelectorAll('.tutorial-map-list-three__item');\n\n let childMatch = Array.prototype.reduce.call(subItems, function (prevValue, subItem) {\n\n let childMatch = false;\n\n if (showingTasks) {\n let subItems = subItem.querySelectorAll('.tutorial-map-list-four__item');\n childMatch = Array.prototype.reduce.call(subItems, function (prevValue, subItem) {\n let match = checkLiMatch(subItem);\n subItem.hidden = !match;\n return prevValue || match;\n }, false);\n }\n\n let match = childMatch || checkLiMatch(subItem);\n //console.log(subItem, match);\n subItem.hidden = !match;\n\n return prevValue || match;\n }, false);\n\n li.hidden = !(childMatch || checkLiMatch(li));\n\n }\n\n }\n}\n\nmodule.exports = TutorialMap;\n\ndelegate.delegateMixin(TutorialMap.prototype);\n\n\nfunction isSubSequence(str1, str2) {\n let i = 0;\n let j = 0;\n while (i < str1.length && j < str2.length) {\n if (str1[i] === str2[j]) {\n i++;\n j++;\n } else {\n i++;\n }\n }\n return j === str2.length;\n}\n\n","\nlet xhr = require('client/xhr');\n\nlet delegate = require('client/delegate');\nlet Spinner = require('client/spinner');\nlet TutorialMap = require('./tutorialMap');\nlet trackSticky = require('client/trackSticky');\n\n/**\n * Options:\n * - callback: function to be called after successful login (by default - go to successRedirect)\n * - message: form message to be shown when the login form appears (\"Log in to leave the comment\")\n * - successRedirect: the page to redirect (current page by default)\n * - after immediate login\n * - after registration for \"confirm email\" link\n */\nclass TutorialMapModal {\n constructor() {\n this.elem = document.createElement('div');\n document.body.appendChild(this.elem);\n\n let modal = new Modal({hasClose: false});\n let spinner = new Spinner();\n modal.setContent(spinner.elem);\n spinner.start();\n\n this.onDocumentKeyDown = this.onDocumentKeyDown.bind(this);\n\n let request = xhr({\n url: '/tutorial/map'\n });\n\n request.addEventListener('success', (event) => {\n modal.remove();\n\n this.elem.innerHTML = '';\n this.mapElem = this.elem.firstChild;\n\n this.mapElem.innerHTML = event.result + '';\n\n this.mapElem.addEventListener('click', (e) => {\n if (e.target.classList.contains('tutorial-map-overlay__close')) {\n this.remove();\n }\n });\n\n document.addEventListener(\"keydown\", this.onDocumentKeyDown);\n\n document.body.classList.add('tutorial-map_on');\n\n this.mapElem.addEventListener('scroll', trackSticky, {passive: true});\n\n new TutorialMap(this.mapElem.firstElementChild);\n });\n\n request.addEventListener('fail', () => modal.remove());\n\n }\n\n\n remove() {\n this.elem.dispatchEvent(new CustomEvent('tutorial-map-remove'));\n this.elem.remove();\n document.body.classList.remove('tutorial-map_on');\n document.removeEventListener(\"keydown\", this.onDocumentKeyDown);\n }\n\n onDocumentKeyDown(event) {\n if (event.keyCode == 27) {\n event.preventDefault();\n this.remove();\n }\n }\n}\n\ndelegate.delegateMixin(TutorialMapModal.prototype);\n\nmodule.exports = TutorialMapModal;\n","/**\n * class BabelFish\n *\n * Internalization and localization library that makes i18n and l10n fun again.\n *\n * ##### Example\n *\n * ```javascript\n * var BabelFish = require('babelfish'),\n * i18n = new BabelFish();\n * ```\n *\n * or\n *\n * ```javascript\n * var babelfish = require('babelfish'),\n * i18n = babelfish();\n * ```\n **/\n\n\n'use strict';\n\n\nvar parser = require('./lib/parser');\nvar plural = require('plurals-cldr');\n\nfunction _class(obj) { return Object.prototype.toString.call(obj); }\n\nfunction isString(obj) { return _class(obj) === '[object String]'; }\nfunction isNumber(obj) { return !isNaN(obj) && isFinite(obj); }\nfunction isBoolean(obj) { return obj === true || obj === false; }\nfunction isFunction(obj) { return _class(obj) === '[object Function]'; }\nfunction isObject(obj) { return _class(obj) === '[object Object]'; }\n\n/*istanbul ignore next*/\nvar isArray = Array.isArray || function _isArray(obj) {\n return _class(obj) === '[object Array]';\n};\n\n\n////////////////////////////////////////////////////////////////////////////////\n// The following two utilities (forEach and extend) are modified from Underscore\n//\n// http://underscorejs.org\n//\n// (c) 2009-2013 Jeremy Ashkenas, DocumentCloud Inc.\n//\n// Underscore may be freely distributed under the MIT license\n////////////////////////////////////////////////////////////////////////////////\n\n\nvar nativeForEach = Array.prototype.forEach;\n\n\n// The cornerstone, an `each` implementation, aka `forEach`.\n// Handles objects with the built-in `forEach`, arrays, and raw objects.\n// Delegates to **ECMAScript 5**'s native `forEach` if available.\n/*istanbul ignore next*/\nfunction forEach(obj, iterator, context) {\n if (obj === null) {\n return;\n }\n if (nativeForEach && obj.forEach === nativeForEach) {\n obj.forEach(iterator, context);\n } else if (obj.length === +obj.length) {\n for (var i = 0, l = obj.length; i < l; i += 1) {\n iterator.call(context, obj[i], i, obj);\n }\n } else {\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n iterator.call(context, obj[key], key, obj);\n }\n }\n }\n}\n\n\nvar formatRegExp = /%[sdj%]/g;\n\n/*istanbul ignore next*/\nfunction format(f) {\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function (x) {\n if (x === '%%') { return '%'; }\n if (i >= len) { return x; }\n switch (x) {\n case '%s':\n return String(args[i++]);\n case '%d':\n return Number(args[i++]);\n case '%j':\n return JSON.stringify(args[i++]);\n default:\n return x;\n }\n });\n return str;\n}\n\n\n// helpers\n////////////////////////////////////////////////////////////////////////////////\n\n\n// Last resort locale, that exists for sure\nvar GENERIC_LOCALE = 'en';\n\n\n// flatten(obj) -> Object\n//\n// Flattens object into one-level dictionary.\n//\n// ##### Example\n//\n// var obj = {\n// abc: { def: 'foo' },\n// hij: 'bar'\n// };\n//\n// flatten(obj);\n// // -> { 'abc.def': 'foo', 'hij': 'bar' };\n//\nfunction flatten(obj) {\n var params = {};\n\n forEach(obj || {}, function (val, key) {\n if (val && typeof val === 'object') {\n forEach(flatten(val), function (sub_val, sub_key) {\n params[key + '.' + sub_key] = sub_val;\n });\n return;\n }\n\n params[key] = val;\n });\n\n return params;\n}\n\n\nvar keySeparator = '#@$';\n\nfunction makePhraseKey(locale, phrase) {\n return locale + keySeparator + phrase;\n}\n\n\nfunction searchPhraseKey(self, locale, phrase) {\n var key = makePhraseKey(locale, phrase);\n var storage = self._storage;\n\n // direct search first\n if (storage.hasOwnProperty(key)) { return key; }\n\n // don't try follbacks for default locale\n if (locale === self._defaultLocale) { return null; }\n\n // search via fallback map cache\n var fb_cache = self._fallbacks_cache;\n if (fb_cache.hasOwnProperty(key)) { return fb_cache[key]; }\n\n // scan fallbacks & cache result\n var fb = self._fallbacks[locale] || [ self._defaultLocale ];\n var fb_key;\n\n for (var i = 0, l = fb.length; i < l; i++) {\n fb_key = makePhraseKey(fb[i], phrase);\n if (storage.hasOwnProperty(fb_key)) {\n // found - update cache and return result\n fb_cache[key] = fb_key;\n return fb_cache[key];\n }\n }\n\n // mark fb_cache entry empty for fast lookup on next request\n fb_cache[key] = null;\n return null;\n}\n\n\nfunction pluralizer(lang, val, forms) {\n var idx = plural.indexOf(lang, val);\n\n if (idx === -1) {\n return format('[pluralizer for \"%s\" locale not found]', lang);\n }\n\n if (typeof forms[idx] === 'undefined') {\n return format(\n '[plural form %d (\"%s\") not found in translation]',\n idx, plural.forms(lang)[idx]\n );\n }\n\n return forms[idx];\n}\n\n// public api (module)\n////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n * new BabelFish([defaultLocale = 'en'])\n *\n * Initiates new instance of BabelFish.\n *\n * __Note!__ you can omit `new` for convenience, direct call will return\n * new instance too.\n **/\nfunction BabelFish(defaultLocale) {\n if (!(this instanceof BabelFish)) { return new BabelFish(defaultLocale); }\n\n this._defaultLocale = defaultLocale ? String(defaultLocale) : GENERIC_LOCALE;\n\n // hash of locale => [ fallback1, fallback2, ... ] pairs\n this._fallbacks = {};\n\n // fallback cache for each phrase\n //\n // {\n // locale_key: fallback_key\n // }\n //\n // fallback_key can be null if search failed\n //\n this._fallbacks_cache = {};\n\n // storage of compiled translations\n //\n // {\n // locale + @#$ + phrase_key: {\n // locale: locale name - can be different for fallbacks\n // translation: original translation phrase or data variable/object\n // raw: true/false - does translation contain plain data or\n // string to compile\n // compiled: copiled translation fn or plain string\n // }\n // ...\n // }\n //\n this._storage = {};\n\n // cache for complex plural parts (with params)\n //\n // {\n // language: new BabelFish(language)\n // }\n //\n this._plurals_cache = {};\n}\n\n\n// public api (instance)\n////////////////////////////////////////////////////////////////////////////////\n\n\n/**\n * BabelFish#addPhrase(locale, phrase, translation [, flattenLevel]) -> BabelFish\n * - locale (String): Locale of translation\n * - phrase (String|Null): Phrase ID, e.g. `apps.forum`\n * - translation (String|Object|Array|Number|Boolean): Translation or an object\n * with nested phrases, or a pure object.\n * - flattenLevel (Number|Boolean): Optional, 0..infinity. `Infinity` by default.\n * Define \"flatten\" deepness for loaded object. You can also use\n * `true` as `0` or `false` as `Infinity`.\n *\n *\n * ##### Flatten & using JS objects\n *\n * By default all nested properties are normalized to strings like \"foo.bar.baz\",\n * and if value is string, it will be compiled with babelfish notation.\n * If deepness is above `flattenLevel` OR value is not object and not string,\n * it will be used \"as is\". Note, only JSON stringifiable data should be used.\n *\n * In short: you can safely pass `Array`, `Number` or `Boolean`. For objects you\n * should define flatten level or disable it compleetely, to work with pure data.\n *\n * Pure objects can be useful to prepare bulk data for external libraries, like\n * calendars, time/date generators and so on.\n *\n * ##### Example\n *\n * ```javascript\n * i18n.addPhrase('ru-RU',\n * 'apps.forums.replies_count',\n * '#{count} %{ответ|ответа|ответов}:count в теме');\n *\n * // equals to:\n * i18n.addPhrase('ru-RU',\n * 'apps.forums',\n * { replies_count: '#{count} %{ответ|ответа|ответов}:count в теме' });\n * ```\n **/\nBabelFish.prototype.addPhrase = function _addPhrase(locale, phrase, translation, flattenLevel) {\n var self = this, fl;\n\n // Calculate flatten level. Infinity by default\n if (isBoolean(flattenLevel)) {\n fl = flattenLevel ? Infinity : 0;\n } else if (isNumber(flattenLevel)) {\n fl = Math.floor(flattenLevel);\n if (fl < 0) {\n throw new TypeError('Invalid flatten level (should be >= 0).');\n }\n } else {\n fl = Infinity;\n }\n\n if (isObject(translation) && (fl > 0)) {\n // recursive object walk, until flattenLevel allows\n forEach(translation, function (val, key) {\n self.addPhrase(locale, (phrase ? phrase + '.' : '') + key, val, fl - 1);\n });\n return this;\n }\n\n if (isString(translation)) {\n this._storage[makePhraseKey(locale, phrase)] = {\n translation: translation,\n locale: locale,\n raw: false\n };\n } else if (isArray(translation) ||\n isNumber(translation) ||\n isBoolean(translation) ||\n (fl === 0 && isObject(translation))) {\n // Pure objects are stored without compilation\n // Limit allowed types.\n this._storage[makePhraseKey(locale, phrase)] = {\n translation: translation,\n locale: locale,\n raw: true\n };\n } else {\n // `Regex`, `Date`, `Uint8Array` and others types will\n // fuckup `stringify()`. Don't allow here.\n // `undefined` also means wrong param in real life.\n // `null` can be allowed when examples from real life available.\n throw new TypeError('Invalid translation - [String|Object|Array|Number|Boolean] expected.');\n }\n\n self._fallbacks_cache = {};\n\n return this;\n};\n\n\n/**\n * BabelFish#setFallback(locale, fallbacks) -> BabelFish\n * - locale (String): Target locale\n * - fallbacks (Array): List of fallback locales\n *\n * Set fallbacks for given locale.\n *\n * When `locale` has no translation for the phrase, `fallbacks[0]` will be\n * tried, if translation still not found, then `fallbacks[1]` will be tried\n * and so on. If none of fallbacks have translation,\n * default locale will be tried as last resort.\n *\n * ##### Errors\n *\n * - throws `Error`, when `locale` equals default locale\n *\n * ##### Example\n *\n * ```javascript\n * i18n.setFallback('ua-UK', ['ua', 'ru']);\n * ```\n **/\nBabelFish.prototype.setFallback = function _setFallback(locale, fallbacks) {\n var def = this._defaultLocale;\n\n if (def === locale) {\n throw new Error(\"Default locale can't have fallbacks\");\n }\n\n var fb = isArray(fallbacks) ? fallbacks.slice() : [ fallbacks ];\n if (fb[fb.length - 1] !== def) { fb.push(def); }\n\n this._fallbacks[locale] = fb;\n this._fallbacks_cache = {};\n\n return this;\n};\n\n\nvar CAN_HAVE_DIRECTIVES_RE = /#\\{|\\(\\(|\\\\\\\\/;\n\n// Compiles given string into function. Used to compile phrases,\n// which contains `plurals`, `variables`, etc.\nfunction compile(self, str, locale) {\n var nodes, buf, key, strict_exec, forms_exec, plurals_cache;\n\n // Quick check to avoid parse in most cases :)\n if (!CAN_HAVE_DIRECTIVES_RE.test(str)) { return str; }\n\n nodes = parser.parse(str);\n\n if (nodes.length === 1 && nodes[0].type === 'literal') {\n return nodes[0].text;\n }\n\n // init cache instance for plural parts, if not exists yet.\n if (!self._plurals_cache[locale]) {\n self._plurals_cache[locale] = new BabelFish(locale);\n }\n plurals_cache = self._plurals_cache[locale];\n\n buf = [];\n buf.push([ 'var str = \"\", strict, strict_exec, forms, forms_exec, plrl, cache, loc, loc_plzr, anchor;' ]);\n buf.push('params = flatten(params);');\n\n forEach(nodes, function (node) {\n if (node.type === 'literal') {\n buf.push(format('str += %j;', node.text));\n return;\n }\n\n if (node.type === 'variable') {\n key = node.anchor;\n buf.push(format(\n 'str += (\"undefined\" === typeof (params[%j])) ? \"[missed variable: %s]\" : params[%j];',\n key, key, key\n ));\n return;\n }\n\n // should never happen\n /*istanbul ignore next*/\n if (node.type !== 'plural') { throw new Error('Unknown node type'); }\n\n //\n // Compile plural\n //\n\n key = node.anchor;\n // check if plural parts are plain strings or executable,\n // and add executable to \"cache\" instance of babelfish\n // plural part text will be used as translation key\n strict_exec = {};\n forEach(node.strict, function (text, k) {\n var parsed = parser.parse(text);\n if (parsed.length === 1 && parsed[0].type === 'literal') {\n strict_exec[k] = false;\n // patch with unescaped value for direct extract\n node.strict[k] = parsed[0].text;\n return;\n }\n\n strict_exec[k] = true;\n if (!plurals_cache.hasPhrase(locale, text, true)) {\n plurals_cache.addPhrase(locale, text, text);\n }\n });\n\n forms_exec = {};\n forEach(node.forms, function (text, idx) {\n var parsed = parser.parse(text), unescaped;\n if (parsed.length === 1 && parsed[0].type === 'literal') {\n // patch with unescaped value for direct extract\n unescaped = parsed[0].text;\n node.forms[idx] = unescaped;\n forms_exec[unescaped] = false;\n return;\n }\n\n forms_exec[text] = true;\n if (!plurals_cache.hasPhrase(locale, text, true)) {\n plurals_cache.addPhrase(locale, text, text);\n }\n });\n /*eslint-disable space-in-parens*/\n buf.push(format('loc = %j;', locale));\n buf.push(format('loc_plzr = %j;', locale.split(/[-_]/)[0]));\n buf.push(format('anchor = params[%j];', key));\n buf.push(format('cache = this._plurals_cache[loc];'));\n buf.push(format('strict = %j;', node.strict));\n buf.push(format('strict_exec = %j;', strict_exec));\n buf.push(format('forms = %j;', node.forms));\n buf.push(format('forms_exec = %j;', forms_exec));\n buf.push( 'if (+(anchor) != anchor) {');\n buf.push(format(' str += \"[invalid plurals amount: %s(\" + anchor + \")]\";', key));\n buf.push( '} else {');\n buf.push( ' if (strict[anchor] !== undefined) {');\n buf.push( ' plrl = strict[anchor];');\n buf.push( ' str += strict_exec[anchor] ? cache.t(loc, plrl, params) : plrl;');\n buf.push( ' } else {');\n buf.push( ' plrl = pluralizer(loc_plzr, +anchor, forms);');\n buf.push( ' str += forms_exec[plrl] ? cache.t(loc, plrl, params) : plrl;');\n buf.push( ' }');\n buf.push( '}');\n return;\n });\n\n buf.push('return str;');\n\n /*eslint-disable no-new-func*/\n return new Function('params', 'flatten', 'pluralizer', buf.join('\\n'));\n}\n\n\n/**\n * BabelFish#translate(locale, phrase[, params]) -> String\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - params (Object|Number|String): Params for translation. `Number` & `String`\n * will be coerced to `{ count: X, value: X }`\n *\n * ##### Example\n *\n * ```javascript\n * i18n.addPhrase('ru-RU',\n * 'apps.forums.replies_count',\n * '#{count} ((ответ|ответа|ответов)) в теме');\n *\n * // ...\n *\n * i18n.translate('ru-RU', 'app.forums.replies_count', { count: 1 });\n * i18n.translate('ru-RU', 'app.forums.replies_count', 1});\n * // -> '1 ответ'\n *\n * i18n.translate('ru-RU', 'app.forums.replies_count', { count: 2 });\n * i18n.translate('ru-RU', 'app.forums.replies_count', 2);\n * // -> '2 ответa'\n * ```\n **/\nBabelFish.prototype.translate = function _translate(locale, phrase, params) {\n var key = searchPhraseKey(this, locale, phrase);\n var data;\n\n if (!key) {\n return locale + ': No translation for [' + phrase + ']';\n }\n\n data = this._storage[key];\n\n // simple string or other pure object\n if (data.raw) { return data.translation; }\n\n // compile data if not done yet\n if (!data.hasOwnProperty('compiled')) {\n // We should use locale from phrase, because of possible fallback,\n // to keep plural locales in sync.\n data.compiled = compile(this, data.translation, data.locale);\n }\n\n // return simple string immediately\n if (!isFunction(data.compiled)) {\n return data.compiled;\n }\n\n //\n // Generate \"complex\" phrase\n //\n\n // Sugar: coerce numbers & strings to { count: X, value: X }\n if (isNumber(params) || isString(params)) {\n params = { count: params, value: params };\n }\n\n return data.compiled.call(this, params, flatten, pluralizer);\n};\n\n\n/**\n * BabelFish#hasPhrase(locale, phrase) -> Boolean\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - noFallback (Boolean): Disable search in fallbacks\n *\n * Returns whenever or not there's a translation of a `phrase`.\n **/\nBabelFish.prototype.hasPhrase = function _hasPhrase(locale, phrase, noFallback) {\n return noFallback ?\n this._storage.hasOwnProperty(makePhraseKey(locale, phrase))\n :\n searchPhraseKey(this, locale, phrase) ? true : false;\n};\n\n\n/**\n * BabelFish#getLocale(locale, phrase) -> String|null\n * - locale (String): Locale of translation\n * - phrase (String): Phrase ID, e.g. `app.forums.replies_count`\n * - noFallback (Boolean): Disable search in fallbacks\n *\n * Similar to [[BabelFish#hasPhrase]], but returns real locale of requested\n * phrase, or `null` if nothing found. Can be useful for dynamic dependencies\n * init. For example, when you fetch i10n config as single object and create\n * phrases from it's content.\n **/\nBabelFish.prototype.getLocale = function _getLocale(locale, phrase, noFallback) {\n if (noFallback) {\n return this._storage.hasOwnProperty(makePhraseKey(locale, phrase)) ? locale : null;\n }\n\n var key = searchPhraseKey(this, locale, phrase);\n\n return key ? key.split(keySeparator, 2)[0] : null;\n};\n\n\n/** alias of: BabelFish#translate\n * BabelFish#t(locale, phrase[, params]) -> String\n **/\nBabelFish.prototype.t = BabelFish.prototype.translate;\n\n\n/**\n * BabelFish#stringify(locale) -> String\n * - locale (String): Locale of translation\n *\n * Returns serialized locale data, including fallbacks.\n * It can be loaded back via `load()` method.\n **/\nBabelFish.prototype.stringify = function _stringify(locale) {\n var self = this;\n\n // Collect unique keys\n var unique = {};\n\n forEach(this._storage, function (val, key) {\n unique[key.split(keySeparator)[1]] = true;\n });\n\n // Collect phrases (with fallbacks)\n var result = {};\n\n forEach(unique, function (val, key) {\n var k = searchPhraseKey(self, locale, key);\n // if key was just a garbage from another\n // and doesn't fit into fallback chain for current locale - skip it\n if (!k) { return; }\n // create namespace if not exists\n var l = self._storage[k].locale;\n if (!result[l]) { result[l] = {}; }\n result[l][key] = self._storage[k].translation;\n });\n\n var out = {\n fallback: {},\n locales: result\n };\n\n // Get fallback rule. Cut auto-added fallback to default locale\n var fallback = (self._fallbacks[locale] || []).slice(0, -1);\n if (fallback.length) {\n out.fallback[locale] = fallback;\n }\n\n return JSON.stringify(out);\n};\n\n\n/**\n * BabelFish#load(data) -> BabelFish\n * - data (Object|String): data from `stringify()` method, as object or string.\n *\n * Batch load phrases data, prepared with `stringify()` method.\n * Useful at browser side.\n **/\nBabelFish.prototype.load = function _load(data) {\n var self = this;\n\n if (isString(data)) { data = JSON.parse(data); }\n\n forEach(data.locales, function (phrases, locale) {\n forEach(phrases, function (translation, key) {\n self.addPhrase(locale, key, translation, 0);\n });\n });\n\n forEach(data.fallback, function (rule, locale) {\n self.setFallback(locale, rule);\n });\n\n return this;\n};\n\n// export module\nmodule.exports = BabelFish;\n","module.exports = (function() {\n /*\n * Generated by PEG.js 0.8.0.\n *\n * http://pegjs.majda.cz/\n */\n\n function peg$subclass(child, parent) {\n function ctor() { this.constructor = child; }\n ctor.prototype = parent.prototype;\n child.prototype = new ctor();\n }\n\n function SyntaxError(message, expected, found, offset, line, column) {\n this.message = message;\n this.expected = expected;\n this.found = found;\n this.offset = offset;\n this.line = line;\n this.column = column;\n\n this.name = \"SyntaxError\";\n }\n\n peg$subclass(SyntaxError, Error);\n\n function parse(input) {\n var options = arguments.length > 1 ? arguments[1] : {},\n\n peg$FAILED = {},\n\n peg$startRuleFunctions = { start: peg$parsestart },\n peg$startRuleFunction = peg$parsestart,\n\n peg$c0 = [],\n peg$c1 = peg$FAILED,\n peg$c2 = \"((\",\n peg$c3 = { type: \"literal\", value: \"((\", description: \"\\\"((\\\"\" },\n peg$c4 = \"))\",\n peg$c5 = { type: \"literal\", value: \"))\", description: \"\\\"))\\\"\" },\n peg$c6 = null,\n peg$c7 = function(forms, anchor) {\n return {\n type: 'plural',\n forms: regularForms(forms),\n strict: strictForms(forms),\n anchor: anchor || 'count'\n };\n },\n peg$c8 = \"|\",\n peg$c9 = { type: \"literal\", value: \"|\", description: \"\\\"|\\\"\" },\n peg$c10 = function(part, more) {\n return [part].concat(more);\n },\n peg$c11 = function(part) {\n return [part];\n },\n peg$c12 = \"=\",\n peg$c13 = { type: \"literal\", value: \"=\", description: \"\\\"=\\\"\" },\n peg$c14 = /^[0-9]/,\n peg$c15 = { type: \"class\", value: \"[0-9]\", description: \"[0-9]\" },\n peg$c16 = \" \",\n peg$c17 = { type: \"literal\", value: \" \", description: \"\\\" \\\"\" },\n peg$c18 = function(strict, form) {\n return {\n strict: strict.join(''),\n text: form.join('')\n }\n },\n peg$c19 = function() {\n return {\n text: text()\n };\n },\n peg$c20 = \"\\\\\",\n peg$c21 = { type: \"literal\", value: \"\\\\\", description: \"\\\"\\\\\\\\\\\"\" },\n peg$c22 = /^[\\\\|)(]/,\n peg$c23 = { type: \"class\", value: \"[\\\\\\\\|)(]\", description: \"[\\\\\\\\|)(]\" },\n peg$c24 = function(char) {\n return char;\n },\n peg$c25 = void 0,\n peg$c26 = { type: \"any\", description: \"any character\" },\n peg$c27 = function() {\n return text();\n },\n peg$c28 = \":\",\n peg$c29 = { type: \"literal\", value: \":\", description: \"\\\":\\\"\" },\n peg$c30 = function(name) {\n return name;\n },\n peg$c31 = \"#{\",\n peg$c32 = { type: \"literal\", value: \"#{\", description: \"\\\"#{\\\"\" },\n peg$c33 = \"}\",\n peg$c34 = { type: \"literal\", value: \"}\", description: \"\\\"}\\\"\" },\n peg$c35 = function(anchor) {\n return {\n type: 'variable',\n anchor: anchor\n };\n },\n peg$c36 = \".\",\n peg$c37 = { type: \"literal\", value: \".\", description: \"\\\".\\\"\" },\n peg$c38 = function() {\n return text()\n },\n peg$c39 = /^[a-zA-Z_$]/,\n peg$c40 = { type: \"class\", value: \"[a-zA-Z_$]\", description: \"[a-zA-Z_$]\" },\n peg$c41 = /^[a-zA-Z0-9_$]/,\n peg$c42 = { type: \"class\", value: \"[a-zA-Z0-9_$]\", description: \"[a-zA-Z0-9_$]\" },\n peg$c43 = function(lc) { return lc; },\n peg$c44 = function(literal_chars) {\n return {\n type: 'literal',\n text: literal_chars.join('')\n };\n },\n peg$c45 = /^[\\\\#()|]/,\n peg$c46 = { type: \"class\", value: \"[\\\\\\\\#()|]\", description: \"[\\\\\\\\#()|]\" },\n\n peg$currPos = 0,\n peg$reportedPos = 0,\n peg$cachedPos = 0,\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false },\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$reportedPos, peg$currPos);\n }\n\n function offset() {\n return peg$reportedPos;\n }\n\n function line() {\n return peg$computePosDetails(peg$reportedPos).line;\n }\n\n function column() {\n return peg$computePosDetails(peg$reportedPos).column;\n }\n\n function expected(description) {\n throw peg$buildException(\n null,\n [{ type: \"other\", description: description }],\n peg$reportedPos\n );\n }\n\n function error(message) {\n throw peg$buildException(message, null, peg$reportedPos);\n }\n\n function peg$computePosDetails(pos) {\n function advance(details, startPos, endPos) {\n var p, ch;\n\n for (p = startPos; p < endPos; p++) {\n ch = input.charAt(p);\n if (ch === \"\\n\") {\n if (!details.seenCR) { details.line++; }\n details.column = 1;\n details.seenCR = false;\n } else if (ch === \"\\r\" || ch === \"\\u2028\" || ch === \"\\u2029\") {\n details.line++;\n details.column = 1;\n details.seenCR = true;\n } else {\n details.column++;\n details.seenCR = false;\n }\n }\n }\n\n if (peg$cachedPos !== pos) {\n if (peg$cachedPos > pos) {\n peg$cachedPos = 0;\n peg$cachedPosDetails = { line: 1, column: 1, seenCR: false };\n }\n advance(peg$cachedPosDetails, peg$cachedPos, pos);\n peg$cachedPos = pos;\n }\n\n return peg$cachedPosDetails;\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$buildException(message, expected, pos) {\n function cleanupExpected(expected) {\n var i = 1;\n\n expected.sort(function(a, b) {\n if (a.description < b.description) {\n return -1;\n } else if (a.description > b.description) {\n return 1;\n } else {\n return 0;\n }\n });\n\n while (i < expected.length) {\n if (expected[i - 1] === expected[i]) {\n expected.splice(i, 1);\n } else {\n i++;\n }\n }\n }\n\n function buildMessage(expected, found) {\n function stringEscape(s) {\n function hex(ch) { return ch.charCodeAt(0).toString(16).toUpperCase(); }\n\n return s\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\"/g, '\\\\\"')\n .replace(/\\x08/g, '\\\\b')\n .replace(/\\t/g, '\\\\t')\n .replace(/\\n/g, '\\\\n')\n .replace(/\\f/g, '\\\\f')\n .replace(/\\r/g, '\\\\r')\n .replace(/[\\x00-\\x07\\x0B\\x0E\\x0F]/g, function(ch) { return '\\\\x0' + hex(ch); })\n .replace(/[\\x10-\\x1F\\x80-\\xFF]/g, function(ch) { return '\\\\x' + hex(ch); })\n .replace(/[\\u0180-\\u0FFF]/g, function(ch) { return '\\\\u0' + hex(ch); })\n .replace(/[\\u1080-\\uFFFF]/g, function(ch) { return '\\\\u' + hex(ch); });\n }\n\n var expectedDescs = new Array(expected.length),\n expectedDesc, foundDesc, i;\n\n for (i = 0; i < expected.length; i++) {\n expectedDescs[i] = expected[i].description;\n }\n\n expectedDesc = expected.length > 1\n ? expectedDescs.slice(0, -1).join(\", \")\n + \" or \"\n + expectedDescs[expected.length - 1]\n : expectedDescs[0];\n\n foundDesc = found ? \"\\\"\" + stringEscape(found) + \"\\\"\" : \"end of input\";\n\n return \"Expected \" + expectedDesc + \" but \" + foundDesc + \" found.\";\n }\n\n var posDetails = peg$computePosDetails(pos),\n found = pos < input.length ? input.charAt(pos) : null;\n\n if (expected !== null) {\n cleanupExpected(expected);\n }\n\n return new SyntaxError(\n message !== null ? message : buildMessage(expected, found),\n expected,\n found,\n pos,\n posDetails.line,\n posDetails.column\n );\n }\n\n function peg$parsestart() {\n var s0, s1;\n\n s0 = [];\n s1 = peg$parseliteral();\n if (s1 === peg$FAILED) {\n s1 = peg$parseplural();\n if (s1 === peg$FAILED) {\n s1 = peg$parsevariable();\n }\n }\n while (s1 !== peg$FAILED) {\n s0.push(s1);\n s1 = peg$parseliteral();\n if (s1 === peg$FAILED) {\n s1 = peg$parseplural();\n if (s1 === peg$FAILED) {\n s1 = peg$parsevariable();\n }\n }\n }\n\n return s0;\n }\n\n function peg$parseplural() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c2) {\n s1 = peg$c2;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c3); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseplural_forms();\n if (s2 !== peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c4) {\n s3 = peg$c4;\n peg$currPos += 2;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseplural_anchor();\n if (s4 === peg$FAILED) {\n s4 = peg$c6;\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c7(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseplural_forms() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n s1 = peg$parseplural_part();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 124) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s2 !== peg$FAILED) {\n s3 = peg$parseplural_forms();\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c10(s1, s3);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$parseplural_part();\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c11(s1);\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseplural_part() {\n var s0, s1, s2, s3, s4, s5;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 61) {\n s1 = peg$c12;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c13); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c14.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n if (s3 !== peg$FAILED) {\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c14.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c15); }\n }\n }\n } else {\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 32) {\n s3 = peg$c16;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c17); }\n }\n if (s3 === peg$FAILED) {\n s3 = peg$c6;\n }\n if (s3 !== peg$FAILED) {\n s4 = [];\n s5 = peg$parseplural_char();\n if (s5 !== peg$FAILED) {\n while (s5 !== peg$FAILED) {\n s4.push(s5);\n s5 = peg$parseplural_char();\n }\n } else {\n s4 = peg$c1;\n }\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c18(s2, s4);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$parseplural_char();\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$parseplural_char();\n }\n } else {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c19();\n }\n s0 = s1;\n }\n\n return s0;\n }\n\n function peg$parseplural_char() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c20;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c22.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$c23); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$currPos;\n s1 = peg$currPos;\n peg$silentFails++;\n if (input.charCodeAt(peg$currPos) === 124) {\n s2 = peg$c8;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c9); }\n }\n if (s2 === peg$FAILED) {\n if (input.substr(peg$currPos, 2) === peg$c4) {\n s2 = peg$c4;\n peg$currPos += 2;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c5); }\n }\n }\n peg$silentFails--;\n if (s2 === peg$FAILED) {\n s1 = peg$c25;\n } else {\n peg$currPos = s1;\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n if (input.length > 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$c26); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c27();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n }\n\n return s0;\n }\n\n function peg$parseplural_anchor() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 58) {\n s1 = peg$c28;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c29); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c30(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parsevariable() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (input.substr(peg$currPos, 2) === peg$c31) {\n s1 = peg$c31;\n peg$currPos += 2;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c32); }\n }\n if (s1 !== peg$FAILED) {\n s2 = peg$parseidentifier();\n if (s2 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 125) {\n s3 = peg$c33;\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c34); }\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c35(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseidentifier() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = peg$parseidentifier_part();\n if (s1 !== peg$FAILED) {\n if (input.charCodeAt(peg$currPos) === 46) {\n s2 = peg$c36;\n peg$currPos++;\n } else {\n s2 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c37); }\n }\n if (s2 !== peg$FAILED) {\n s3 = [];\n s4 = peg$parseidentifier();\n if (s4 !== peg$FAILED) {\n while (s4 !== peg$FAILED) {\n s3.push(s4);\n s4 = peg$parseidentifier();\n }\n } else {\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c38();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n s0 = peg$parseidentifier_part();\n }\n\n return s0;\n }\n\n function peg$parseidentifier_part() {\n var s0, s1, s2, s3;\n\n s0 = peg$currPos;\n if (peg$c39.test(input.charAt(peg$currPos))) {\n s1 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c40); }\n }\n if (s1 !== peg$FAILED) {\n s2 = [];\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n while (s3 !== peg$FAILED) {\n s2.push(s3);\n if (peg$c41.test(input.charAt(peg$currPos))) {\n s3 = input.charAt(peg$currPos);\n peg$currPos++;\n } else {\n s3 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c42); }\n }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c27();\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n\n return s0;\n }\n\n function peg$parseliteral() {\n var s0, s1, s2, s3, s4;\n\n s0 = peg$currPos;\n s1 = [];\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseplural();\n if (s4 === peg$FAILED) {\n s4 = peg$parsevariable();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c25;\n } else {\n peg$currPos = s3;\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseliteral_char();\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s2;\n s3 = peg$c43(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n if (s2 !== peg$FAILED) {\n while (s2 !== peg$FAILED) {\n s1.push(s2);\n s2 = peg$currPos;\n s3 = peg$currPos;\n peg$silentFails++;\n s4 = peg$parseplural();\n if (s4 === peg$FAILED) {\n s4 = peg$parsevariable();\n }\n peg$silentFails--;\n if (s4 === peg$FAILED) {\n s3 = peg$c25;\n } else {\n peg$currPos = s3;\n s3 = peg$c1;\n }\n if (s3 !== peg$FAILED) {\n s4 = peg$parseliteral_char();\n if (s4 !== peg$FAILED) {\n peg$reportedPos = s2;\n s3 = peg$c43(s4);\n s2 = s3;\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n } else {\n peg$currPos = s2;\n s2 = peg$c1;\n }\n }\n } else {\n s1 = peg$c1;\n }\n if (s1 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c44(s1);\n }\n s0 = s1;\n\n return s0;\n }\n\n function peg$parseliteral_char() {\n var s0, s1, s2;\n\n s0 = peg$currPos;\n if (input.charCodeAt(peg$currPos) === 92) {\n s1 = peg$c20;\n peg$currPos++;\n } else {\n s1 = peg$FAILED;\n if (peg$silentFails === 0) { peg$fail(peg$c21); }\n }\n if (s1 !== peg$FAILED) {\n if (peg$c45.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$c46); }\n }\n if (s2 !== peg$FAILED) {\n peg$reportedPos = s0;\n s1 = peg$c24(s2);\n s0 = s1;\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n } else {\n peg$currPos = s0;\n s0 = peg$c1;\n }\n if (s0 === peg$FAILED) {\n if (input.length > 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$c26); }\n }\n }\n\n return s0;\n }\n\n\n function regularForms(forms) {\n var result = [];\n for (var i=0; i