gatsby 2.32.9 → 2.32.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +23 -0
- package/cache-dir/app.js +2 -3
- package/cache-dir/commonjs/app.js +2 -1
- package/dist/commands/build.js +5 -1
- package/dist/commands/build.js.map +1 -1
- package/dist/commands/develop-process.js +5 -1
- package/dist/commands/develop-process.js.map +1 -1
- package/dist/redux/actions/public.js +16 -6
- package/dist/redux/actions/public.js.map +1 -1
- package/dist/redux/nodes.js +5 -1
- package/dist/redux/nodes.js.map +1 -1
- package/dist/redux/reducers/status.d.ts +1 -0
- package/dist/redux/reducers/status.js +5 -0
- package/dist/redux/reducers/status.js.map +1 -1
- package/dist/redux/types.d.ts +1 -0
- package/dist/redux/types.js.map +1 -1
- package/dist/state-machines/develop/index.js +1 -3
- package/dist/state-machines/develop/index.js.map +1 -1
- package/dist/utils/dev-ssr/develop-html-route.js +3 -3
- package/dist/utils/dev-ssr/develop-html-route.js.map +1 -1
- package/dist/utils/dev-ssr/render-dev-html.js +3 -2
- package/dist/utils/dev-ssr/render-dev-html.js.map +1 -1
- package/dist/utils/develop-preload-headers.js +1 -1
- package/dist/utils/develop-preload-headers.js.map +1 -1
- package/gatsby-admin-public/4c744e84-6c27fb4a13dc8c8c3e88.js.map +1 -1
- package/gatsby-admin-public/69bd6bf3-00a5b50945cce68e041c.js.map +1 -1
- package/gatsby-admin-public/784b2cee55c07b638f20445dec340adf9f1888a3-d690a55f56dedc0f95b3.js.map +1 -1
- package/gatsby-admin-public/854a7ef1f34af0aefbdfdd9304a0c00251662775-30cef3c004238987a416.js.map +1 -1
- package/gatsby-admin-public/{app-ae73c37ae339da42b23e.js → app-749bdcbe1800236c1de3.js} +2 -2
- package/gatsby-admin-public/{app-ae73c37ae339da42b23e.js.LICENSE.txt → app-749bdcbe1800236c1de3.js.LICENSE.txt} +0 -0
- package/gatsby-admin-public/app-749bdcbe1800236c1de3.js.map +1 -0
- package/gatsby-admin-public/c432bec7e9afb3443fd639df9e5f119e13575cf7-976ea4aa8380d4a68cb1.js.map +1 -1
- package/gatsby-admin-public/chunk-map.json +1 -1
- package/gatsby-admin-public/component---src-pages-index-tsx-70aa31e4e1eca0a560a8.js.map +1 -1
- package/gatsby-admin-public/component---src-pages-plugins-tsx-c6700b48ed9ac88a9768.js.map +1 -1
- package/gatsby-admin-public/{component---src-pages-recipe-js-48fb05e6af01805f0a27.js → component---src-pages-recipe-js-e508d7ea0c80b0071ca7.js} +1 -1
- package/gatsby-admin-public/component---src-pages-recipe-js-e508d7ea0c80b0071ca7.js.map +1 -0
- package/gatsby-admin-public/e2852b4470dcb2615e49edcd9de2a3c8119d4bec-fbd253211b90ee4d944c.js.map +1 -1
- package/gatsby-admin-public/framework-b5530edc347e85dd3979.js.map +1 -1
- package/gatsby-admin-public/index.html +1 -1
- package/gatsby-admin-public/page-data/app-data.json +1 -1
- package/gatsby-admin-public/pages/index.html +1 -1
- package/gatsby-admin-public/plugins/index.html +1 -1
- package/gatsby-admin-public/polyfill-dce23570cfd77335f976.js +2 -0
- package/gatsby-admin-public/polyfill-dce23570cfd77335f976.js.map +1 -0
- package/gatsby-admin-public/recipe/index.html +1 -1
- package/gatsby-admin-public/recipes/index.html +1 -1
- package/gatsby-admin-public/{webpack-runtime-ece0b6a1fdfb71d1b025.js → webpack-runtime-276364d320252125351e.js} +2 -2
- package/gatsby-admin-public/{webpack-runtime-ece0b6a1fdfb71d1b025.js.map → webpack-runtime-276364d320252125351e.js.map} +1 -1
- package/gatsby-admin-public/webpack.stats.json +1 -1
- package/package.json +7 -7
- package/gatsby-admin-public/app-ae73c37ae339da42b23e.js.map +0 -1
- package/gatsby-admin-public/component---src-pages-recipe-js-48fb05e6af01805f0a27.js.map +0 -1
- package/gatsby-admin-public/polyfill-3220228a1f93ed70393d.js +0 -2
- package/gatsby-admin-public/polyfill-3220228a1f93ed70393d.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/emphasis.js","webpack:///./src/utils/is-official-package.ts","webpack:////Users/matt/Repos/gatsby-master/node_modules/is-whitespace-character/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/collapse-white-space/index.js","webpack:///./src/components/gatsby-monogram.tsx","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/table.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/paragraph.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/url.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/unist-util-remove-position/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/vfile-location/index.js","webpack:///./src/utils/use-npm-data.tsx","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/newline.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/unist-util-visit/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/footnote-definition.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/util/get-indentation.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/vfile-message/node_modules/unist-util-stringify-position/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/state-toggle/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/parser.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/reference.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/algoliasearch/src/IndexBrowser.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/algoliasearch/src/Index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/list.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/is-word-character/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/link.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/is-hexadecimal/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-fenced.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/markdown-escapes/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/util/remove-indentation.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/unherit/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/unified/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/locate/link.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/repeat-string/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/set-options.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/trough/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/xtend/immutable.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/decode.js","webpack:///./src/pages/plugins.tsx","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/break.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/is-plain-obj/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/is-alphabetical/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/is-buffer/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/unist-util-remove-position/node_modules/unist-util-visit/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/locate/emphasis.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/algoliasearch/src/createAnalyticsClient.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/is-decimal/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/mdast-add-list-metadata/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/locate/url.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/replace-ext/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/lib/symbols.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/escape.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/parse-entities/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/lib/wrap-table-rows.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/heading-setext.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/locate/delete.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/vfile-message/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/lib/react-markdown.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/locate/strong.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/extend/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/trough/wrap.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/definition.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/lib/plugins/naive-html.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/auto-link.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/trim/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/locate/escape.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenizer.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/text.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/blockquote.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/lib/plugins/disallow-node.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/html-inline.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/delete.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/util/normalize.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-indented.js","webpack:///./src/github.svg","webpack:////Users/matt/Repos/gatsby-master/node_modules/algoliasearch/src/AlgoliaSearch.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/mdast-add-list-metadata/node_modules/unist-util-visit-parents/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/html-block.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/locate/tag.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/unescape.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/@reach/tabs/dist/tabs.esm.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/heading-atx.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/prism-react-renderer/prism/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/prism-react-renderer/themes/duotoneDark/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/prism-react-renderer/dist/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/lib/get-definitions.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/path-browserify/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/lib/renderers.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/lib/ast-to-react.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/parse.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/unist-util-visit-parents/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/bail/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/is-alphanumerical/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/lib/uri-transformer.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/locate/break.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/unist-util-visit-parents/node_modules/unist-util-is/convert.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/util/interrupt.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/trim-trailing-lines/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/vfile/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/strong.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/locate/code-inline.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/x-is-string/index.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/util/html.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/defaults.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/algoliasearch/src/browser/builds/algoliasearch.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-inline.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/thematic-break.js","webpack:////Users/matt/Repos/gatsby-master/node_modules/react-markdown/node_modules/vfile/core.js","webpack:///./src/prism-theme.tsx"],"names":["trim","word","whitespace","locate","module","exports","emphasis","locator","eat","value","silent","now","pedantic","marker","queue","subvalue","length","prev","index","character","charAt","this","options","column","offset","type","children","tokenizeInline","isOfficialPackage","pkg","repository","name","startsWith","url","re","test","fromCode","String","fromCharCode","replace","Monogram","fill","xmlns","viewBox","focusable","height","width","d","alignments","alignment","row","lines","hasDash","align","cell","preamble","count","opening","position","lineCount","line","rows","table","lineIndex","pipeIndex","first","gfm","indexOf","push","slice","join","splice","reset","decimal","trimTrailingLines","interrupt","size","settings","commonmark","tokenizers","blockTokenizers","interruptors","interruptParagraph","list","call","inList","left","decode","notInLink","PROTOCOLS","PROTOCOLS_LENGTH","content","protocol","match","parenCount","nextCharacter","exit","toLowerCase","substr","enterLink","title","nonTerminated","visit","hard","node","soft","undefined","force","offsetToPositionFactory","indices","positionToOffsetFactory","isNaN","file","contents","result","toPosition","toOffset","searchIndex","algoliasearch","algoliaConfig","APPLICATION_ID","API_KEY","initIndex","useNpmPackageData","React","useState","fetching","setFetching","error","setError","data","setData","useEffect","getObject","then","object","readme","fetch","res","text","catch","err","visitParents","CONTINUE","SKIP","EXIT","tree","visitor","reverse","parents","parent","normalize","footnoteDefinition","notInList","notInBlock","EXPRESSION_INITIAL_TAB","currentLine","subqueue","identifier","add","offsets","footnotes","C_BRACKET_OPEN","enterBlock","tokenizeBlock","indent","stops","characters","Math","floor","own","hasOwnProperty","point","pos","start","end","key","state","ctx","context","current","xtend","toggle","vfileLocation","unescape","tokenizer","Parser","doc","setOptions","inBlock","inLink","atStart","proto","prototype","keys","parse","exitStart","enterList","interruptList","interruptBlockquote","newline","indentedCode","fencedCode","blockquote","atxHeading","thematicBreak","setextHeading","html","footnote","definition","paragraph","inlineTokenizers","escape","autoLink","link","reference","strong","deletion","code","break","blockMethods","inlineMethods","tokenizeFactory","bracketed","depth","intro","referenceType","alt","raw","IndexBrowser","inherits","EventEmitter","stop","_stopped","_clean","_end","emit","_error","_result","removeAllListeners","IndexCore","deprecate","deprecatedMessage","exitPromise","errors","deprecateForwardToSlaves","Index","apply","arguments","exportData","method","_hitsPerPage","callback","search","page","_previous","hitsPerPage","previous","hits","nbHits","map","s","_highlightResult","synonyms","concat","addObject","objectID","indexObj","as","_jsonRequest","encodeURIComponent","indexName","body","hostType","addObjects","objects","isArray","Error","postObj","requests","i","request","action","partialUpdateObject","partialObject","createIfNotExists","partialUpdateObjects","usage","saveObject","saveObjects","deleteObject","AlgoliaSearchError","_promise","reject","deleteObjects","objectIDs","deleteByQuery","query","params","clone","client","attributesToRetrieve","distinct","clearCache","promise","stopOrDelete","searchContent","waitTask","doDeleteByQuery","deleteObjectsContent","taskID","success","_setTimeout","setTimeout","failure","deleteBy","_getSearchParams","browseAll","queryParameters","merge","browser","browseLoop","cursor","browseCallback","ttAdapter","self","syncCb","asyncCb","cb","loop","retryLoop","delay","status","clearIndex","getSettings","opts","advanced","searchSynonyms","exportSynonyms","bind","saveSynonym","synonym","forwardToSlaves","forwardToReplicas","getSynonym","deleteSynonym","clearSynonyms","batchSynonyms","replaceExistingSynonyms","searchRules","exportRules","saveRule","rule","getRule","deleteRule","clearRules","batchRules","rules","clearExistingRules","exists","statusCode","findObject","findCallback","requestOptions","paginate","that","paginateLoop","hit","nbPages","ObjectNotFound","getObjectPosition","setSettings","listUserKeys","listApiKeys","getUserKeyACL","getApiKey","deleteUserKey","deleteApiKey","addUserKey","acls","addApiKey","acl","validity","maxQueriesPerIPPerHour","maxHitsPerQuery","description","referers","addUserKeyWithValidity","updateUserKey","updateApiKey","putObj","repeat","getIndent","removeIndent","markers","ordered","nextIndex","startIndex","prefixed","currentMarker","prevEmpty","empty","items","allLines","emptyLines","item","enterTop","exitBlockquote","isLoose","indented","interuptors","LIST_ORDERED_COMMONMARK_MARKERS","LIST_ORDERED_MARKERS","LIST_UNORDERED_MARKERS","parseInt","TAB_SIZE","trail","loose","listItem","EXPRESSION_LOOSE_LIST_ITEM","EXPRESSION_TASK_ITEM","EXPRESSION_BULLET","EXPRESSION_PEDANTIC_BULLET","EXPRESSION_INITIAL_INDENT","task","fn","pedanticListItem","normalListItem","checked","replacer","$0","max","bullet","rest","trimmedLines","$1","$2","$3","$4","Number","split","LINK_MARKERS","COMMONMARK_LINK_MARKERS","closed","beforeURL","beforeTitle","hasMarker","isImage","charCodeAt","fenceCount","flag","exdentedContent","closing","exdentedClosing","lang","escapes","defaults","default","unherit","Local","maximum","indentation","padding","values","minIndent","Infinity","matrix","unshift","shift","Super","Of","From","parameters","extend","bail","vfile","trough","string","plain","unified","attachers","transformers","namespace","frozen","freezeIndex","processor","assertUnfrozen","freeze","use","addPlugin","addList","addPreset","plugins","plugin","entry","find","assertParser","newable","stringify","Compiler","assertCompiler","assertNode","compile","run","runSync","complete","assertDone","process","processSync","destination","transformer","Promise","executor","resolve","pipeline","p","next","asyncName","fromIndex","image","cache","str","num","TypeError","wrap","fns","middleware","input","done","target","source","Object","entities","decoder","warning","handleWarning","reason","message","handler","textContext","referenceContext","markdownRenderers","props","sx","color","heading","level","inlineCode","fontFamily","defaultProps","theme","language","className","style","tokens","getLineProps","getTokenProps","fontSize","token","PluginView","pluginName","useQuery","variables","id","fetchingNpmData","npmData","useMutation","updatingGatsbyPlugin","updateGatsbyPlugin","deletingGatsbyPlugin","deleteGatsbyPlugin","installingGatsbyPlugin","installGatsbyPlugin","validationError","setValidationError","isInstalled","gatsbyPlugin","isOfficial","JSON","telemetry","useTelemetry","errMsg","networkError","Array","graphQLErrors","e","styles","prismThemeCss","gap","flexDirection","alignItems","whiteSpace","humanDownloadsLast30Days","justifyContent","variant","href","src","gitHubIcon","tone","loading","onClick","evt","preventDefault","window","confirm","trackEvent","navigate","renderers","RegExp","onSubmit","json","js","eval","borderRadius","backgroundColor","borderColor","borderWidth","borderStyle","minHeight","onChange","disabled","hardBreak","toString","x","getPrototypeOf","isBuffer","obj","constructor","readFloatLE","isSlowBuffer","_isBuffer","asterisk","underscore","appId","apiKey","analytics","hosts","getABTests","_params","limit","forceAuthHeaders","getABTest","abTestID","addABTest","abTest","stopABTest","deleteABTest","visitWithParents","ast","listNode","n","child","min","path","npath","ext","nFileName","basename","extname","dirname","HtmlParser","Symbol","characterEntities","legacy","invalid","hexadecimal","alphanumerical","option","entityCharacters","terminated","following","output","entity","begin","diff","additional","handleText","handleReference","warningContext","MESSAGES","noop","at","flush","TESTS","attribute","BASE","disallowed","Function","SETEXT_MARKERS","VMessagePrototype","VMessage","origin","parts","range","location","parseOrigin","stack","ruleId","fatal","_toConsumableArray","arr","arr2","_arrayWithoutHoles","iter","iterator","from","_iterableToArray","_nonIterableSpread","PropTypes","addListMetadata","naiveHtml","disallowNode","astToReact","wrapTableRows","getDefinitions","uriTransformer","defaultRenderers","symbols","allTypes","ReactMarkdown","parserOptions","allowedTypes","disallowedTypes","parser","reduce","applyParserPlugin","rawAst","renderProps","definitions","astPlugins","filter","removalMethod","unwrapDisallowed","ofType","allowNode","ifNotMatch","renderHtml","escapeHtml","skipHtml","hasHtmlParser","some","identity","determineAstPlugins","transformedAst","sourcePos","rawSourcePos","transformLinkUri","propTypes","bool","func","arrayOf","oneOf","oneOfType","linkTarget","transformImageUri","array","types","hasOwn","toStr","defineProperty","gOPD","getOwnPropertyDescriptor","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","enumerable","configurable","newValue","writable","getProperty","copy","copyIsArray","deep","invoked","isEnclosedURLCharacter","delimiter","isUnclosedURLCharacter","selfClosingRe","simpleTagRe","open","currentParent","selfClosing","getSelfClosing","tag","getSimpleTag","matching","matchingTag","findAndPull","fromNode","toNode","toIndex","virtual","MAILTO_LENGTH","hasAtCharacter","right","matched","valueLength","methods","updatePosition","onlyAtStart","fail","eof","lastIndex","Position","before","last","getOffset","combined","l","substring","validateEat","MERGEABLE_NODES","mergeable","indents","untangle","mode","args","forEach","disallow","alphabetical","inlineHTML","EXPRESSION_HTML_LINK_OPEN","EXPRESSION_HTML_LINK_CLOSE","strikethrough","preceding","collapseWhiteSpace","blankQueue","subvalueQueue","contentQueue","CODE_INDENT","AlgoliaSearch","AlgoliaSearchCore","notImplemented","deleteIndex","moveIndex","srcIndexName","dstIndexName","operation","copyIndex","scopeOrCallback","_callback","scope","getLogs","listIndexes","initAnalytics","createAnalyticsClient","applicationID","restoreApiKey","indexes","startQueriesBatch","_batch","addQueryInBatch","sendQueriesBatch","batch","operations","assignUserID","userID","cluster","headers","assignUserIDs","userIDs","users","getTopUserID","getUserID","debugData","listClusters","listUserIDs","removeUserID","searchUserIDs","setPersonalizationStrategy","getPersonalizationStrategy","destroy","enableRateLimitForward","disableRateLimitForward","useSecuredAPIKey","disableSecuredAPIKey","generateSecuredApiKey","getSecuredApiKeyRemainingValidity","one","pop","all","openCloseTag","sequence","blocks","sequences","TabsKeyboardActivation","TabsOrientation","uniqueId","_","Token","Prism","util","encode","alias","o","objId","visited","v","languages","redef","insertBefore","inside","insert","root","grammar","newToken","ret","DFS","highlight","env","tokenize","matchGrammar","strarr","startPos","oneshot","patterns","j","pattern","lookbehind","greedy","lookbehindLength","global","flags","exec","to","k","len","delNum","after","wrapped","hooks","matchedStr","element","classes","attributes","aliases","markup","tagName","includedCdataInside","def","xml","mathml","svg","envVars","insideString","bash","variable","toBeCopied","shell","clike","punctuation","c","cpp","css","addInlined","selector","javascript","jsx","stringifyToken","walkTokens","openedTags","notTagNorBrace","openedBraces","plainText","javaDocLike","javadoclike","docLanguage","docCommentSupport","addSupport","keywords","java","function","getPlaceholder","toUpperCase","defineProperties","buildPlaceholders","placeholderPattern","replaceFilter","tokenStack","placeholder","tokenizePlaceholders","t","middle","replacement","php","string_interpolation","parameterPrefix","jsdoc","actionscript","comment","interpolation","coffeescript","coffee","maybeClassNameTokens","flow","keyword","n4js","n4jsd","typescript","ts","templateString","templateLiteralPattern","interpolationObject","interpolationPunctuationObject","interpolationPattern","createTemplate","counter","tokenizeWithHooks","tokenizeInterpolationExpression","expression","tempGrammar","tokenizeEmbedded","_tokens","placeholderCounter","placeholderMap","embeddedTokens","interpolationExpression","placeholders","afterTokens","Boolean","supportedLanguages","stringContent","findTemplateStrings","embedded","graphql","inner","createInline","starAlternative","tableCell","tableRow","tableLine","markdown","codeLang","codeBlock","cls","autoloader","Date","valueOf","random","loadLanguages","ele","document","getElementById","innerHTML","textContent","md","PREFIXES","prefix","git","go","handlebars","less","makefile","objectivec","ocaml","python","py","sass","atrule","operator","important","property","scss","sql","stylus","tsx","wasm","yaml","yml","opacity","textDecorationLine","fontStyle","fontWeight","_defineProperty","_extends","assign","newlineRe","normalizeEmptyLines","appendTypes","typesSize","themeToDict","base","create","themeDict","acc","themeEntry","includes","accStyle","objectWithoutProperties","exclude","Highlight","Component","this$1","prevTheme","prevLanguage","ref","getThemeDict","display","baseStyle","typeStyles","getStyleForToken","__proto__","render","typeArrStack","tokenArrStack","tokenArrIndexStack","tokenArrSizeStack","stackIndex","splitByNewlines","newlineCount","i$1","normalizeTokens","defs","normalizeArray","allowAboveRoot","up","xs","f","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSlash","paths","relative","fromParts","toParts","samePartsLength","outputParts","sep","hasRoot","matchedSlash","startDot","startPart","preDotState","supportsStringRender","version","createElement","SimpleRenderer","getCoreProps","delete","linkReference","imageReference","tableHead","tableBody","textAlign","coreProps","isHeader","useFragment","Fragment","attrs","checkbox","readOnly","isBlock","comp","nodeProps","dangerouslySetInnerHTML","__html","virtualHtml","parsedHtml","cloneElement","ReactIs","defaultNodePosition","renderer","isValidElementType","getNodeProps","resolveChildren","childNode","isTagRenderer","sourcePosition","includeNodeIndex","parentChildCount","assignDefined","nodeKey","tight","unwrapParagraphs","getListItemChildren","inline","columnAlignment","parsedChildren","el","Children","toArray","mergeNodeChildren","removePosition","EXPRESSION_LINE_BREAKS","convert","is","subresult","toResult","step","protocols","uri","colon","typeFactory","ok","anyFactory","matchesFactory","tests","checks","results","convertAll","interruptor","config","ignore","bools","val","VFile","filePath","messages","info","warn","openTag","closeTag","createAlgoliasearch","openingCount","found","tickQueue","markerCount","buffer","encoding","order","prop","history","assertPart","part","assertNonEmpty","assertPath","get","set","stem"],"mappings":"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","file":"component---src-pages-plugins-tsx-c6700b48ed9ac88a9768.js","sourcesContent":["'use strict';\n\nvar trim = require('trim');\n\nvar word = require('is-word-character');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/emphasis');\n\nmodule.exports = emphasis;\nemphasis.locator = locate;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction emphasis(eat, value, silent) {\n var self = this;\n var index = 0;\n var character = value.charAt(index);\n var now;\n var pedantic;\n var marker;\n var queue;\n var subvalue;\n var length;\n var prev;\n\n if (character !== C_ASTERISK && character !== C_UNDERSCORE) {\n return;\n }\n\n pedantic = self.options.pedantic;\n subvalue = character;\n marker = character;\n length = value.length;\n index++;\n queue = '';\n character = '';\n\n if (pedantic && whitespace(value.charAt(index))) {\n return;\n }\n\n while (index < length) {\n prev = character;\n character = value.charAt(index);\n\n if (character === marker && (!pedantic || !whitespace(prev))) {\n character = value.charAt(++index);\n\n if (character !== marker) {\n if (!trim(queue) || prev === marker) {\n return;\n }\n\n if (!pedantic && marker === C_UNDERSCORE && word(character)) {\n queue += marker;\n continue;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n now.column++;\n now.offset++;\n return eat(subvalue + queue + marker)({\n type: 'emphasis',\n children: self.tokenizeInline(queue, now)\n });\n }\n\n queue += marker;\n }\n\n if (!pedantic && character === '\\\\') {\n queue += character;\n character = value.charAt(++index);\n }\n\n queue += character;\n index++;\n }\n}","// Checks whether the package from an Algolia NPM search hit is an official Gatsby package\nexport default function isOfficialPackage(pkg: Record<string, any>): boolean {\n return (\n pkg.repository &&\n !pkg.name.startsWith(`@`) &&\n // if the repo url is the Gatsby monorepo\n (pkg.repository.url === `https://github.com/gatsbyjs/gatsby` ||\n // or the repo url is a specific package in the monorepo\n pkg.repository.url.startsWith(\n `https://github.com/gatsbyjs/gatsby/tree/master/packages/`\n ))\n )\n}\n","'use strict';\n\nmodule.exports = whitespace;\nvar fromCode = String.fromCharCode;\nvar re = /\\s/;\n/* Check if the given character code, or the character\n * code at the first character, is a whitespace character. */\n\nfunction whitespace(character) {\n return re.test(typeof character === 'number' ? fromCode(character) : character.charAt(0));\n}","'use strict';\n\nmodule.exports = collapse; // `collapse(' \\t\\nbar \\nbaz\\t') // ' bar baz '`\n\nfunction collapse(value) {\n return String(value).replace(/\\s+/g, ' ');\n}","import React from \"react\"\n\nfunction Monogram(): JSX.Element {\n return (\n <svg\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 1200 1200\"\n focusable=\"false\"\n height=\"1em\"\n width=\"1em\"\n >\n <path d=\"M600 0C268.6 0 0 268.6 0 600s268.6 600 600 600 600-268.6 600-600S931.4 0 600 0zM266.6 933.3C176.1 842.8 131 724.6 129.6 606L594 1070.4c-118.6-1.4-236.8-46.5-327.4-137.1zm437.7 126.1L140.6 495.7c47.5-210.1 235-367.1 459.4-367.1 156.9 0 295.5 77 381.2 194.9L915.6 379C845.8 279.5 730.5 214.3 600 214.3c-167.7 0-310.3 107.7-363.3 257.5l491.6 491.6c123.4-43.7 218-148.2 247.6-277.6H771.4V600h300c0 224.5-157 411.9-367.1 459.4z\" />\n </svg>\n )\n}\n\nexport default Monogram\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = table;\nvar C_BACKSLASH = '\\\\';\nvar C_TICK = '`';\nvar C_DASH = '-';\nvar C_PIPE = '|';\nvar C_COLON = ':';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar MIN_TABLE_COLUMNS = 1;\nvar MIN_TABLE_ROWS = 2;\nvar TABLE_ALIGN_LEFT = 'left';\nvar TABLE_ALIGN_CENTER = 'center';\nvar TABLE_ALIGN_RIGHT = 'right';\nvar TABLE_ALIGN_NONE = null;\n\nfunction table(eat, value, silent) {\n var self = this;\n var index;\n var alignments;\n var alignment;\n var subvalue;\n var row;\n var length;\n var lines;\n var queue;\n var character;\n var hasDash;\n var align;\n var cell;\n var preamble;\n var count;\n var opening;\n var now;\n var position;\n var lineCount;\n var line;\n var rows;\n var table;\n var lineIndex;\n var pipeIndex;\n var first;\n /* Exit when not in gfm-mode. */\n\n if (!self.options.gfm) {\n return;\n }\n /* Get the rows.\n * Detecting tables soon is hard, so there are some\n * checks for performance here, such as the minimum\n * number of rows, and allowed characters in the\n * alignment row. */\n\n\n index = 0;\n lineCount = 0;\n length = value.length + 1;\n lines = [];\n\n while (index < length) {\n lineIndex = value.indexOf(C_NEWLINE, index);\n pipeIndex = value.indexOf(C_PIPE, index + 1);\n\n if (lineIndex === -1) {\n lineIndex = value.length;\n }\n\n if (pipeIndex === -1 || pipeIndex > lineIndex) {\n if (lineCount < MIN_TABLE_ROWS) {\n return;\n }\n\n break;\n }\n\n lines.push(value.slice(index, lineIndex));\n lineCount++;\n index = lineIndex + 1;\n }\n /* Parse the alignment row. */\n\n\n subvalue = lines.join(C_NEWLINE);\n alignments = lines.splice(1, 1)[0] || [];\n index = 0;\n length = alignments.length;\n lineCount--;\n alignment = false;\n align = [];\n\n while (index < length) {\n character = alignments.charAt(index);\n\n if (character === C_PIPE) {\n hasDash = null;\n\n if (alignment === false) {\n if (first === false) {\n return;\n }\n } else {\n align.push(alignment);\n alignment = false;\n }\n\n first = false;\n } else if (character === C_DASH) {\n hasDash = true;\n alignment = alignment || TABLE_ALIGN_NONE;\n } else if (character === C_COLON) {\n if (alignment === TABLE_ALIGN_LEFT) {\n alignment = TABLE_ALIGN_CENTER;\n } else if (hasDash && alignment === TABLE_ALIGN_NONE) {\n alignment = TABLE_ALIGN_RIGHT;\n } else {\n alignment = TABLE_ALIGN_LEFT;\n }\n } else if (!whitespace(character)) {\n return;\n }\n\n index++;\n }\n\n if (alignment !== false) {\n align.push(alignment);\n }\n /* Exit when without enough columns. */\n\n\n if (align.length < MIN_TABLE_COLUMNS) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n /* Parse the rows. */\n\n\n position = -1;\n rows = [];\n table = eat(subvalue).reset({\n type: 'table',\n align: align,\n children: rows\n });\n\n while (++position < lineCount) {\n line = lines[position];\n row = {\n type: 'tableRow',\n children: []\n };\n /* Eat a newline character when this is not the\n * first row. */\n\n if (position) {\n eat(C_NEWLINE);\n }\n /* Eat the row. */\n\n\n eat(line).reset(row, table);\n length = line.length + 1;\n index = 0;\n queue = '';\n cell = '';\n preamble = true;\n count = null;\n opening = null;\n\n while (index < length) {\n character = line.charAt(index);\n\n if (character === C_TAB || character === C_SPACE) {\n if (cell) {\n queue += character;\n } else {\n eat(character);\n }\n\n index++;\n continue;\n }\n\n if (character === '' || character === C_PIPE) {\n if (preamble) {\n eat(character);\n } else {\n if (character && opening) {\n queue += character;\n index++;\n continue;\n }\n\n if ((cell || character) && !preamble) {\n subvalue = cell;\n\n if (queue.length > 1) {\n if (character) {\n subvalue += queue.slice(0, queue.length - 1);\n queue = queue.charAt(queue.length - 1);\n } else {\n subvalue += queue;\n queue = '';\n }\n }\n\n now = eat.now();\n eat(subvalue)({\n type: 'tableCell',\n children: self.tokenizeInline(cell, now)\n }, row);\n }\n\n eat(queue + character);\n queue = '';\n cell = '';\n }\n } else {\n if (queue) {\n cell += queue;\n queue = '';\n }\n\n cell += character;\n\n if (character === C_BACKSLASH && index !== length - 2) {\n cell += line.charAt(index + 1);\n index++;\n }\n\n if (character === C_TICK) {\n count = 1;\n\n while (line.charAt(index + 1) === character) {\n cell += character;\n index++;\n count++;\n }\n\n if (!opening) {\n opening = count;\n } else if (count >= opening) {\n opening = 0;\n }\n }\n }\n\n preamble = false;\n index++;\n }\n /* Eat the alignment row. */\n\n\n if (!position) {\n eat(C_NEWLINE + alignments);\n }\n }\n\n return table;\n}","'use strict';\n\nvar trim = require('trim');\n\nvar decimal = require('is-decimal');\n\nvar trimTrailingLines = require('trim-trailing-lines');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = paragraph;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar TAB_SIZE = 4;\n/* Tokenise paragraph. */\n\nfunction paragraph(eat, value, silent) {\n var self = this;\n var settings = self.options;\n var commonmark = settings.commonmark;\n var gfm = settings.gfm;\n var tokenizers = self.blockTokenizers;\n var interruptors = self.interruptParagraph;\n var index = value.indexOf(C_NEWLINE);\n var length = value.length;\n var position;\n var subvalue;\n var character;\n var size;\n var now;\n\n while (index < length) {\n /* Eat everything if there’s no following newline. */\n if (index === -1) {\n index = length;\n break;\n }\n /* Stop if the next character is NEWLINE. */\n\n\n if (value.charAt(index + 1) === C_NEWLINE) {\n break;\n }\n /* In commonmark-mode, following indented lines\n * are part of the paragraph. */\n\n\n if (commonmark) {\n size = 0;\n position = index + 1;\n\n while (position < length) {\n character = value.charAt(position);\n\n if (character === C_TAB) {\n size = TAB_SIZE;\n break;\n } else if (character === C_SPACE) {\n size++;\n } else {\n break;\n }\n\n position++;\n }\n\n if (size >= TAB_SIZE) {\n index = value.indexOf(C_NEWLINE, index + 1);\n continue;\n }\n }\n\n subvalue = value.slice(index + 1);\n /* Check if the following code contains a possible\n * block. */\n\n if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) {\n break;\n }\n /* Break if the following line starts a list, when\n * already in a list, or when in commonmark, or when\n * in gfm mode and the bullet is *not* numeric. */\n\n\n if (tokenizers.list.call(self, eat, subvalue, true) && (self.inList || commonmark || gfm && !decimal(trim.left(subvalue).charAt(0)))) {\n break;\n }\n\n position = index;\n index = value.indexOf(C_NEWLINE, index + 1);\n\n if (index !== -1 && trim(value.slice(position, index)) === '') {\n index = position;\n break;\n }\n }\n\n subvalue = value.slice(0, index);\n\n if (trim(subvalue) === '') {\n eat(subvalue);\n return null;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n subvalue = trimTrailingLines(subvalue);\n return eat(subvalue)({\n type: 'paragraph',\n children: self.tokenizeInline(subvalue, now)\n });\n}","'use strict';\n\nvar decode = require('parse-entities');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/url');\n\nmodule.exports = url;\nurl.locator = locate;\nurl.notInLink = true;\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_AT_SIGN = '@';\nvar HTTP_PROTOCOL = 'http://';\nvar HTTPS_PROTOCOL = 'https://';\nvar MAILTO_PROTOCOL = 'mailto:';\nvar PROTOCOLS = [HTTP_PROTOCOL, HTTPS_PROTOCOL, MAILTO_PROTOCOL];\nvar PROTOCOLS_LENGTH = PROTOCOLS.length;\n\nfunction url(eat, value, silent) {\n var self = this;\n var subvalue;\n var content;\n var character;\n var index;\n var position;\n var protocol;\n var match;\n var length;\n var queue;\n var parenCount;\n var nextCharacter;\n var exit;\n\n if (!self.options.gfm) {\n return;\n }\n\n subvalue = '';\n index = -1;\n length = PROTOCOLS_LENGTH;\n\n while (++index < length) {\n protocol = PROTOCOLS[index];\n match = value.slice(0, protocol.length);\n\n if (match.toLowerCase() === protocol) {\n subvalue = match;\n break;\n }\n }\n\n if (!subvalue) {\n return;\n }\n\n index = subvalue.length;\n length = value.length;\n queue = '';\n parenCount = 0;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (whitespace(character) || character === C_LT) {\n break;\n }\n\n if (character === '.' || character === ',' || character === ':' || character === ';' || character === '\"' || character === '\\'' || character === ')' || character === ']') {\n nextCharacter = value.charAt(index + 1);\n\n if (!nextCharacter || whitespace(nextCharacter)) {\n break;\n }\n }\n\n if (character === C_PAREN_OPEN || character === C_BRACKET_OPEN) {\n parenCount++;\n }\n\n if (character === C_PAREN_CLOSE || character === C_BRACKET_CLOSE) {\n parenCount--;\n\n if (parenCount < 0) {\n break;\n }\n }\n\n queue += character;\n index++;\n }\n\n if (!queue) {\n return;\n }\n\n subvalue += queue;\n content = subvalue;\n\n if (protocol === MAILTO_PROTOCOL) {\n position = queue.indexOf(C_AT_SIGN);\n\n if (position === -1 || position === length - 1) {\n return;\n }\n\n content = content.substr(MAILTO_PROTOCOL.length);\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n exit = self.enterLink();\n content = self.tokenizeInline(content, eat.now());\n exit();\n return eat(subvalue)({\n type: 'link',\n title: null,\n url: decode(subvalue, {\n nonTerminated: false\n }),\n children: content\n });\n}","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = removePosition;\n\nfunction removePosition(node, force) {\n visit(node, force ? hard : soft);\n return node;\n}\n\nfunction hard(node) {\n delete node.position;\n}\n\nfunction soft(node) {\n node.position = undefined;\n}","'use strict';\n/* Expose. */\n\nmodule.exports = factory;\n/* Factory. */\n\nfunction factory(file) {\n var contents = indices(String(file));\n return {\n toPosition: offsetToPositionFactory(contents),\n toOffset: positionToOffsetFactory(contents)\n };\n}\n/* Factory to get the line and column-based `position` for\n * `offset` in the bound indices. */\n\n\nfunction offsetToPositionFactory(indices) {\n return offsetToPosition;\n /* Get the line and column-based `position` for\n * `offset` in the bound indices. */\n\n function offsetToPosition(offset) {\n var index = -1;\n var length = indices.length;\n\n if (offset < 0) {\n return {};\n }\n\n while (++index < length) {\n if (indices[index] > offset) {\n return {\n line: index + 1,\n column: offset - (indices[index - 1] || 0) + 1,\n offset: offset\n };\n }\n }\n\n return {};\n }\n}\n/* Factory to get the `offset` for a line and column-based\n * `position` in the bound indices. */\n\n\nfunction positionToOffsetFactory(indices) {\n return positionToOffset;\n /* Get the `offset` for a line and column-based\n * `position` in the bound indices. */\n\n function positionToOffset(position) {\n var line = position && position.line;\n var column = position && position.column;\n\n if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {\n return (indices[line - 2] || 0) + column - 1 || 0;\n }\n\n return -1;\n }\n}\n/* Get indices of line-breaks in `value`. */\n\n\nfunction indices(value) {\n var result = [];\n var index = value.indexOf('\\n');\n\n while (index !== -1) {\n result.push(index + 1);\n index = value.indexOf('\\n', index + 1);\n }\n\n result.push(value.length + 1);\n return result;\n}","import React from \"react\"\nimport algoliasearch from \"algoliasearch\"\nimport algoliaConfig from \"./algolia-config\"\n\nconst client = algoliasearch(\n algoliaConfig.APPLICATION_ID,\n algoliaConfig.API_KEY\n)\nconst searchIndex = client.initIndex(`npm-search`)\n\ninterface IUseNpmPackageDataResult {\n data: Record<string, any> | null\n error: Error | null\n fetching: boolean\n}\n\nexport default function useNpmPackageData(\n name: string\n): IUseNpmPackageDataResult {\n const [fetching, setFetching] = React.useState(true)\n const [error, setError] = React.useState<Error | null>(null)\n const [data, setData] = React.useState<{} | null>(null)\n\n React.useEffect(() => {\n setFetching(true)\n setError(null)\n setData(null)\n searchIndex\n .getObject(name)\n .then(object => {\n // TODO(@mxstbr): properly type this method and result\n // @ts-ignore\n if (object.readme) {\n setFetching(false)\n setError(null)\n setData(object)\n } else {\n // Fallback for missing readme\n fetch(`https://unpkg.com/${name}/README.md`)\n .then(res => res.text())\n .then(readme => {\n setFetching(false)\n setError(null)\n setData({\n ...object,\n readme,\n })\n })\n .catch(() => null)\n }\n })\n .catch(err => {\n setFetching(false)\n setError(err)\n setData(null)\n })\n }, [name])\n\n return { fetching, error, data }\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = newline;\n/* Tokenise newline. */\n\nfunction newline(eat, value, silent) {\n var character = value.charAt(0);\n var length;\n var subvalue;\n var queue;\n var index;\n\n if (character !== '\\n') {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n index = 1;\n length = value.length;\n subvalue = character;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n queue += character;\n\n if (character === '\\n') {\n subvalue += queue;\n queue = '';\n }\n\n index++;\n }\n\n eat(subvalue);\n}","'use strict';\n\nmodule.exports = visit;\n\nvar visitParents = require('unist-util-visit-parents');\n\nvar CONTINUE = visitParents.CONTINUE;\nvar SKIP = visitParents.SKIP;\nvar EXIT = visitParents.EXIT;\nvisit.CONTINUE = CONTINUE;\nvisit.SKIP = SKIP;\nvisit.EXIT = EXIT;\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n\n visitParents(tree, test, overload, reverse);\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1];\n var index = parent ? parent.children.indexOf(node) : null;\n return visitor(node, index, parent);\n }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = footnoteDefinition;\nfootnoteDefinition.notInList = true;\nfootnoteDefinition.notInBlock = true;\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_CARET = '^';\nvar C_COLON = ':';\nvar EXPRESSION_INITIAL_TAB = /^( {4}|\\t)?/gm;\n\nfunction footnoteDefinition(eat, value, silent) {\n var self = this;\n var offsets = self.offset;\n var index;\n var length;\n var subvalue;\n var now;\n var currentLine;\n var content;\n var queue;\n var subqueue;\n var character;\n var identifier;\n var add;\n var exit;\n\n if (!self.options.footnotes) {\n return;\n }\n\n index = 0;\n length = value.length;\n subvalue = '';\n now = eat.now();\n currentLine = now.line;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n if (value.charAt(index) !== C_BRACKET_OPEN || value.charAt(index + 1) !== C_CARET) {\n return;\n }\n\n subvalue += C_BRACKET_OPEN + C_CARET;\n index = subvalue.length;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_CLOSE) {\n break;\n } else if (character === C_BACKSLASH) {\n queue += character;\n index++;\n character = value.charAt(index);\n }\n\n queue += character;\n index++;\n }\n\n if (!queue || value.charAt(index) !== C_BRACKET_CLOSE || value.charAt(index + 1) !== C_COLON) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n identifier = normalize(queue);\n subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n index = subvalue.length;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n now.column += subvalue.length;\n now.offset += subvalue.length;\n queue = '';\n content = '';\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_NEWLINE) {\n subqueue = character;\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_NEWLINE) {\n break;\n }\n\n subqueue += character;\n index++;\n }\n\n queue += subqueue;\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE) {\n break;\n }\n\n subqueue += character;\n index++;\n }\n\n if (subqueue.length === 0) {\n break;\n }\n\n queue += subqueue;\n }\n\n if (queue) {\n content += queue;\n queue = '';\n }\n\n content += character;\n index++;\n }\n\n subvalue += content;\n content = content.replace(EXPRESSION_INITIAL_TAB, function (line) {\n offsets[currentLine] = (offsets[currentLine] || 0) + line.length;\n currentLine++;\n return '';\n });\n add = eat(subvalue);\n exit = self.enterBlock();\n content = self.tokenizeBlock(content, now);\n exit();\n return add({\n type: 'footnoteDefinition',\n identifier: identifier,\n children: content\n });\n}","'use strict';\n\nmodule.exports = indentation;\n/* Map of characters, and their column length,\n * which can be used as indentation. */\n\nvar characters = {\n ' ': 1,\n '\\t': 4\n};\n/* Gets indentation information for a line. */\n\nfunction indentation(value) {\n var index = 0;\n var indent = 0;\n var character = value.charAt(index);\n var stops = {};\n var size;\n\n while (character in characters) {\n size = characters[character];\n indent += size;\n\n if (size > 1) {\n indent = Math.floor(indent / size) * size;\n }\n\n stops[indent] = index;\n character = value.charAt(++index);\n }\n\n return {\n indent: indent,\n stops: stops\n };\n}","'use strict';\n\nvar own = {}.hasOwnProperty;\nmodule.exports = stringify;\n\nfunction stringify(value) {\n /* Nothing. */\n if (!value || typeof value !== 'object') {\n return null;\n }\n /* Node. */\n\n\n if (own.call(value, 'position') || own.call(value, 'type')) {\n return position(value.position);\n }\n /* Position. */\n\n\n if (own.call(value, 'start') || own.call(value, 'end')) {\n return position(value);\n }\n /* Point. */\n\n\n if (own.call(value, 'line') || own.call(value, 'column')) {\n return point(value);\n }\n /* ? */\n\n\n return null;\n}\n\nfunction point(point) {\n if (!point || typeof point !== 'object') {\n point = {};\n }\n\n return index(point.line) + ':' + index(point.column);\n}\n\nfunction position(pos) {\n if (!pos || typeof pos !== 'object') {\n pos = {};\n }\n\n return point(pos.start) + '-' + point(pos.end);\n}\n\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1;\n}","'use strict';\n\nmodule.exports = factory;\n/* Construct a state `toggler`: a function which inverses\n * `property` in context based on its current value.\n * The by `toggler` returned function restores that value. */\n\nfunction factory(key, state, ctx) {\n return enter;\n\n function enter() {\n var context = ctx || this;\n var current = context[key];\n context[key] = !state;\n return exit;\n\n function exit() {\n context[key] = current;\n }\n }\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar toggle = require('state-toggle');\n\nvar vfileLocation = require('vfile-location');\n\nvar unescape = require('./unescape');\n\nvar decode = require('./decode');\n\nvar tokenizer = require('./tokenizer');\n\nmodule.exports = Parser;\n\nfunction Parser(doc, file) {\n this.file = file;\n this.offset = {};\n this.options = xtend(this.options);\n this.setOptions({});\n this.inList = false;\n this.inBlock = false;\n this.inLink = false;\n this.atStart = true;\n this.toOffset = vfileLocation(file).toOffset;\n this.unescape = unescape(this, 'escape');\n this.decode = decode(this);\n}\n\nvar proto = Parser.prototype;\n/* Expose core. */\n\nproto.setOptions = require('./set-options');\nproto.parse = require('./parse');\n/* Expose `defaults`. */\n\nproto.options = require('./defaults');\n/* Enter and exit helpers. */\n\nproto.exitStart = toggle('atStart', true);\nproto.enterList = toggle('inList', false);\nproto.enterLink = toggle('inLink', false);\nproto.enterBlock = toggle('inBlock', false);\n/* Nodes that can interupt a paragraph:\n *\n * ```markdown\n * A paragraph, followed by a thematic break.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the paragraph. */\n\nproto.interruptParagraph = [['thematicBreak'], ['atxHeading'], ['fencedCode'], ['blockquote'], ['html'], ['setextHeading', {\n commonmark: false\n}], ['definition', {\n commonmark: false\n}], ['footnote', {\n commonmark: false\n}]];\n/* Nodes that can interupt a list:\n *\n * ```markdown\n * - One\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the list. */\n\nproto.interruptList = [['atxHeading', {\n pedantic: false\n}], ['fencedCode', {\n pedantic: false\n}], ['thematicBreak', {\n pedantic: false\n}], ['definition', {\n commonmark: false\n}], ['footnote', {\n commonmark: false\n}]];\n/* Nodes that can interupt a blockquote:\n *\n * ```markdown\n * > A paragraph.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the blockquote. */\n\nproto.interruptBlockquote = [['indentedCode', {\n commonmark: true\n}], ['fencedCode', {\n commonmark: true\n}], ['atxHeading', {\n commonmark: true\n}], ['setextHeading', {\n commonmark: true\n}], ['thematicBreak', {\n commonmark: true\n}], ['html', {\n commonmark: true\n}], ['list', {\n commonmark: true\n}], ['definition', {\n commonmark: false\n}], ['footnote', {\n commonmark: false\n}]];\n/* Handlers. */\n\nproto.blockTokenizers = {\n newline: require('./tokenize/newline'),\n indentedCode: require('./tokenize/code-indented'),\n fencedCode: require('./tokenize/code-fenced'),\n blockquote: require('./tokenize/blockquote'),\n atxHeading: require('./tokenize/heading-atx'),\n thematicBreak: require('./tokenize/thematic-break'),\n list: require('./tokenize/list'),\n setextHeading: require('./tokenize/heading-setext'),\n html: require('./tokenize/html-block'),\n footnote: require('./tokenize/footnote-definition'),\n definition: require('./tokenize/definition'),\n table: require('./tokenize/table'),\n paragraph: require('./tokenize/paragraph')\n};\nproto.inlineTokenizers = {\n escape: require('./tokenize/escape'),\n autoLink: require('./tokenize/auto-link'),\n url: require('./tokenize/url'),\n html: require('./tokenize/html-inline'),\n link: require('./tokenize/link'),\n reference: require('./tokenize/reference'),\n strong: require('./tokenize/strong'),\n emphasis: require('./tokenize/emphasis'),\n deletion: require('./tokenize/delete'),\n code: require('./tokenize/code-inline'),\n break: require('./tokenize/break'),\n text: require('./tokenize/text')\n};\n/* Expose precedence. */\n\nproto.blockMethods = keys(proto.blockTokenizers);\nproto.inlineMethods = keys(proto.inlineTokenizers);\n/* Tokenizers. */\n\nproto.tokenizeBlock = tokenizer('block');\nproto.tokenizeInline = tokenizer('inline');\nproto.tokenizeFactory = tokenizer;\n/* Get all keys in `value`. */\n\nfunction keys(value) {\n var result = [];\n var key;\n\n for (key in value) {\n result.push(key);\n }\n\n return result;\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/link');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = reference;\nreference.locator = locate;\nvar T_LINK = 'link';\nvar T_IMAGE = 'image';\nvar T_FOOTNOTE = 'footnote';\nvar REFERENCE_TYPE_SHORTCUT = 'shortcut';\nvar REFERENCE_TYPE_COLLAPSED = 'collapsed';\nvar REFERENCE_TYPE_FULL = 'full';\nvar C_CARET = '^';\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\n\nfunction reference(eat, value, silent) {\n var self = this;\n var character = value.charAt(0);\n var index = 0;\n var length = value.length;\n var subvalue = '';\n var intro = '';\n var type = T_LINK;\n var referenceType = REFERENCE_TYPE_SHORTCUT;\n var content;\n var identifier;\n var now;\n var node;\n var exit;\n var queue;\n var bracketed;\n var depth;\n /* Check whether we’re eating an image. */\n\n if (character === '!') {\n type = T_IMAGE;\n intro = character;\n character = value.charAt(++index);\n }\n\n if (character !== C_BRACKET_OPEN) {\n return;\n }\n\n index++;\n intro += character;\n queue = '';\n /* Check whether we’re eating a footnote. */\n\n if (self.options.footnotes && value.charAt(index) === C_CARET) {\n /* Exit if `![^` is found, so the `!` will be seen as text after this,\n * and we’ll enter this function again when `[^` is found. */\n if (type === T_IMAGE) {\n return;\n }\n\n intro += C_CARET;\n index++;\n type = T_FOOTNOTE;\n }\n /* Eat the text. */\n\n\n depth = 0;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_OPEN) {\n bracketed = true;\n depth++;\n } else if (character === C_BRACKET_CLOSE) {\n if (!depth) {\n break;\n }\n\n depth--;\n }\n\n if (character === C_BACKSLASH) {\n queue += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n queue += character;\n index++;\n }\n\n subvalue = queue;\n content = queue;\n character = value.charAt(index);\n\n if (character !== C_BRACKET_CLOSE) {\n return;\n }\n\n index++;\n subvalue += character;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n /* Inline footnotes cannot have an identifier. */\n\n if (type !== T_FOOTNOTE && character === C_BRACKET_OPEN) {\n identifier = '';\n queue += character;\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_OPEN || character === C_BRACKET_CLOSE) {\n break;\n }\n\n if (character === C_BACKSLASH) {\n identifier += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n identifier += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character === C_BRACKET_CLOSE) {\n referenceType = identifier ? REFERENCE_TYPE_FULL : REFERENCE_TYPE_COLLAPSED;\n queue += identifier + character;\n index++;\n } else {\n identifier = '';\n }\n\n subvalue += queue;\n queue = '';\n } else {\n if (!content) {\n return;\n }\n\n identifier = content;\n }\n /* Brackets cannot be inside the identifier. */\n\n\n if (referenceType !== REFERENCE_TYPE_FULL && bracketed) {\n return;\n }\n\n subvalue = intro + subvalue;\n\n if (type === T_LINK && self.inLink) {\n return null;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n if (type === T_FOOTNOTE && content.indexOf(' ') !== -1) {\n return eat(subvalue)({\n type: 'footnote',\n children: this.tokenizeInline(content, eat.now())\n });\n }\n\n now = eat.now();\n now.column += intro.length;\n now.offset += intro.length;\n identifier = referenceType === REFERENCE_TYPE_FULL ? identifier : content;\n node = {\n type: type + 'Reference',\n identifier: normalize(identifier)\n };\n\n if (type === T_LINK || type === T_IMAGE) {\n node.referenceType = referenceType;\n }\n\n if (type === T_LINK) {\n exit = self.enterLink();\n node.children = self.tokenizeInline(content, now);\n exit();\n } else if (type === T_IMAGE) {\n node.alt = self.decode.raw(self.unescape(content), now) || null;\n }\n\n return eat(subvalue)(node);\n}","'use strict'; // This is the object returned by the `index.browseAll()` method\n\nmodule.exports = IndexBrowser;\n\nvar inherits = require('inherits');\n\nvar EventEmitter = require('events').EventEmitter;\n\nfunction IndexBrowser() {}\n\ninherits(IndexBrowser, EventEmitter);\n\nIndexBrowser.prototype.stop = function () {\n this._stopped = true;\n\n this._clean();\n};\n\nIndexBrowser.prototype._end = function () {\n this.emit('end');\n\n this._clean();\n};\n\nIndexBrowser.prototype._error = function (err) {\n this.emit('error', err);\n\n this._clean();\n};\n\nIndexBrowser.prototype._result = function (content) {\n this.emit('result', content);\n};\n\nIndexBrowser.prototype._clean = function () {\n this.removeAllListeners('stop');\n this.removeAllListeners('end');\n this.removeAllListeners('error');\n this.removeAllListeners('result');\n};","var inherits = require('inherits');\n\nvar IndexCore = require('./IndexCore.js');\n\nvar deprecate = require('./deprecate.js');\n\nvar deprecatedMessage = require('./deprecatedMessage.js');\n\nvar exitPromise = require('./exitPromise.js');\n\nvar errors = require('./errors');\n\nvar deprecateForwardToSlaves = deprecate(function () {}, deprecatedMessage('forwardToSlaves', 'forwardToReplicas'));\nmodule.exports = Index;\n\nfunction Index() {\n IndexCore.apply(this, arguments);\n}\n\ninherits(Index, IndexCore);\n/*\n* Add an object in this index\n*\n* @param content contains the javascript object to add inside the index\n* @param objectID (optional) an objectID you want to attribute to this object\n* (if the attribute already exist the old object will be overwrite)\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that contains 3 elements: createAt, taskId and objectID\n*/\n\nIndex.prototype.addObject = function (content, objectID, callback) {\n var indexObj = this;\n\n if (arguments.length === 1 || typeof objectID === 'function') {\n callback = objectID;\n objectID = undefined;\n }\n\n return this.as._jsonRequest({\n method: objectID !== undefined ? 'PUT' : // update or create\n 'POST',\n // create (API generates an objectID)\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + ( // create\n objectID !== undefined ? '/' + encodeURIComponent(objectID) : ''),\n // update or create\n body: content,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Add several objects\n*\n* @param objects contains an array of objects to add\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that updateAt and taskID\n*/\n\n\nIndex.prototype.addObjects = function (objects, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: index.addObjects(arrayOfObjects[, callback])';\n\n if (!isArray(objects)) {\n throw new Error(usage);\n }\n\n var indexObj = this;\n var postObj = {\n requests: []\n };\n\n for (var i = 0; i < objects.length; ++i) {\n var request = {\n action: 'addObject',\n body: objects[i]\n };\n postObj.requests.push(request);\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/batch',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Update partially an object (only update attributes passed in argument)\n*\n* @param partialObject contains the javascript attributes to override, the\n* object must contains an objectID attribute\n* @param createIfNotExists (optional) if false, avoid an automatic creation of the object\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that contains 3 elements: createAt, taskId and objectID\n*/\n\n\nIndex.prototype.partialUpdateObject = function (partialObject, createIfNotExists, callback) {\n if (arguments.length === 1 || typeof createIfNotExists === 'function') {\n callback = createIfNotExists;\n createIfNotExists = undefined;\n }\n\n var indexObj = this;\n var url = '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/' + encodeURIComponent(partialObject.objectID) + '/partial';\n\n if (createIfNotExists === false) {\n url += '?createIfNotExists=false';\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: url,\n body: partialObject,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Partially Override the content of several objects\n*\n* @param objects contains an array of objects to update (each object must contains a objectID attribute)\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that updateAt and taskID\n*/\n\n\nIndex.prototype.partialUpdateObjects = function (objects, createIfNotExists, callback) {\n if (arguments.length === 1 || typeof createIfNotExists === 'function') {\n callback = createIfNotExists;\n createIfNotExists = true;\n }\n\n var isArray = require('isarray');\n\n var usage = 'Usage: index.partialUpdateObjects(arrayOfObjects[, callback])';\n\n if (!isArray(objects)) {\n throw new Error(usage);\n }\n\n var indexObj = this;\n var postObj = {\n requests: []\n };\n\n for (var i = 0; i < objects.length; ++i) {\n var request = {\n action: createIfNotExists === true ? 'partialUpdateObject' : 'partialUpdateObjectNoCreate',\n objectID: objects[i].objectID,\n body: objects[i]\n };\n postObj.requests.push(request);\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/batch',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Override the content of object\n*\n* @param object contains the javascript object to save, the object must contains an objectID attribute\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that updateAt and taskID\n*/\n\n\nIndex.prototype.saveObject = function (object, callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'PUT',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/' + encodeURIComponent(object.objectID),\n body: object,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Override the content of several objects\n*\n* @param objects contains an array of objects to update (each object must contains a objectID attribute)\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that updateAt and taskID\n*/\n\n\nIndex.prototype.saveObjects = function (objects, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: index.saveObjects(arrayOfObjects[, callback])';\n\n if (!isArray(objects)) {\n throw new Error(usage);\n }\n\n var indexObj = this;\n var postObj = {\n requests: []\n };\n\n for (var i = 0; i < objects.length; ++i) {\n var request = {\n action: 'updateObject',\n objectID: objects[i].objectID,\n body: objects[i]\n };\n postObj.requests.push(request);\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/batch',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Delete an object from the index\n*\n* @param objectID the unique identifier of object to delete\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that contains 3 elements: createAt, taskId and objectID\n*/\n\n\nIndex.prototype.deleteObject = function (objectID, callback) {\n if (typeof objectID === 'function' || typeof objectID !== 'string' && typeof objectID !== 'number') {\n var err = new errors.AlgoliaSearchError(objectID && typeof objectID !== 'function' ? 'ObjectID must be a string' : 'Cannot delete an object without an objectID');\n callback = objectID;\n\n if (typeof callback === 'function') {\n return callback(err);\n }\n\n return this.as._promise.reject(err);\n }\n\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'DELETE',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/' + encodeURIComponent(objectID),\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Delete several objects from an index\n*\n* @param objectIDs contains an array of objectID to delete\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that contains 3 elements: createAt, taskId and objectID\n*/\n\n\nIndex.prototype.deleteObjects = function (objectIDs, callback) {\n var isArray = require('isarray');\n\n var map = require('./map.js');\n\n var usage = 'Usage: index.deleteObjects(arrayOfObjectIDs[, callback])';\n\n if (!isArray(objectIDs)) {\n throw new Error(usage);\n }\n\n var indexObj = this;\n var postObj = {\n requests: map(objectIDs, function prepareRequest(objectID) {\n return {\n action: 'deleteObject',\n objectID: objectID,\n body: {\n objectID: objectID\n }\n };\n })\n };\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/batch',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Delete all objects matching a query\n*\n* @param query the query string\n* @param params the optional query parameters\n* @param callback (optional) the result callback called with one argument\n* error: null or Error('message')\n* @deprecated see index.deleteBy\n*/\n\n\nIndex.prototype.deleteByQuery = deprecate(function (query, params, callback) {\n var clone = require('./clone.js');\n\n var map = require('./map.js');\n\n var indexObj = this;\n var client = indexObj.as;\n\n if (arguments.length === 1 || typeof params === 'function') {\n callback = params;\n params = {};\n } else {\n params = clone(params);\n }\n\n params.attributesToRetrieve = 'objectID';\n params.hitsPerPage = 1000;\n params.distinct = false; // when deleting, we should never use cache to get the\n // search results\n\n this.clearCache(); // there's a problem in how we use the promise chain,\n // see how waitTask is done\n\n var promise = this.search(query, params).then(stopOrDelete);\n\n function stopOrDelete(searchContent) {\n // stop here\n if (searchContent.nbHits === 0) {\n // return indexObj.as._request.resolve();\n return searchContent;\n } // continue and do a recursive call\n\n\n var objectIDs = map(searchContent.hits, function getObjectID(object) {\n return object.objectID;\n });\n return indexObj.deleteObjects(objectIDs).then(waitTask).then(doDeleteByQuery);\n }\n\n function waitTask(deleteObjectsContent) {\n return indexObj.waitTask(deleteObjectsContent.taskID);\n }\n\n function doDeleteByQuery() {\n return indexObj.deleteByQuery(query, params);\n }\n\n if (!callback) {\n return promise;\n }\n\n promise.then(success, failure);\n\n function success() {\n exitPromise(function exit() {\n callback(null);\n }, client._setTimeout || setTimeout);\n }\n\n function failure(err) {\n exitPromise(function exit() {\n callback(err);\n }, client._setTimeout || setTimeout);\n }\n}, deprecatedMessage('index.deleteByQuery()', 'index.deleteBy()'));\n/**\n* Delete all objects matching a query\n*\n* the query parameters that can be used are:\n* - filters (numeric, facet, tag)\n* - geo\n*\n* you can not send an empty query or filters\n*\n* @param params the optional query parameters\n* @param callback (optional) the result callback called with one argument\n* error: null or Error('message')\n*/\n\nIndex.prototype.deleteBy = function (params, callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/deleteByQuery',\n body: {\n params: indexObj.as._getSearchParams(params, '')\n },\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Browse all content from an index using events. Basically this will do\n* .browse() -> .browseFrom -> .browseFrom -> .. until all the results are returned\n*\n* @param {string} query - The full text query\n* @param {Object} [queryParameters] - Any search query parameter\n* @return {EventEmitter}\n* @example\n* var browser = index.browseAll('cool songs', {\n* tagFilters: 'public,comments',\n* hitsPerPage: 500\n* });\n*\n* browser.on('result', function resultCallback(content) {\n* console.log(content.hits);\n* });\n*\n* // if any error occurs, you get it\n* browser.on('error', function(err) {\n* throw err;\n* });\n*\n* // when you have browsed the whole index, you get this event\n* browser.on('end', function() {\n* console.log('finished');\n* });\n*\n* // at any point if you want to stop the browsing process, you can stop it manually\n* // otherwise it will go on and on\n* browser.stop();\n*\n* @see {@link https://www.algolia.com/doc/rest_api#Browse|Algolia REST API Documentation}\n*/\n\n\nIndex.prototype.browseAll = function (query, queryParameters) {\n if (typeof query === 'object') {\n queryParameters = query;\n query = undefined;\n }\n\n var merge = require('./merge.js');\n\n var IndexBrowser = require('./IndexBrowser');\n\n var browser = new IndexBrowser();\n var client = this.as;\n var index = this;\n\n var params = client._getSearchParams(merge({}, queryParameters || {}, {\n query: query\n }), ''); // start browsing\n\n\n browseLoop();\n\n function browseLoop(cursor) {\n if (browser._stopped) {\n return;\n }\n\n var body;\n\n if (cursor !== undefined) {\n body = {\n cursor: cursor\n };\n } else {\n body = {\n params: params\n };\n }\n\n client._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(index.indexName) + '/browse',\n hostType: 'read',\n body: body,\n callback: browseCallback\n });\n }\n\n function browseCallback(err, content) {\n if (browser._stopped) {\n return;\n }\n\n if (err) {\n browser._error(err);\n\n return;\n }\n\n browser._result(content); // no cursor means we are finished browsing\n\n\n if (content.cursor === undefined) {\n browser._end();\n\n return;\n }\n\n browseLoop(content.cursor);\n }\n\n return browser;\n};\n/*\n* Get a Typeahead.js adapter\n* @param searchParams contains an object with query parameters (see search for details)\n*/\n\n\nIndex.prototype.ttAdapter = deprecate(function (params) {\n var self = this;\n return function ttAdapter(query, syncCb, asyncCb) {\n var cb;\n\n if (typeof asyncCb === 'function') {\n // typeahead 0.11\n cb = asyncCb;\n } else {\n // pre typeahead 0.11\n cb = syncCb;\n }\n\n self.search(query, params, function searchDone(err, content) {\n if (err) {\n cb(err);\n return;\n }\n\n cb(content.hits);\n });\n };\n}, 'ttAdapter is not necessary anymore and will be removed in the next version,\\n' + 'have a look at autocomplete.js (https://github.com/algolia/autocomplete.js)');\n/*\n* Wait the publication of a task on the server.\n* All server task are asynchronous and you can check with this method that the task is published.\n*\n* @param taskID the id of the task returned by server\n* @param callback the result callback with with two arguments:\n* error: null or Error('message')\n* content: the server answer that contains the list of results\n*/\n\nIndex.prototype.waitTask = function (taskID, callback) {\n // wait minimum 100ms before retrying\n var baseDelay = 100; // wait maximum 5s before retrying\n\n var maxDelay = 5000;\n var loop = 0; // waitTask() must be handled differently from other methods,\n // it's a recursive method using a timeout\n\n var indexObj = this;\n var client = indexObj.as;\n var promise = retryLoop();\n\n function retryLoop() {\n return client._jsonRequest({\n method: 'GET',\n hostType: 'read',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/task/' + taskID\n }).then(function success(content) {\n loop++;\n var delay = baseDelay * loop * loop;\n\n if (delay > maxDelay) {\n delay = maxDelay;\n }\n\n if (content.status !== 'published') {\n return client._promise.delay(delay).then(retryLoop);\n }\n\n return content;\n });\n }\n\n if (!callback) {\n return promise;\n }\n\n promise.then(successCb, failureCb);\n\n function successCb(content) {\n exitPromise(function exit() {\n callback(null, content);\n }, client._setTimeout || setTimeout);\n }\n\n function failureCb(err) {\n exitPromise(function exit() {\n callback(err);\n }, client._setTimeout || setTimeout);\n }\n};\n/*\n* This function deletes the index content. Settings and index specific API keys are kept untouched.\n*\n* @param callback (optional) the result callback called with two arguments\n* error: null or Error('message')\n* content: the settings object or the error message if a failure occurred\n*/\n\n\nIndex.prototype.clearIndex = function (callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/clear',\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Get settings of this index\n*\n* @param opts an object of options to add\n* @param opts.advanced get more settings like nbShards (useful for Enterprise)\n* @param callback (optional) the result callback called with two arguments\n* error: null or Error('message')\n* content: the settings object or the error message if a failure occurred\n*/\n\n\nIndex.prototype.getSettings = function (opts, callback) {\n if (arguments.length === 1 && typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n opts = opts || {};\n var indexName = encodeURIComponent(this.indexName);\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + indexName + '/settings?getVersion=2' + (opts.advanced ? '&advanced=' + opts.advanced : ''),\n hostType: 'read',\n callback: callback\n });\n};\n\nIndex.prototype.searchSynonyms = function (params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = {};\n } else if (params === undefined) {\n params = {};\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/search',\n body: params,\n hostType: 'read',\n callback: callback\n });\n};\n\nfunction exportData(method, _hitsPerPage, callback) {\n function search(page, _previous) {\n var options = {\n page: page || 0,\n hitsPerPage: _hitsPerPage || 100\n };\n var previous = _previous || [];\n return method(options).then(function (result) {\n var hits = result.hits;\n var nbHits = result.nbHits;\n var current = hits.map(function (s) {\n delete s._highlightResult;\n return s;\n });\n var synonyms = previous.concat(current);\n\n if (synonyms.length < nbHits) {\n return search(options.page + 1, synonyms);\n }\n\n return synonyms;\n });\n }\n\n return search().then(function (data) {\n if (typeof callback === 'function') {\n callback(data);\n return undefined;\n }\n\n return data;\n });\n}\n/**\n * Retrieve all the synonyms in an index\n * @param [number=100] hitsPerPage The amount of synonyms to retrieve per batch\n * @param [function] callback will be called after all synonyms are retrieved\n */\n\n\nIndex.prototype.exportSynonyms = function (hitsPerPage, callback) {\n return exportData(this.searchSynonyms.bind(this), hitsPerPage, callback);\n};\n\nIndex.prototype.saveSynonym = function (synonym, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n if (opts.forwardToSlaves !== undefined) deprecateForwardToSlaves();\n var forwardToReplicas = opts.forwardToSlaves || opts.forwardToReplicas ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'PUT',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/' + encodeURIComponent(synonym.objectID) + '?forwardToReplicas=' + forwardToReplicas,\n body: synonym,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.getSynonym = function (objectID, callback) {\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/' + encodeURIComponent(objectID),\n hostType: 'read',\n callback: callback\n });\n};\n\nIndex.prototype.deleteSynonym = function (objectID, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n if (opts.forwardToSlaves !== undefined) deprecateForwardToSlaves();\n var forwardToReplicas = opts.forwardToSlaves || opts.forwardToReplicas ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'DELETE',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/' + encodeURIComponent(objectID) + '?forwardToReplicas=' + forwardToReplicas,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.clearSynonyms = function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n if (opts.forwardToSlaves !== undefined) deprecateForwardToSlaves();\n var forwardToReplicas = opts.forwardToSlaves || opts.forwardToReplicas ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/clear' + '?forwardToReplicas=' + forwardToReplicas,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.batchSynonyms = function (synonyms, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n if (opts.forwardToSlaves !== undefined) deprecateForwardToSlaves();\n var forwardToReplicas = opts.forwardToSlaves || opts.forwardToReplicas ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/batch' + '?forwardToReplicas=' + forwardToReplicas + '&replaceExistingSynonyms=' + (opts.replaceExistingSynonyms ? 'true' : 'false'),\n hostType: 'write',\n body: synonyms,\n callback: callback\n });\n};\n\nIndex.prototype.searchRules = function (params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = {};\n } else if (params === undefined) {\n params = {};\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/search',\n body: params,\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * Retrieve all the query rules in an index\n * @param [number=100] hitsPerPage The amount of query rules to retrieve per batch\n * @param [function] callback will be called after all query rules are retrieved\n * error: null or Error('message')\n */\n\n\nIndex.prototype.exportRules = function (hitsPerPage, callback) {\n return exportData(this.searchRules.bind(this), hitsPerPage, callback);\n};\n\nIndex.prototype.saveRule = function (rule, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n if (!rule.objectID) {\n throw new errors.AlgoliaSearchError('Missing or empty objectID field for rule');\n }\n\n var forwardToReplicas = opts.forwardToReplicas === true ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'PUT',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/' + encodeURIComponent(rule.objectID) + '?forwardToReplicas=' + forwardToReplicas,\n body: rule,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.getRule = function (objectID, callback) {\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/' + encodeURIComponent(objectID),\n hostType: 'read',\n callback: callback\n });\n};\n\nIndex.prototype.deleteRule = function (objectID, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n var forwardToReplicas = opts.forwardToReplicas === true ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'DELETE',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/' + encodeURIComponent(objectID) + '?forwardToReplicas=' + forwardToReplicas,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.clearRules = function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n var forwardToReplicas = opts.forwardToReplicas === true ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/clear' + '?forwardToReplicas=' + forwardToReplicas,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.batchRules = function (rules, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n var forwardToReplicas = opts.forwardToReplicas === true ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/batch' + '?forwardToReplicas=' + forwardToReplicas + '&clearExistingRules=' + (opts.clearExistingRules === true ? 'true' : 'false'),\n hostType: 'write',\n body: rules,\n callback: callback\n });\n};\n\nIndex.prototype.exists = function (callback) {\n var result = this.getSettings().then(function () {\n return true;\n }).catch(function (err) {\n if (err instanceof errors.AlgoliaSearchError && err.statusCode === 404) {\n return false;\n }\n\n throw err;\n });\n\n if (typeof callback !== 'function') {\n return result;\n }\n\n result.then(function (res) {\n callback(null, res);\n }).catch(function (err) {\n callback(err);\n });\n};\n\nIndex.prototype.findObject = function (findCallback, requestOptions, callback) {\n requestOptions = requestOptions === undefined ? {} : requestOptions;\n var paginate = requestOptions.paginate !== undefined ? requestOptions.paginate : true;\n var query = requestOptions.query !== undefined ? requestOptions.query : '';\n var that = this;\n var page = 0;\n\n var paginateLoop = function paginateLoop() {\n requestOptions.page = page;\n return that.search(query, requestOptions).then(function (result) {\n var hits = result.hits;\n\n for (var position = 0; position < hits.length; position++) {\n var hit = hits[position];\n\n if (findCallback(hit)) {\n return {\n object: hit,\n position: position,\n page: page\n };\n }\n }\n\n page += 1; // paginate if option was set and has next page\n\n if (!paginate || page >= result.nbPages) {\n throw new errors.ObjectNotFound('Object not found');\n }\n\n return paginateLoop();\n });\n };\n\n var promise = paginateLoop(page);\n\n if (callback === undefined) {\n return promise;\n }\n\n promise.then(function (res) {\n callback(null, res);\n }).catch(function (err) {\n callback(err);\n });\n};\n\nIndex.prototype.getObjectPosition = function (result, objectID) {\n var hits = result.hits;\n\n for (var position = 0; position < hits.length; position++) {\n if (hits[position].objectID === objectID) {\n return position;\n }\n }\n\n return -1;\n};\n/*\n* Set settings for this index\n*\n* @param settings the settings object that can contains :\n* - minWordSizefor1Typo: (integer) the minimum number of characters to accept one typo (default = 3).\n* - minWordSizefor2Typos: (integer) the minimum number of characters to accept two typos (default = 7).\n* - hitsPerPage: (integer) the number of hits per page (default = 10).\n* - attributesToRetrieve: (array of strings) default list of attributes to retrieve in objects.\n* If set to null, all attributes are retrieved.\n* - attributesToHighlight: (array of strings) default list of attributes to highlight.\n* If set to null, all indexed attributes are highlighted.\n* - attributesToSnippet**: (array of strings) default list of attributes to snippet alongside the number\n* of words to return (syntax is attributeName:nbWords).\n* By default no snippet is computed. If set to null, no snippet is computed.\n* - attributesToIndex: (array of strings) the list of fields you want to index.\n* If set to null, all textual and numerical attributes of your objects are indexed,\n* but you should update it to get optimal results.\n* This parameter has two important uses:\n* - Limit the attributes to index: For example if you store a binary image in base64,\n* you want to store it and be able to\n* retrieve it but you don't want to search in the base64 string.\n* - Control part of the ranking*: (see the ranking parameter for full explanation)\n* Matches in attributes at the beginning of\n* the list will be considered more important than matches in attributes further down the list.\n* In one attribute, matching text at the beginning of the attribute will be\n* considered more important than text after, you can disable\n* this behavior if you add your attribute inside `unordered(AttributeName)`,\n* for example attributesToIndex: [\"title\", \"unordered(text)\"].\n* - attributesForFaceting: (array of strings) The list of fields you want to use for faceting.\n* All strings in the attribute selected for faceting are extracted and added as a facet.\n* If set to null, no attribute is used for faceting.\n* - attributeForDistinct: (string) The attribute name used for the Distinct feature.\n* This feature is similar to the SQL \"distinct\" keyword: when enabled\n* in query with the distinct=1 parameter, all hits containing a duplicate\n* value for this attribute are removed from results.\n* For example, if the chosen attribute is show_name and several hits have\n* the same value for show_name, then only the best one is kept and others are removed.\n* - ranking: (array of strings) controls the way results are sorted.\n* We have six available criteria:\n* - typo: sort according to number of typos,\n* - geo: sort according to decreassing distance when performing a geo-location based search,\n* - proximity: sort according to the proximity of query words in hits,\n* - attribute: sort according to the order of attributes defined by attributesToIndex,\n* - exact:\n* - if the user query contains one word: sort objects having an attribute\n* that is exactly the query word before others.\n* For example if you search for the \"V\" TV show, you want to find it\n* with the \"V\" query and avoid to have all popular TV\n* show starting by the v letter before it.\n* - if the user query contains multiple words: sort according to the\n* number of words that matched exactly (and not as a prefix).\n* - custom: sort according to a user defined formula set in **customRanking** attribute.\n* The standard order is [\"typo\", \"geo\", \"proximity\", \"attribute\", \"exact\", \"custom\"]\n* - customRanking: (array of strings) lets you specify part of the ranking.\n* The syntax of this condition is an array of strings containing attributes\n* prefixed by asc (ascending order) or desc (descending order) operator.\n* For example `\"customRanking\" => [\"desc(population)\", \"asc(name)\"]`\n* - queryType: Select how the query words are interpreted, it can be one of the following value:\n* - prefixAll: all query words are interpreted as prefixes,\n* - prefixLast: only the last word is interpreted as a prefix (default behavior),\n* - prefixNone: no query word is interpreted as a prefix. This option is not recommended.\n* - highlightPreTag: (string) Specify the string that is inserted before\n* the highlighted parts in the query result (default to \"<em>\").\n* - highlightPostTag: (string) Specify the string that is inserted after\n* the highlighted parts in the query result (default to \"</em>\").\n* - optionalWords: (array of strings) Specify a list of words that should\n* be considered as optional when found in the query.\n* @param callback (optional) the result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer or the error message if a failure occurred\n*/\n\n\nIndex.prototype.setSettings = function (settings, opts, callback) {\n if (arguments.length === 1 || typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n if (opts.forwardToSlaves !== undefined) deprecateForwardToSlaves();\n var forwardToReplicas = opts.forwardToSlaves || opts.forwardToReplicas ? 'true' : 'false';\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'PUT',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/settings?forwardToReplicas=' + forwardToReplicas,\n hostType: 'write',\n body: settings,\n callback: callback\n });\n};\n/*\n* @deprecated see client.listApiKeys()\n*/\n\n\nIndex.prototype.listUserKeys = deprecate(function (callback) {\n return this.listApiKeys(callback);\n}, deprecatedMessage('index.listUserKeys()', 'client.listApiKeys()'));\n/*\n* List all existing API keys to this index\n*\n* @param callback the result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with API keys belonging to the index\n*\n* @deprecated see client.listApiKeys()\n*/\n\nIndex.prototype.listApiKeys = deprecate(function (callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/keys',\n hostType: 'read',\n callback: callback\n });\n}, deprecatedMessage('index.listApiKeys()', 'client.listApiKeys()'));\n/*\n* @deprecated see client.getApiKey()\n*/\n\nIndex.prototype.getUserKeyACL = deprecate(function (key, callback) {\n return this.getApiKey(key, callback);\n}, deprecatedMessage('index.getUserKeyACL()', 'client.getApiKey()'));\n/*\n* Get an API key from this index\n*\n* @param key\n* @param callback the result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with the right API key\n*\n* @deprecated see client.getApiKey()\n*/\n\nIndex.prototype.getApiKey = deprecate(function (key, callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/keys/' + key,\n hostType: 'read',\n callback: callback\n });\n}, deprecatedMessage('index.getApiKey()', 'client.getApiKey()'));\n/*\n* @deprecated see client.deleteApiKey()\n*/\n\nIndex.prototype.deleteUserKey = deprecate(function (key, callback) {\n return this.deleteApiKey(key, callback);\n}, deprecatedMessage('index.deleteUserKey()', 'client.deleteApiKey()'));\n/*\n* Delete an existing API key associated to this index\n*\n* @param key\n* @param callback the result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with the deletion date\n*\n* @deprecated see client.deleteApiKey()\n*/\n\nIndex.prototype.deleteApiKey = deprecate(function (key, callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'DELETE',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/keys/' + key,\n hostType: 'write',\n callback: callback\n });\n}, deprecatedMessage('index.deleteApiKey()', 'client.deleteApiKey()'));\n/*\n* @deprecated see client.addApiKey()\n*/\n\nIndex.prototype.addUserKey = deprecate(function (acls, params, callback) {\n return this.addApiKey(acls, params, callback);\n}, deprecatedMessage('index.addUserKey()', 'client.addApiKey()'));\n/*\n* Add a new API key to this index\n*\n* @param {string[]} acls - The list of ACL for this key. Defined by an array of strings that\n* can contains the following values:\n* - search: allow to search (https and http)\n* - addObject: allows to add/update an object in the index (https only)\n* - deleteObject : allows to delete an existing object (https only)\n* - deleteIndex : allows to delete index content (https only)\n* - settings : allows to get index settings (https only)\n* - editSettings : allows to change index settings (https only)\n* @param {Object} [params] - Optionnal parameters to set for the key\n* @param {number} params.validity - Number of seconds after which the key will\n* be automatically removed (0 means no time limit for this key)\n* @param {number} params.maxQueriesPerIPPerHour - Number of API calls allowed from an IP address per hour\n* @param {number} params.maxHitsPerQuery - Number of hits this API key can retrieve in one call\n* @param {string} params.description - A description for your key\n* @param {string[]} params.referers - A list of authorized referers\n* @param {Object} params.queryParameters - Force the key to use specific query parameters\n* @param {Function} callback - The result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with the added API key\n* @return {Promise|undefined} Returns a promise if no callback given\n* @example\n* index.addUserKey(['search'], {\n* validity: 300,\n* maxQueriesPerIPPerHour: 2000,\n* maxHitsPerQuery: 3,\n* description: 'Eat three fruits',\n* referers: ['*.algolia.com'],\n* queryParameters: {\n* tagFilters: ['public'],\n* }\n* })\n* @see {@link https://www.algolia.com/doc/rest_api#AddIndexKey|Algolia REST API Documentation}\n*\n* @deprecated see client.addApiKey()\n*/\n\nIndex.prototype.addApiKey = deprecate(function (acls, params, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: index.addApiKey(arrayOfAcls[, params, callback])';\n\n if (!isArray(acls)) {\n throw new Error(usage);\n }\n\n if (arguments.length === 1 || typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n var postObj = {\n acl: acls\n };\n\n if (params) {\n postObj.validity = params.validity;\n postObj.maxQueriesPerIPPerHour = params.maxQueriesPerIPPerHour;\n postObj.maxHitsPerQuery = params.maxHitsPerQuery;\n postObj.description = params.description;\n\n if (params.queryParameters) {\n postObj.queryParameters = this.as._getSearchParams(params.queryParameters, '');\n }\n\n postObj.referers = params.referers;\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/keys',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n}, deprecatedMessage('index.addApiKey()', 'client.addApiKey()'));\n/**\n* @deprecated use client.addApiKey()\n*/\n\nIndex.prototype.addUserKeyWithValidity = deprecate(function deprecatedAddUserKeyWithValidity(acls, params, callback) {\n return this.addApiKey(acls, params, callback);\n}, deprecatedMessage('index.addUserKeyWithValidity()', 'client.addApiKey()'));\n/*\n* @deprecated see client.updateApiKey()\n*/\n\nIndex.prototype.updateUserKey = deprecate(function (key, acls, params, callback) {\n return this.updateApiKey(key, acls, params, callback);\n}, deprecatedMessage('index.updateUserKey()', 'client.updateApiKey()'));\n/**\n* Update an existing API key of this index\n* @param {string} key - The key to update\n* @param {string[]} acls - The list of ACL for this key. Defined by an array of strings that\n* can contains the following values:\n* - search: allow to search (https and http)\n* - addObject: allows to add/update an object in the index (https only)\n* - deleteObject : allows to delete an existing object (https only)\n* - deleteIndex : allows to delete index content (https only)\n* - settings : allows to get index settings (https only)\n* - editSettings : allows to change index settings (https only)\n* @param {Object} [params] - Optionnal parameters to set for the key\n* @param {number} params.validity - Number of seconds after which the key will\n* be automatically removed (0 means no time limit for this key)\n* @param {number} params.maxQueriesPerIPPerHour - Number of API calls allowed from an IP address per hour\n* @param {number} params.maxHitsPerQuery - Number of hits this API key can retrieve in one call\n* @param {string} params.description - A description for your key\n* @param {string[]} params.referers - A list of authorized referers\n* @param {Object} params.queryParameters - Force the key to use specific query parameters\n* @param {Function} callback - The result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with user keys list\n* @return {Promise|undefined} Returns a promise if no callback given\n* @example\n* index.updateApiKey('APIKEY', ['search'], {\n* validity: 300,\n* maxQueriesPerIPPerHour: 2000,\n* maxHitsPerQuery: 3,\n* description: 'Eat three fruits',\n* referers: ['*.algolia.com'],\n* queryParameters: {\n* tagFilters: ['public'],\n* }\n* })\n* @see {@link https://www.algolia.com/doc/rest_api#UpdateIndexKey|Algolia REST API Documentation}\n*\n* @deprecated see client.updateApiKey()\n*/\n\nIndex.prototype.updateApiKey = deprecate(function (key, acls, params, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: index.updateApiKey(key, arrayOfAcls[, params, callback])';\n\n if (!isArray(acls)) {\n throw new Error(usage);\n }\n\n if (arguments.length === 2 || typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n var putObj = {\n acl: acls\n };\n\n if (params) {\n putObj.validity = params.validity;\n putObj.maxQueriesPerIPPerHour = params.maxQueriesPerIPPerHour;\n putObj.maxHitsPerQuery = params.maxHitsPerQuery;\n putObj.description = params.description;\n\n if (params.queryParameters) {\n putObj.queryParameters = this.as._getSearchParams(params.queryParameters, '');\n }\n\n putObj.referers = params.referers;\n }\n\n return this.as._jsonRequest({\n method: 'PUT',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/keys/' + key,\n body: putObj,\n hostType: 'write',\n callback: callback\n });\n}, deprecatedMessage('index.updateApiKey()', 'client.updateApiKey()'));","'use strict';\n/* eslint-disable max-params */\n\nvar trim = require('trim');\n\nvar repeat = require('repeat-string');\n\nvar decimal = require('is-decimal');\n\nvar getIndent = require('../util/get-indentation');\n\nvar removeIndent = require('../util/remove-indentation');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = list;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_PLUS = '+';\nvar C_DASH = '-';\nvar C_DOT = '.';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_PAREN_CLOSE = ')';\nvar C_X_LOWER = 'x';\nvar TAB_SIZE = 4;\nvar EXPRESSION_LOOSE_LIST_ITEM = /\\n\\n(?!\\s*$)/;\nvar EXPRESSION_TASK_ITEM = /^\\[([ \\t]|x|X)][ \\t]/;\nvar EXPRESSION_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])( {1,4}(?! )| |\\t|$|(?=\\n))([^\\n]*)/;\nvar EXPRESSION_PEDANTIC_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])([ \\t]+)/;\nvar EXPRESSION_INITIAL_INDENT = /^( {1,4}|\\t)?/gm;\n/* Map of characters which can be used to mark\n * list-items. */\n\nvar LIST_UNORDERED_MARKERS = {};\nLIST_UNORDERED_MARKERS[C_ASTERISK] = true;\nLIST_UNORDERED_MARKERS[C_PLUS] = true;\nLIST_UNORDERED_MARKERS[C_DASH] = true;\n/* Map of characters which can be used to mark\n * list-items after a digit. */\n\nvar LIST_ORDERED_MARKERS = {};\nLIST_ORDERED_MARKERS[C_DOT] = true;\n/* Map of characters which can be used to mark\n * list-items after a digit. */\n\nvar LIST_ORDERED_COMMONMARK_MARKERS = {};\nLIST_ORDERED_COMMONMARK_MARKERS[C_DOT] = true;\nLIST_ORDERED_COMMONMARK_MARKERS[C_PAREN_CLOSE] = true;\n\nfunction list(eat, value, silent) {\n var self = this;\n var commonmark = self.options.commonmark;\n var pedantic = self.options.pedantic;\n var tokenizers = self.blockTokenizers;\n var interuptors = self.interruptList;\n var markers;\n var index = 0;\n var length = value.length;\n var start = null;\n var size = 0;\n var queue;\n var ordered;\n var character;\n var marker;\n var nextIndex;\n var startIndex;\n var prefixed;\n var currentMarker;\n var content;\n var line;\n var prevEmpty;\n var empty;\n var items;\n var allLines;\n var emptyLines;\n var item;\n var enterTop;\n var exitBlockquote;\n var isLoose;\n var node;\n var now;\n var end;\n var indented;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_TAB) {\n size += TAB_SIZE - size % TAB_SIZE;\n } else if (character === C_SPACE) {\n size++;\n } else {\n break;\n }\n\n index++;\n }\n\n if (size >= TAB_SIZE) {\n return;\n }\n\n character = value.charAt(index);\n markers = commonmark ? LIST_ORDERED_COMMONMARK_MARKERS : LIST_ORDERED_MARKERS;\n\n if (LIST_UNORDERED_MARKERS[character] === true) {\n marker = character;\n ordered = false;\n } else {\n ordered = true;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!decimal(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (!queue || markers[character] !== true) {\n return;\n }\n\n start = parseInt(queue, 10);\n marker = character;\n }\n\n character = value.charAt(++index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n index = 0;\n items = [];\n allLines = [];\n emptyLines = [];\n\n while (index < length) {\n nextIndex = value.indexOf(C_NEWLINE, index);\n startIndex = index;\n prefixed = false;\n indented = false;\n\n if (nextIndex === -1) {\n nextIndex = length;\n }\n\n end = index + TAB_SIZE;\n size = 0;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_TAB) {\n size += TAB_SIZE - size % TAB_SIZE;\n } else if (character === C_SPACE) {\n size++;\n } else {\n break;\n }\n\n index++;\n }\n\n if (size >= TAB_SIZE) {\n indented = true;\n }\n\n if (item && size >= item.indent) {\n indented = true;\n }\n\n character = value.charAt(index);\n currentMarker = null;\n\n if (!indented) {\n if (LIST_UNORDERED_MARKERS[character] === true) {\n currentMarker = character;\n index++;\n size++;\n } else {\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!decimal(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n index++;\n\n if (queue && markers[character] === true) {\n currentMarker = character;\n size += queue.length + 1;\n }\n }\n\n if (currentMarker) {\n character = value.charAt(index);\n\n if (character === C_TAB) {\n size += TAB_SIZE - size % TAB_SIZE;\n index++;\n } else if (character === C_SPACE) {\n end = index + TAB_SIZE;\n\n while (index < end) {\n if (value.charAt(index) !== C_SPACE) {\n break;\n }\n\n index++;\n size++;\n }\n\n if (index === end && value.charAt(index) === C_SPACE) {\n index -= TAB_SIZE - 1;\n size -= TAB_SIZE - 1;\n }\n } else if (character !== C_NEWLINE && character !== '') {\n currentMarker = null;\n }\n }\n }\n\n if (currentMarker) {\n if (!pedantic && marker !== currentMarker) {\n break;\n }\n\n prefixed = true;\n } else {\n if (!commonmark && !indented && value.charAt(startIndex) === C_SPACE) {\n indented = true;\n } else if (commonmark && item) {\n indented = size >= item.indent || size > TAB_SIZE;\n }\n\n prefixed = false;\n index = startIndex;\n }\n\n line = value.slice(startIndex, nextIndex);\n content = startIndex === index ? line : value.slice(index, nextIndex);\n\n if (currentMarker === C_ASTERISK || currentMarker === C_UNDERSCORE || currentMarker === C_DASH) {\n if (tokenizers.thematicBreak.call(self, eat, line, true)) {\n break;\n }\n }\n\n prevEmpty = empty;\n empty = !trim(content).length;\n\n if (indented && item) {\n item.value = item.value.concat(emptyLines, line);\n allLines = allLines.concat(emptyLines, line);\n emptyLines = [];\n } else if (prefixed) {\n if (emptyLines.length !== 0) {\n item.value.push('');\n item.trail = emptyLines.concat();\n }\n\n item = {\n value: [line],\n indent: size,\n trail: []\n };\n items.push(item);\n allLines = allLines.concat(emptyLines, line);\n emptyLines = [];\n } else if (empty) {\n if (prevEmpty) {\n break;\n }\n\n emptyLines.push(line);\n } else {\n if (prevEmpty) {\n break;\n }\n\n if (interrupt(interuptors, tokenizers, self, [eat, line, true])) {\n break;\n }\n\n item.value = item.value.concat(emptyLines, line);\n allLines = allLines.concat(emptyLines, line);\n emptyLines = [];\n }\n\n index = nextIndex + 1;\n }\n\n node = eat(allLines.join(C_NEWLINE)).reset({\n type: 'list',\n ordered: ordered,\n start: start,\n loose: null,\n children: []\n });\n enterTop = self.enterList();\n exitBlockquote = self.enterBlock();\n isLoose = false;\n index = -1;\n length = items.length;\n\n while (++index < length) {\n item = items[index].value.join(C_NEWLINE);\n now = eat.now();\n item = eat(item)(listItem(self, item, now), node);\n\n if (item.loose) {\n isLoose = true;\n }\n\n item = items[index].trail.join(C_NEWLINE);\n\n if (index !== length - 1) {\n item += C_NEWLINE;\n }\n\n eat(item);\n }\n\n enterTop();\n exitBlockquote();\n node.loose = isLoose;\n return node;\n}\n\nfunction listItem(ctx, value, position) {\n var offsets = ctx.offset;\n var fn = ctx.options.pedantic ? pedanticListItem : normalListItem;\n var checked = null;\n var task;\n var indent;\n value = fn.apply(null, arguments);\n\n if (ctx.options.gfm) {\n task = value.match(EXPRESSION_TASK_ITEM);\n\n if (task) {\n indent = task[0].length;\n checked = task[1].toLowerCase() === C_X_LOWER;\n offsets[position.line] += indent;\n value = value.slice(indent);\n }\n }\n\n return {\n type: 'listItem',\n loose: EXPRESSION_LOOSE_LIST_ITEM.test(value) || value.charAt(value.length - 1) === C_NEWLINE,\n checked: checked,\n children: ctx.tokenizeBlock(value, position)\n };\n}\n/* Create a list-item using overly simple mechanics. */\n\n\nfunction pedanticListItem(ctx, value, position) {\n var offsets = ctx.offset;\n var line = position.line;\n /* Remove the list-item’s bullet. */\n\n value = value.replace(EXPRESSION_PEDANTIC_BULLET, replacer);\n /* The initial line was also matched by the below, so\n * we reset the `line`. */\n\n line = position.line;\n return value.replace(EXPRESSION_INITIAL_INDENT, replacer);\n /* A simple replacer which removed all matches,\n * and adds their length to `offset`. */\n\n function replacer($0) {\n offsets[line] = (offsets[line] || 0) + $0.length;\n line++;\n return '';\n }\n}\n/* Create a list-item using sane mechanics. */\n\n\nfunction normalListItem(ctx, value, position) {\n var offsets = ctx.offset;\n var line = position.line;\n var max;\n var bullet;\n var rest;\n var lines;\n var trimmedLines;\n var index;\n var length;\n /* Remove the list-item’s bullet. */\n\n value = value.replace(EXPRESSION_BULLET, replacer);\n lines = value.split(C_NEWLINE);\n trimmedLines = removeIndent(value, getIndent(max).indent).split(C_NEWLINE);\n /* We replaced the initial bullet with something\n * else above, which was used to trick\n * `removeIndentation` into removing some more\n * characters when possible. However, that could\n * result in the initial line to be stripped more\n * than it should be. */\n\n trimmedLines[0] = rest;\n offsets[line] = (offsets[line] || 0) + bullet.length;\n line++;\n index = 0;\n length = lines.length;\n\n while (++index < length) {\n offsets[line] = (offsets[line] || 0) + lines[index].length - trimmedLines[index].length;\n line++;\n }\n\n return trimmedLines.join(C_NEWLINE);\n\n function replacer($0, $1, $2, $3, $4) {\n bullet = $1 + $2 + $3;\n rest = $4;\n /* Make sure that the first nine numbered list items\n * can indent with an extra space. That is, when\n * the bullet did not receive an extra final space. */\n\n if (Number($2) < 10 && bullet.length % 2 === 1) {\n $2 = C_SPACE + $2;\n }\n\n max = $1 + repeat(C_SPACE, $2.length) + $3;\n return max + rest;\n }\n}","'use strict';\n\nmodule.exports = wordCharacter;\nvar fromCode = String.fromCharCode;\nvar re = /\\w/;\n/* Check if the given character code, or the character\n * code at the first character, is a word character. */\n\nfunction wordCharacter(character) {\n return re.test(typeof character === 'number' ? fromCode(character) : character.charAt(0));\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/link');\n\nmodule.exports = link;\nlink.locator = locate;\nvar own = {}.hasOwnProperty;\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_TICK = '`';\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\n/* Map of characters, which can be used to mark link\n * and image titles. */\n\nvar LINK_MARKERS = {};\nLINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nLINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\n/* Map of characters, which can be used to mark link\n * and image titles in commonmark-mode. */\n\nvar COMMONMARK_LINK_MARKERS = {};\nCOMMONMARK_LINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_PAREN_OPEN] = C_PAREN_CLOSE;\n\nfunction link(eat, value, silent) {\n var self = this;\n var subvalue = '';\n var index = 0;\n var character = value.charAt(0);\n var pedantic = self.options.pedantic;\n var commonmark = self.options.commonmark;\n var gfm = self.options.gfm;\n var closed;\n var count;\n var opening;\n var beforeURL;\n var beforeTitle;\n var subqueue;\n var hasMarker;\n var markers;\n var isImage;\n var content;\n var marker;\n var length;\n var title;\n var depth;\n var queue;\n var url;\n var now;\n var exit;\n var node;\n /* Detect whether this is an image. */\n\n if (character === '!') {\n isImage = true;\n subvalue = character;\n character = value.charAt(++index);\n }\n /* Eat the opening. */\n\n\n if (character !== C_BRACKET_OPEN) {\n return;\n }\n /* Exit when this is a link and we’re already inside\n * a link. */\n\n\n if (!isImage && self.inLink) {\n return;\n }\n\n subvalue += character;\n queue = '';\n index++;\n /* Eat the content. */\n\n length = value.length;\n now = eat.now();\n depth = 0;\n now.column += index;\n now.offset += index;\n\n while (index < length) {\n character = value.charAt(index);\n subqueue = character;\n\n if (character === C_TICK) {\n /* Inline-code in link content. */\n count = 1;\n\n while (value.charAt(index + 1) === C_TICK) {\n subqueue += character;\n index++;\n count++;\n }\n\n if (!opening) {\n opening = count;\n } else if (count >= opening) {\n opening = 0;\n }\n } else if (character === C_BACKSLASH) {\n /* Allow brackets to be escaped. */\n index++;\n subqueue += value.charAt(index);\n /* In GFM mode, brackets in code still count.\n * In all other modes, they don’t. This empty\n * block prevents the next statements are\n * entered. */\n } else if ((!opening || gfm) && character === C_BRACKET_OPEN) {\n depth++;\n } else if ((!opening || gfm) && character === C_BRACKET_CLOSE) {\n if (depth) {\n depth--;\n } else {\n /* Allow white-space between content and\n * url in GFM mode. */\n if (!pedantic) {\n while (index < length) {\n character = value.charAt(index + 1);\n\n if (!whitespace(character)) {\n break;\n }\n\n subqueue += character;\n index++;\n }\n }\n\n if (value.charAt(index + 1) !== C_PAREN_OPEN) {\n return;\n }\n\n subqueue += C_PAREN_OPEN;\n closed = true;\n index++;\n break;\n }\n }\n\n queue += subqueue;\n subqueue = '';\n index++;\n }\n /* Eat the content closing. */\n\n\n if (!closed) {\n return;\n }\n\n content = queue;\n subvalue += queue + subqueue;\n index++;\n /* Eat white-space. */\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n /* Eat the URL. */\n\n\n character = value.charAt(index);\n markers = commonmark ? COMMONMARK_LINK_MARKERS : LINK_MARKERS;\n queue = '';\n beforeURL = subvalue;\n\n if (character === C_LT) {\n index++;\n beforeURL += C_LT;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_GT) {\n break;\n }\n\n if (commonmark && character === '\\n') {\n return;\n }\n\n queue += character;\n index++;\n }\n\n if (value.charAt(index) !== C_GT) {\n return;\n }\n\n subvalue += C_LT + queue + C_GT;\n url = queue;\n index++;\n } else {\n character = null;\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (subqueue && own.call(markers, character)) {\n break;\n }\n\n if (whitespace(character)) {\n if (!pedantic) {\n break;\n }\n\n subqueue += character;\n } else {\n if (character === C_PAREN_OPEN) {\n depth++;\n } else if (character === C_PAREN_CLOSE) {\n if (depth === 0) {\n break;\n }\n\n depth--;\n }\n\n queue += subqueue;\n subqueue = '';\n\n if (character === C_BACKSLASH) {\n queue += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n queue += character;\n }\n\n index++;\n }\n\n subvalue += queue;\n url = queue;\n index = subvalue.length;\n }\n /* Eat white-space. */\n\n\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n subvalue += queue;\n /* Eat the title. */\n\n if (queue && own.call(markers, character)) {\n index++;\n subvalue += character;\n queue = '';\n marker = markers[character];\n beforeTitle = subvalue;\n /* In commonmark-mode, things are pretty easy: the\n * marker cannot occur inside the title.\n *\n * Non-commonmark does, however, support nested\n * delimiters. */\n\n if (commonmark) {\n while (index < length) {\n character = value.charAt(index);\n\n if (character === marker) {\n break;\n }\n\n if (character === C_BACKSLASH) {\n queue += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n index++;\n queue += character;\n }\n\n character = value.charAt(index);\n\n if (character !== marker) {\n return;\n }\n\n title = queue;\n subvalue += queue + character;\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n } else {\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === marker) {\n if (hasMarker) {\n queue += marker + subqueue;\n subqueue = '';\n }\n\n hasMarker = true;\n } else if (!hasMarker) {\n queue += character;\n } else if (character === C_PAREN_CLOSE) {\n subvalue += queue + marker + subqueue;\n title = queue;\n break;\n } else if (whitespace(character)) {\n subqueue += character;\n } else {\n queue += marker + subqueue + character;\n subqueue = '';\n hasMarker = false;\n }\n\n index++;\n }\n }\n }\n\n if (value.charAt(index) !== C_PAREN_CLOSE) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n subvalue += C_PAREN_CLOSE;\n url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end, {\n nonTerminated: false\n });\n\n if (title) {\n beforeTitle = eat(beforeTitle).test().end;\n title = self.decode.raw(self.unescape(title), beforeTitle);\n }\n\n node = {\n type: isImage ? 'image' : 'link',\n title: title || null,\n url: url\n };\n\n if (isImage) {\n node.alt = self.decode.raw(self.unescape(content), now) || null;\n } else {\n exit = self.enterLink();\n node.children = self.tokenizeInline(content, now);\n exit();\n }\n\n return eat(subvalue)(node);\n}","'use strict';\n\nmodule.exports = hexadecimal;\n/* Check if the given character code, or the character\n * code at the first character, is hexadecimal. */\n\nfunction hexadecimal(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n return code >= 97\n /* a */\n && code <= 102 ||\n /* z */\n code >= 65\n /* A */\n && code <= 70\n /* Z */\n || code >= 48\n /* A */\n && code <= 57\n /* Z */\n ;\n}","'use strict';\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = fencedCode;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_TILDE = '~';\nvar C_TICK = '`';\nvar MIN_FENCE_COUNT = 3;\nvar CODE_INDENT_COUNT = 4;\n\nfunction fencedCode(eat, value, silent) {\n var self = this;\n var settings = self.options;\n var length = value.length + 1;\n var index = 0;\n var subvalue = '';\n var fenceCount;\n var marker;\n var character;\n var flag;\n var queue;\n var content;\n var exdentedContent;\n var closing;\n var exdentedClosing;\n var indent;\n var now;\n\n if (!settings.gfm) {\n return;\n }\n /* Eat initial spacing. */\n\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n indent = index;\n /* Eat the fence. */\n\n character = value.charAt(index);\n\n if (character !== C_TILDE && character !== C_TICK) {\n return;\n }\n\n index++;\n marker = character;\n fenceCount = 1;\n subvalue += character;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== marker) {\n break;\n }\n\n subvalue += character;\n fenceCount++;\n index++;\n }\n\n if (fenceCount < MIN_FENCE_COUNT) {\n return;\n }\n /* Eat spacing before flag. */\n\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n /* Eat flag. */\n\n\n flag = '';\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_NEWLINE || character === C_TILDE || character === C_TICK) {\n break;\n }\n\n if (character === C_SPACE || character === C_TAB) {\n queue += character;\n } else {\n flag += queue + character;\n queue = '';\n }\n\n index++;\n }\n\n character = value.charAt(index);\n\n if (character && character !== C_NEWLINE) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n now.column += subvalue.length;\n now.offset += subvalue.length;\n subvalue += flag;\n flag = self.decode.raw(self.unescape(flag), now);\n\n if (queue) {\n subvalue += queue;\n }\n\n queue = '';\n closing = '';\n exdentedClosing = '';\n content = '';\n exdentedContent = '';\n /* Eat content. */\n\n while (index < length) {\n character = value.charAt(index);\n content += closing;\n exdentedContent += exdentedClosing;\n closing = '';\n exdentedClosing = '';\n\n if (character !== C_NEWLINE) {\n content += character;\n exdentedClosing += character;\n index++;\n continue;\n }\n /* Add the newline to `subvalue` if its the first\n * character. Otherwise, add it to the `closing`\n * queue. */\n\n\n if (content) {\n closing += character;\n exdentedClosing += character;\n } else {\n subvalue += character;\n }\n\n queue = '';\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n closing += queue;\n exdentedClosing += queue.slice(indent);\n\n if (queue.length >= CODE_INDENT_COUNT) {\n continue;\n }\n\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== marker) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n closing += queue;\n exdentedClosing += queue;\n\n if (queue.length < fenceCount) {\n continue;\n }\n\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n closing += character;\n exdentedClosing += character;\n index++;\n }\n\n if (!character || character === C_NEWLINE) {\n break;\n }\n }\n\n subvalue += content + closing;\n return eat(subvalue)({\n type: 'code',\n lang: flag || null,\n value: trim(exdentedContent)\n });\n}","'use strict';\n\nmodule.exports = escapes;\nvar defaults = ['\\\\', '`', '*', '{', '}', '[', ']', '(', ')', '#', '+', '-', '.', '!', '_', '>'];\nvar gfm = defaults.concat(['~', '|']);\nvar commonmark = gfm.concat(['\\n', '\"', '$', '%', '&', \"'\", ',', '/', ':', ';', '<', '=', '?', '@', '^']);\nescapes.default = defaults;\nescapes.gfm = gfm;\nescapes.commonmark = commonmark;\n/* Get markdown escapes. */\n\nfunction escapes(options) {\n var settings = options || {};\n\n if (settings.commonmark) {\n return commonmark;\n }\n\n return settings.gfm ? gfm : defaults;\n}","'use strict';\n\nvar unherit = require('unherit');\n\nvar xtend = require('xtend');\n\nvar Parser = require('./lib/parser.js');\n\nmodule.exports = parse;\nparse.Parser = Parser;\n\nfunction parse(options) {\n var Local = unherit(Parser);\n Local.prototype.options = xtend(Local.prototype.options, this.data('settings'), options);\n this.Parser = Local;\n}","'use strict';\n\nvar trim = require('trim');\n\nvar repeat = require('repeat-string');\n\nvar getIndent = require('./get-indentation');\n\nmodule.exports = indentation;\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\n/* Remove the minimum indent from every line in `value`.\n * Supports both tab, spaced, and mixed indentation (as\n * well as possible). */\n\nfunction indentation(value, maximum) {\n var values = value.split(C_NEWLINE);\n var position = values.length + 1;\n var minIndent = Infinity;\n var matrix = [];\n var index;\n var indentation;\n var stops;\n var padding;\n values.unshift(repeat(C_SPACE, maximum) + '!');\n\n while (position--) {\n indentation = getIndent(values[position]);\n matrix[position] = indentation.stops;\n\n if (trim(values[position]).length === 0) {\n continue;\n }\n\n if (indentation.indent) {\n if (indentation.indent > 0 && indentation.indent < minIndent) {\n minIndent = indentation.indent;\n }\n } else {\n minIndent = Infinity;\n break;\n }\n }\n\n if (minIndent !== Infinity) {\n position = values.length;\n\n while (position--) {\n stops = matrix[position];\n index = minIndent;\n\n while (index && !(index in stops)) {\n index--;\n }\n\n if (trim(values[position]).length !== 0 && minIndent && index !== minIndent) {\n padding = C_TAB;\n } else {\n padding = '';\n }\n\n values[position] = padding + values[position].slice(index in stops ? stops[index] + 1 : 0);\n }\n }\n\n values.shift();\n return values.join(C_NEWLINE);\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar inherits = require('inherits');\n\nmodule.exports = unherit;\n/* Create a custom constructor which can be modified\n * without affecting the original class. */\n\nfunction unherit(Super) {\n var result;\n var key;\n var value;\n inherits(Of, Super);\n inherits(From, Of);\n /* Clone values. */\n\n result = Of.prototype;\n\n for (key in result) {\n value = result[key];\n\n if (value && typeof value === 'object') {\n result[key] = 'concat' in value ? value.concat() : xtend(value);\n }\n }\n\n return Of;\n /* Constructor accepting a single argument,\n * which itself is an `arguments` object. */\n\n function From(parameters) {\n return Super.apply(this, parameters);\n }\n /* Constructor accepting variadic arguments. */\n\n\n function Of() {\n if (!(this instanceof Of)) {\n return new From(arguments);\n }\n\n return Super.apply(this, arguments);\n }\n}","'use strict';\n/* Dependencies. */\n\nvar extend = require('extend');\n\nvar bail = require('bail');\n\nvar vfile = require('vfile');\n\nvar trough = require('trough');\n\nvar string = require('x-is-string');\n\nvar plain = require('is-plain-obj');\n/* Expose a frozen processor. */\n\n\nmodule.exports = unified().freeze();\nvar slice = [].slice;\nvar own = {}.hasOwnProperty;\n/* Process pipeline. */\n\nvar pipeline = trough().use(pipelineParse).use(pipelineRun).use(pipelineStringify);\n\nfunction pipelineParse(p, ctx) {\n ctx.tree = p.parse(ctx.file);\n}\n\nfunction pipelineRun(p, ctx, next) {\n p.run(ctx.tree, ctx.file, done);\n\n function done(err, tree, file) {\n if (err) {\n next(err);\n } else {\n ctx.tree = tree;\n ctx.file = file;\n next();\n }\n }\n}\n\nfunction pipelineStringify(p, ctx) {\n ctx.file.contents = p.stringify(ctx.tree, ctx.file);\n}\n/* Function to create the first processor. */\n\n\nfunction unified() {\n var attachers = [];\n var transformers = trough();\n var namespace = {};\n var frozen = false;\n var freezeIndex = -1;\n /* Data management. */\n\n processor.data = data;\n /* Lock. */\n\n processor.freeze = freeze;\n /* Plug-ins. */\n\n processor.attachers = attachers;\n processor.use = use;\n /* API. */\n\n processor.parse = parse;\n processor.stringify = stringify;\n processor.run = run;\n processor.runSync = runSync;\n processor.process = process;\n processor.processSync = processSync;\n /* Expose. */\n\n return processor;\n /* Create a new processor based on the processor\n * in the current scope. */\n\n function processor() {\n var destination = unified();\n var length = attachers.length;\n var index = -1;\n\n while (++index < length) {\n destination.use.apply(null, attachers[index]);\n }\n\n destination.data(extend(true, {}, namespace));\n return destination;\n }\n /* Freeze: used to signal a processor that has finished\n * configuration.\n *\n * For example, take unified itself. It’s frozen.\n * Plug-ins should not be added to it. Rather, it should\n * be extended, by invoking it, before modifying it.\n *\n * In essence, always invoke this when exporting a\n * processor. */\n\n\n function freeze() {\n var values;\n var plugin;\n var options;\n var transformer;\n\n if (frozen) {\n return processor;\n }\n\n while (++freezeIndex < attachers.length) {\n values = attachers[freezeIndex];\n plugin = values[0];\n options = values[1];\n transformer = null;\n\n if (options === false) {\n continue;\n }\n\n if (options === true) {\n values[1] = undefined;\n }\n\n transformer = plugin.apply(processor, values.slice(1));\n\n if (typeof transformer === 'function') {\n transformers.use(transformer);\n }\n }\n\n frozen = true;\n freezeIndex = Infinity;\n return processor;\n }\n /* Data management.\n * Getter / setter for processor-specific informtion. */\n\n\n function data(key, value) {\n if (string(key)) {\n /* Set `key`. */\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen);\n namespace[key] = value;\n return processor;\n }\n /* Get `key`. */\n\n\n return own.call(namespace, key) && namespace[key] || null;\n }\n /* Set space. */\n\n\n if (key) {\n assertUnfrozen('data', frozen);\n namespace = key;\n return processor;\n }\n /* Get space. */\n\n\n return namespace;\n }\n /* Plug-in management.\n *\n * Pass it:\n * * an attacher and options,\n * * a preset,\n * * a list of presets, attachers, and arguments (list\n * of attachers and options). */\n\n\n function use(value) {\n var settings;\n assertUnfrozen('use', frozen);\n\n if (value === null || value === undefined) {\n /* Empty */\n } else if (typeof value === 'function') {\n addPlugin.apply(null, arguments);\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addList(value);\n } else {\n addPreset(value);\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`');\n }\n\n if (settings) {\n namespace.settings = extend(namespace.settings || {}, settings);\n }\n\n return processor;\n\n function addPreset(result) {\n addList(result.plugins);\n\n if (result.settings) {\n settings = extend(settings || {}, result.settings);\n }\n }\n\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value);\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addPlugin.apply(null, value);\n } else {\n addPreset(value);\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`');\n }\n }\n\n function addList(plugins) {\n var length;\n var index;\n\n if (plugins === null || plugins === undefined) {\n /* Empty */\n } else if (typeof plugins === 'object' && 'length' in plugins) {\n length = plugins.length;\n index = -1;\n\n while (++index < length) {\n add(plugins[index]);\n }\n } else {\n throw new Error('Expected a list of plugins, not `' + plugins + '`');\n }\n }\n\n function addPlugin(plugin, value) {\n var entry = find(plugin);\n\n if (entry) {\n if (plain(entry[1]) && plain(value)) {\n value = extend(entry[1], value);\n }\n\n entry[1] = value;\n } else {\n attachers.push(slice.call(arguments));\n }\n }\n }\n\n function find(plugin) {\n var length = attachers.length;\n var index = -1;\n var entry;\n\n while (++index < length) {\n entry = attachers[index];\n\n if (entry[0] === plugin) {\n return entry;\n }\n }\n }\n /* Parse a file (in string or VFile representation)\n * into a Unist node using the `Parser` on the\n * processor. */\n\n\n function parse(doc) {\n var file = vfile(doc);\n var Parser;\n freeze();\n Parser = processor.Parser;\n assertParser('parse', Parser);\n\n if (newable(Parser)) {\n return new Parser(String(file), file).parse();\n }\n\n return Parser(String(file), file); // eslint-disable-line new-cap\n }\n /* Run transforms on a Unist node representation of a file\n * (in string or VFile representation), async. */\n\n\n function run(node, file, cb) {\n assertNode(node);\n freeze();\n\n if (!cb && typeof file === 'function') {\n cb = file;\n file = null;\n }\n\n if (!cb) {\n return new Promise(executor);\n }\n\n executor(null, cb);\n\n function executor(resolve, reject) {\n transformers.run(node, vfile(file), done);\n\n function done(err, tree, file) {\n tree = tree || node;\n\n if (err) {\n reject(err);\n } else if (resolve) {\n resolve(tree);\n } else {\n cb(null, tree, file);\n }\n }\n }\n }\n /* Run transforms on a Unist node representation of a file\n * (in string or VFile representation), sync. */\n\n\n function runSync(node, file) {\n var complete = false;\n var result;\n run(node, file, done);\n assertDone('runSync', 'run', complete);\n return result;\n\n function done(err, tree) {\n complete = true;\n bail(err);\n result = tree;\n }\n }\n /* Stringify a Unist node representation of a file\n * (in string or VFile representation) into a string\n * using the `Compiler` on the processor. */\n\n\n function stringify(node, doc) {\n var file = vfile(doc);\n var Compiler;\n freeze();\n Compiler = processor.Compiler;\n assertCompiler('stringify', Compiler);\n assertNode(node);\n\n if (newable(Compiler)) {\n return new Compiler(node, file).compile();\n }\n\n return Compiler(node, file); // eslint-disable-line new-cap\n }\n /* Parse a file (in string or VFile representation)\n * into a Unist node using the `Parser` on the processor,\n * then run transforms on that node, and compile the\n * resulting node using the `Compiler` on the processor,\n * and store that result on the VFile. */\n\n\n function process(doc, cb) {\n freeze();\n assertParser('process', processor.Parser);\n assertCompiler('process', processor.Compiler);\n\n if (!cb) {\n return new Promise(executor);\n }\n\n executor(null, cb);\n\n function executor(resolve, reject) {\n var file = vfile(doc);\n pipeline.run(processor, {\n file: file\n }, done);\n\n function done(err) {\n if (err) {\n reject(err);\n } else if (resolve) {\n resolve(file);\n } else {\n cb(null, file);\n }\n }\n }\n }\n /* Process the given document (in string or VFile\n * representation), sync. */\n\n\n function processSync(doc) {\n var complete = false;\n var file;\n freeze();\n assertParser('processSync', processor.Parser);\n assertCompiler('processSync', processor.Compiler);\n file = vfile(doc);\n process(file, done);\n assertDone('processSync', 'process', complete);\n return file;\n\n function done(err) {\n complete = true;\n bail(err);\n }\n }\n}\n/* Check if `func` is a constructor. */\n\n\nfunction newable(value) {\n return typeof value === 'function' && keys(value.prototype);\n}\n/* Check if `value` is an object with keys. */\n\n\nfunction keys(value) {\n var key;\n\n for (key in value) {\n return true;\n }\n\n return false;\n}\n/* Assert a parser is available. */\n\n\nfunction assertParser(name, Parser) {\n if (typeof Parser !== 'function') {\n throw new Error('Cannot `' + name + '` without `Parser`');\n }\n}\n/* Assert a compiler is available. */\n\n\nfunction assertCompiler(name, Compiler) {\n if (typeof Compiler !== 'function') {\n throw new Error('Cannot `' + name + '` without `Compiler`');\n }\n}\n/* Assert the processor is not frozen. */\n\n\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(['Cannot invoke `' + name + '` on a frozen processor.\\nCreate a new ', 'processor first, by invoking it: use `processor()` instead of ', '`processor`.'].join(''));\n }\n}\n/* Assert `node` is a Unist node. */\n\n\nfunction assertNode(node) {\n if (!node || !string(node.type)) {\n throw new Error('Expected node, got `' + node + '`');\n }\n}\n/* Assert that `complete` is `true`. */\n\n\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error('`' + name + '` finished async. Use `' + asyncName + '` instead');\n }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var link = value.indexOf('[', fromIndex);\n var image = value.indexOf('![', fromIndex);\n\n if (image === -1) {\n return link;\n }\n /* Link can never be `-1` if an image is found, so we don’t need\n * to check for that :) */\n\n\n return link < image ? link : image;\n}","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n'use strict';\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n } // cover common, quick use cases\n\n\n if (num === 1) return str;\n if (num === 2) return str + str;\n var max = str.length * num;\n\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar escapes = require('markdown-escapes');\n\nvar defaults = require('./defaults');\n\nmodule.exports = setOptions;\n\nfunction setOptions(options) {\n var self = this;\n var current = self.options;\n var key;\n var value;\n\n if (options == null) {\n options = {};\n } else if (typeof options === 'object') {\n options = xtend(options);\n } else {\n throw new Error('Invalid value `' + options + '` ' + 'for setting `options`');\n }\n\n for (key in defaults) {\n value = options[key];\n\n if (value == null) {\n value = current[key];\n }\n\n if (key !== 'blocks' && typeof value !== 'boolean' || key === 'blocks' && typeof value !== 'object') {\n throw new Error('Invalid value `' + value + '` for setting `options.' + key + '`');\n }\n\n options[key] = value;\n }\n\n self.options = options;\n self.escape = escapes(options);\n return self;\n}","'use strict';\n\nvar wrap = require('./wrap.js');\n\nmodule.exports = trough;\ntrough.wrap = wrap;\nvar slice = [].slice;\n/* Create new middleware. */\n\nfunction trough() {\n var fns = [];\n var middleware = {};\n middleware.run = run;\n middleware.use = use;\n return middleware;\n /* Run `fns`. Last argument must be\n * a completion handler. */\n\n function run() {\n var index = -1;\n var input = slice.call(arguments, 0, -1);\n var done = arguments[arguments.length - 1];\n\n if (typeof done !== 'function') {\n throw new Error('Expected function as last argument, not ' + done);\n }\n\n next.apply(null, [null].concat(input));\n /* Run the next `fn`, if any. */\n\n function next(err) {\n var fn = fns[++index];\n var params = slice.call(arguments, 0);\n var values = params.slice(1);\n var length = input.length;\n var pos = -1;\n\n if (err) {\n done(err);\n return;\n }\n /* Copy non-nully input into values. */\n\n\n while (++pos < length) {\n if (values[pos] === null || values[pos] === undefined) {\n values[pos] = input[pos];\n }\n }\n\n input = values;\n /* Next or done. */\n\n if (fn) {\n wrap(fn, next).apply(null, input);\n } else {\n done.apply(null, [null].concat(input));\n }\n }\n }\n /* Add `fn` to the list. */\n\n\n function use(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Expected `fn` to be a function, not ' + fn);\n }\n\n fns.push(fn);\n return middleware;\n }\n}","module.exports = extend;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {};\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar entities = require('parse-entities');\n\nmodule.exports = factory;\n/* Factory to create an entity decoder. */\n\nfunction factory(ctx) {\n decoder.raw = decodeRaw;\n return decoder;\n /* Normalize `position` to add an `indent`. */\n\n function normalize(position) {\n var offsets = ctx.offset;\n var line = position.line;\n var result = [];\n\n while (++line) {\n if (!(line in offsets)) {\n break;\n }\n\n result.push((offsets[line] || 0) + 1);\n }\n\n return {\n start: position,\n indent: result\n };\n }\n /* Handle a warning.\n * See https://github.com/wooorm/parse-entities\n * for the warnings. */\n\n\n function handleWarning(reason, position, code) {\n if (code === 3) {\n return;\n }\n\n ctx.file.message(reason, position);\n }\n /* Decode `value` (at `position`) into text-nodes. */\n\n\n function decoder(value, position, handler) {\n entities(value, {\n position: normalize(position),\n warning: handleWarning,\n text: handler,\n reference: handler,\n textContext: ctx,\n referenceContext: ctx\n });\n }\n /* Decode `value` (at `position`) into a string. */\n\n\n function decodeRaw(value, position, options) {\n return entities(value, xtend(options, {\n position: normalize(position),\n warning: handleWarning\n }));\n }\n}","/* @jsx jsx */\nimport { jsx, Flex } from \"strict-ui\"\nimport { PageProps } from \"gatsby\"\nimport { useQuery } from \"urql\"\nimport { Spinner } from \"theme-ui\"\nimport { Global } from \"@emotion/react\"\nimport { useMutation } from \"urql\"\nimport { useState, Fragment, useEffect } from \"react\"\nimport {\n AnchorButton,\n Button,\n TextAreaField,\n TextAreaFieldControl,\n Text,\n Heading,\n Spacer,\n} from \"gatsby-interface\"\nimport { navigate } from \"gatsby-link\"\nimport { FaUsers as CommunityIcon } from \"react-icons/fa\"\nimport { MdArrowDownward as ArrowDownwardIcon } from \"react-icons/md\"\nimport ReactMarkdown from \"react-markdown\"\nimport Highlight, { defaultProps } from \"prism-react-renderer\"\nimport useNpmPackageData from \"../utils/use-npm-data\"\nimport prismThemeCss from \"../prism-theme\"\nimport gitHubIcon from \"../github.svg\"\nimport isOfficialPackage from \"../utils/is-official-package\"\nimport GatsbyIcon from \"../components/gatsby-monogram\"\nimport { useTelemetry } from \"../utils/use-telemetry\"\n\nconst markdownRenderers = {\n paragraph: (props: any): JSX.Element => (\n <Text as=\"p\" {...props} sx={{ color: `text.primary` }} />\n ),\n heading: (props: any): JSX.Element => (\n <Heading as={`h${props.level}`} {...props} />\n ),\n inlineCode: (props: any): JSX.Element => (\n <Text\n // @ts-ignore\n as=\"code\"\n sx={{\n fontFamily: `monospace`,\n }}\n {...props}\n />\n ),\n code: (props: any): JSX.Element => (\n <Highlight\n {...defaultProps}\n // The theme is provided via CSS, not prism-react-renderer's custom theming system\n theme={undefined}\n code={props.value}\n language={props.language}\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps,\n }): JSX.Element => (\n <Text\n // @ts-ignore\n as=\"pre\"\n sx={{\n fontFamily: `monospace`,\n fontSize: 0,\n }}\n className={className}\n style={style}\n >\n {tokens.map((line, i) => (\n <div {...getLineProps({ line, key: i })}>\n {line.map((token, key) => (\n <span {...getTokenProps({ token, key })} />\n ))}\n </div>\n ))}\n </Text>\n )}\n </Highlight>\n ),\n}\n\nexport default function PluginView(\n props: PageProps & {\n // This is the subpath, gatsby-plugin-create-client-paths is configured to match /plugins/*\n \"*\": string\n }\n): JSX.Element {\n const pluginName = props[`*`]\n\n const [{ data, fetching, error }] = useQuery({\n query: `\n query GetGatsbyPlugin($id: String!) {\n gatsbyPlugin(id: $id) {\n name\n description\n options\n }\n }\n `,\n variables: {\n id: pluginName,\n },\n })\n\n const { fetching: fetchingNpmData, data: npmData } = useNpmPackageData(\n pluginName\n )\n\n const [{ fetching: updatingGatsbyPlugin }, updateGatsbyPlugin] = useMutation(`\n mutation updateGatsbyPlugin(\n $name: String!\n $options: JSONObject) {\n updateGatsbyPlugin(gatsbyPlugin: {\n name: $name,\n id: $name,\n options: $options\n }) {\n id\n name\n options\n }\n }\n `)\n\n const [{ fetching: deletingGatsbyPlugin }, deleteGatsbyPlugin] = useMutation(`\n mutation destroyGatsbyPlugin($name: String!) {\n destroyNpmPackage(npmPackage: {\n name: $name,\n id: $name,\n dependencyType: \"production\"\n }) {\n id\n name\n }\n destroyGatsbyPlugin(gatsbyPlugin: {\n name: $name,\n id: $name\n }) {\n id\n name\n }\n }\n `)\n\n const [\n { fetching: installingGatsbyPlugin },\n installGatsbyPlugin,\n ] = useMutation(`\n mutation installGatsbyPlugin($name: String!) {\n createNpmPackage(npmPackage: {\n name: $name,\n dependencyType: \"production\"\n }) {\n id\n name\n }\n\n createGatsbyPlugin(gatsbyPlugin: {\n name: $name\n }) {\n id\n name\n description\n options\n readme\n }\n }\n `)\n\n const [options, setOptions] = useState<string | null>(null)\n const [validationError, setValidationError] = useState<Error | null>(null)\n const isInstalled = !fetching && !!data?.gatsbyPlugin?.name\n const isOfficial = !fetchingNpmData && npmData && isOfficialPackage(npmData)\n\n useEffect(() => {\n if (fetching) return\n\n setOptions(\n JSON.stringify(data?.gatsbyPlugin?.options || {}, null, 2).replace(\n `{}`,\n `{\\n \\n}`\n )\n )\n }, [fetching])\n\n const telemetry = useTelemetry()\n\n if (error) {\n const errMsg =\n (error.networkError && error.networkError.message) ||\n (Array.isArray(error.graphQLErrors) &&\n error.graphQLErrors.map(e => e.message).join(` | `))\n\n return <p>Error: {errMsg}</p>\n }\n\n return (\n <Fragment>\n <Spacer size={15} />\n <Global styles={prismThemeCss} />\n <Flex gap={9} flexDirection=\"column\" alignItems=\"flex-start\">\n <Flex flexDirection=\"column\" gap={2} sx={{ width: `100%` }}>\n <Flex gap={5}>\n <Text\n sx={{ color: `grey.60`, fontSize: 1, whiteSpace: `pre-wrap` }}\n >\n {fetchingNpmData ? (\n ``\n ) : isOfficial ? (\n <span>\n <GatsbyIcon /> Official\n </span>\n ) : (\n <span>\n <CommunityIcon /> Community\n </span>\n )}\n {` `}\n Gatsby plugin\n </Text>\n {}\n <Text\n sx={{ color: `grey.60`, fontSize: 1, whiteSpace: `pre-wrap` }}\n >\n <ArrowDownwardIcon /> {npmData?.humanDownloadsLast30Days || `...`}\n {` `}\n downloads\n </Text>\n </Flex>\n <Flex\n sx={{ width: `100%` }}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n <Heading as=\"h1\">{pluginName}</Heading>\n <Flex gap={3}>\n <AnchorButton\n variant=\"SECONDARY\"\n size=\"M\"\n target=\"_blank\"\n // Fall back to https://github.com/nice-registry/ghub.io, which redirects to the\n // package.json repository url automatically\n href={\n npmData?.repository?.url || `https://ghub.io/${pluginName}`\n }\n sx={{\n // Render the space between the text and the <img> icon\n whiteSpace: `pre`,\n }}\n >\n View on GitHub <img src={gitHubIcon} alt=\"\" />\n </AnchorButton>\n {fetching ? (\n <Spinner />\n ) : isInstalled ? (\n <Button\n variant=\"GHOST\"\n tone=\"DANGER\"\n size=\"M\"\n loading={deletingGatsbyPlugin}\n onClick={(evt): void => {\n evt.preventDefault()\n if (\n window.confirm(\n `Are you sure you want to uninstall ${pluginName}?`\n )\n ) {\n telemetry.trackEvent(`PLUGIN_UNINSTALL`, {\n pluginName,\n })\n deleteGatsbyPlugin({ name: pluginName }).then(() =>\n navigate(`/`)\n )\n }\n }}\n >\n Uninstall\n </Button>\n ) : (\n <Button\n size=\"M\"\n loading={installingGatsbyPlugin}\n onClick={(evt): void => {\n evt.preventDefault()\n installGatsbyPlugin({ name: pluginName })\n telemetry.trackEvent(`PLUGIN_INSTALL`, {\n pluginName,\n })\n }}\n >\n Install\n </Button>\n )}\n </Flex>\n </Flex>\n </Flex>\n <Flex gap={12} sx={{ width: `100%` }} alignItems=\"flex-start\">\n <div sx={{ width: `70%` }}>\n {fetchingNpmData ? (\n <Spinner />\n ) : npmData?.readme ? (\n <Flex gap={5} flexDirection=\"column\">\n <ReactMarkdown\n renderers={markdownRenderers}\n source={npmData.readme.replace(\n // Remove the first heading with the plugin name since we render that manually\n new RegExp(`(?:#+|^)\\\\s*${pluginName}$`, `m`),\n ``\n )}\n />\n </Flex>\n ) : (\n `No readme found.`\n )}\n </div>\n <Flex\n as=\"form\"\n // @ts-ignore\n onSubmit={(evt: React.FormEvent): void => {\n evt.preventDefault()\n setValidationError(null)\n let json\n try {\n // NOTE(@mxstbr): I use eval() to support JS object notation (`{ bla: true }`) and\n // not just strict JSON (`{ \"bla\": true }`)\n const js = eval(`(${options})`)\n // Validate that options isn't any JavaScript but an object\n json = JSON.parse(JSON.stringify(js))\n } catch (err) {\n setValidationError(err)\n return\n }\n telemetry.trackEvent(`PLUGIN_CONFIGURE`, {\n pluginName,\n })\n updateGatsbyPlugin({\n name: props[`*`],\n options: json,\n }).catch(err => {\n setValidationError(err)\n })\n }}\n gap={5}\n alignItems=\"flex-start\"\n flexDirection=\"column\"\n sx={{\n borderRadius: 3,\n backgroundColor: `white`,\n borderColor: `grey.30`,\n borderWidth: 1,\n borderStyle: `solid`,\n padding: 7,\n width: `30%`,\n }}\n >\n <TextAreaField id=\"plugin-options\">\n <Flex sx={{ width: `100%` }} gap={3} flexDirection=\"column\">\n <Flex sx={{ width: `100%` }} gap={5} flexDirection=\"column\">\n <Flex gap={2} flexDirection=\"column\">\n <Heading as=\"h3\" sx={{ fontSize: 2 }}>\n Configuration options\n </Heading>\n <Text sx={{ color: `grey.60`, fontSize: 1 }}>\n After installing this plugin, you can configure it here.\n Changes made here are applied to the gatsby-config.js\n file.\n </Text>\n </Flex>\n {options === null ? (\n <Spinner />\n ) : (\n <TextAreaFieldControl\n sx={{\n fontFamily: `monospace`,\n backgroundColor: `grey.70`,\n color: `white`,\n p: 5,\n borderRadius: 3,\n minHeight: `10em`,\n ...(validationError !== null\n ? {\n borderWidth: 1,\n borderStyle: `solid`,\n borderColor: `red.40`,\n }\n : {}),\n }}\n value={options}\n onChange={(evt): void => setOptions(evt.target.value)}\n />\n )}\n </Flex>\n {validationError !== null && (\n <Text sx={{ color: `red.60`, fontSize: 0 }}>\n Invalid JSON: {validationError.message}\n </Text>\n )}\n </Flex>\n </TextAreaField>\n <Flex alignItems=\"center\" gap={3}>\n <Button\n variant=\"PRIMARY\"\n tone=\"BRAND\"\n type=\"submit\"\n size=\"M\"\n loading={updatingGatsbyPlugin}\n disabled={!isInstalled}\n >\n Save\n </Button>\n {!isInstalled && (\n <Text sx={{ fontSize: 0, color: `grey.50` }}>\n Install this plugin in order to save\n </Text>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n </Fragment>\n )\n}\n","'use strict';\n\nvar locate = require('../locate/break');\n\nmodule.exports = hardBreak;\nhardBreak.locator = locate;\nvar MIN_BREAK_LENGTH = 2;\n\nfunction hardBreak(eat, value, silent) {\n var length = value.length;\n var index = -1;\n var queue = '';\n var character;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === '\\n') {\n if (index < MIN_BREAK_LENGTH) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n queue += character;\n return eat(queue)({\n type: 'break'\n });\n }\n\n if (character !== ' ') {\n return;\n }\n\n queue += character;\n }\n}","'use strict';\n\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n var prototype;\n return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};","'use strict';\n\nmodule.exports = alphabetical; // Check if the given character code, or the character code at the first\n// character, is alphabetical.\n\nfunction alphabetical(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n return code >= 97 && code <= 122 ||\n /* a-z */\n code >= 65 && code <= 90\n /* A-Z */\n ;\n}","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);\n};\n\nfunction isBuffer(obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n} // For Node v0.10 support. Remove this eventually.\n\n\nfunction isSlowBuffer(obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0));\n}","'use strict';\n\nmodule.exports = visit;\n\nvar visitParents = require('unist-util-visit-parents');\n\nvar CONTINUE = visitParents.CONTINUE;\nvar SKIP = visitParents.SKIP;\nvar EXIT = visitParents.EXIT;\nvisit.CONTINUE = CONTINUE;\nvisit.SKIP = SKIP;\nvisit.EXIT = EXIT;\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n\n visitParents(tree, test, overload, reverse);\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1];\n var index = parent ? parent.children.indexOf(node) : null;\n return visitor(node, index, parent);\n }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var asterisk = value.indexOf('*', fromIndex);\n var underscore = value.indexOf('_', fromIndex);\n\n if (underscore === -1) {\n return asterisk;\n }\n\n if (asterisk === -1) {\n return underscore;\n }\n\n return underscore < asterisk ? underscore : asterisk;\n}","module.exports = createAnalyticsClient;\n\nvar algoliasearch = require('../index.js');\n\nfunction createAnalyticsClient(appId, apiKey, opts) {\n var analytics = {};\n opts = opts || {}; // there need to be 4 hosts, like on the client, since if requests fail,\n // the counter goes up by 1, so we need to have the same amount of hosts\n // 4 because: -dsn, -1, -2, -3\n // This is done because the APPID used for search will be the same for the analytics client created,\n // and since the state of available hosts is shared by APPID globally for the module, we had issues\n // where the hostIndex would be 1 while the array was only one entry (you got an empty host)\n\n opts.hosts = opts.hosts || ['analytics.algolia.com', 'analytics.algolia.com', 'analytics.algolia.com', 'analytics.algolia.com'];\n opts.protocol = opts.protocol || 'https:';\n analytics.as = algoliasearch(appId, apiKey, opts);\n\n analytics.getABTests = function (_params, callback) {\n var params = params || {};\n var offset = params.offset || 0;\n var limit = params.limit || 10;\n return this.as._jsonRequest({\n method: 'GET',\n url: '/2/abtests?offset=' + encodeURIComponent(offset) + '&limit=' + encodeURIComponent(limit),\n hostType: 'read',\n forceAuthHeaders: true,\n callback: callback\n });\n };\n\n analytics.getABTest = function (abTestID, callback) {\n return this.as._jsonRequest({\n method: 'GET',\n url: '/2/abtests/' + encodeURIComponent(abTestID),\n hostType: 'read',\n forceAuthHeaders: true,\n callback: callback\n });\n };\n\n analytics.addABTest = function (abTest, callback) {\n return this.as._jsonRequest({\n method: 'POST',\n url: '/2/abtests',\n body: abTest,\n hostType: 'read',\n forceAuthHeaders: true,\n callback: callback\n });\n };\n\n analytics.stopABTest = function (abTestID, callback) {\n return this.as._jsonRequest({\n method: 'POST',\n url: '/2/abtests/' + encodeURIComponent(abTestID) + '/stop',\n hostType: 'read',\n forceAuthHeaders: true,\n callback: callback\n });\n };\n\n analytics.deleteABTest = function (abTestID, callback) {\n return this.as._jsonRequest({\n method: 'DELETE',\n url: '/2/abtests/' + encodeURIComponent(abTestID),\n hostType: 'write',\n forceAuthHeaders: true,\n callback: callback\n });\n };\n\n analytics.waitTask = function (indexName, taskID, callback) {\n return this.as.initIndex(indexName).waitTask(taskID, callback);\n };\n\n return analytics;\n}","'use strict';\n\nmodule.exports = decimal; // Check if the given character code, or the character code at the first\n// character, is decimal.\n\nfunction decimal(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n return code >= 48 && code <= 57;\n /* 0-9 */\n}","var visitWithParents = require('unist-util-visit-parents');\n\nfunction addListMetadata() {\n return function (ast) {\n visitWithParents(ast, 'list', function (listNode, parents) {\n var depth = 0,\n i,\n n;\n\n for (i = 0, n = parents.length; i < n; i++) {\n if (parents[i].type === 'list') depth += 1;\n }\n\n for (i = 0, n = listNode.children.length; i < n; i++) {\n var child = listNode.children[i];\n child.index = i;\n child.ordered = listNode.ordered;\n }\n\n listNode.depth = depth;\n });\n return ast;\n };\n}\n\nmodule.exports = addListMetadata;","'use strict';\n\nmodule.exports = locate;\nvar PROTOCOLS = ['https://', 'http://', 'mailto:'];\n\nfunction locate(value, fromIndex) {\n var length = PROTOCOLS.length;\n var index = -1;\n var min = -1;\n var position;\n\n if (!this.options.gfm) {\n return -1;\n }\n\n while (++index < length) {\n position = value.indexOf(PROTOCOLS[index], fromIndex);\n\n if (position !== -1 && (position < min || min === -1)) {\n min = position;\n }\n }\n\n return min;\n}","'use strict';\n\nvar path = require('path');\n\nfunction replaceExt(npath, ext) {\n if (typeof npath !== 'string') {\n return npath;\n }\n\n if (npath.length === 0) {\n return npath;\n }\n\n var nFileName = path.basename(npath, path.extname(npath)) + ext;\n return path.join(path.dirname(npath), nFileName);\n}\n\nmodule.exports = replaceExt;","\"use strict\";\n\nvar HtmlParser = '__RMD_HTML_PARSER__';\nexports.HtmlParser = typeof Symbol === 'undefined' ? HtmlParser : Symbol(HtmlParser);","'use strict';\n\nvar locate = require('../locate/escape');\n\nmodule.exports = escape;\nescape.locator = locate;\n\nfunction escape(eat, value, silent) {\n var self = this;\n var character;\n var node;\n\n if (value.charAt(0) === '\\\\') {\n character = value.charAt(1);\n\n if (self.escape.indexOf(character) !== -1) {\n /* istanbul ignore if - never used (yet) */\n if (silent) {\n return true;\n }\n\n if (character === '\\n') {\n node = {\n type: 'break'\n };\n } else {\n node = {\n type: 'text',\n value: character\n };\n }\n\n return eat('\\\\' + character)(node);\n }\n }\n}","'use strict';\n\nvar characterEntities = require('character-entities');\n\nvar legacy = require('character-entities-legacy');\n\nvar invalid = require('character-reference-invalid');\n\nvar decimal = require('is-decimal');\n\nvar hexadecimal = require('is-hexadecimal');\n\nvar alphanumerical = require('is-alphanumerical');\n\nmodule.exports = parseEntities;\nvar own = {}.hasOwnProperty;\nvar fromCharCode = String.fromCharCode;\nvar noop = Function.prototype;\n/* Default settings. */\n\nvar defaults = {\n warning: null,\n reference: null,\n text: null,\n warningContext: null,\n referenceContext: null,\n textContext: null,\n position: {},\n additional: null,\n attribute: false,\n nonTerminated: true\n};\n/* Reference types. */\n\nvar NAMED = 'named';\nvar HEXADECIMAL = 'hexadecimal';\nvar DECIMAL = 'decimal';\n/* Map of bases. */\n\nvar BASE = {};\nBASE[HEXADECIMAL] = 16;\nBASE[DECIMAL] = 10;\n/* Map of types to tests. Each type of character reference\n * accepts different characters. This test is used to\n * detect whether a reference has ended (as the semicolon\n * is not strictly needed). */\n\nvar TESTS = {};\nTESTS[NAMED] = alphanumerical;\nTESTS[DECIMAL] = decimal;\nTESTS[HEXADECIMAL] = hexadecimal;\n/* Warning messages. */\n\nvar NAMED_NOT_TERMINATED = 1;\nvar NUMERIC_NOT_TERMINATED = 2;\nvar NAMED_EMPTY = 3;\nvar NUMERIC_EMPTY = 4;\nvar NAMED_UNKNOWN = 5;\nvar NUMERIC_DISALLOWED = 6;\nvar NUMERIC_PROHIBITED = 7;\nvar MESSAGES = {};\nMESSAGES[NAMED_NOT_TERMINATED] = 'Named character references must be terminated by a semicolon';\nMESSAGES[NUMERIC_NOT_TERMINATED] = 'Numeric character references must be terminated by a semicolon';\nMESSAGES[NAMED_EMPTY] = 'Named character references cannot be empty';\nMESSAGES[NUMERIC_EMPTY] = 'Numeric character references cannot be empty';\nMESSAGES[NAMED_UNKNOWN] = 'Named character references must be known';\nMESSAGES[NUMERIC_DISALLOWED] = 'Numeric character references cannot be disallowed';\nMESSAGES[NUMERIC_PROHIBITED] = 'Numeric character references cannot be outside the permissible Unicode range';\n/* Wrap to ensure clean parameters are given to `parse`. */\n\nfunction parseEntities(value, options) {\n var settings = {};\n var option;\n var key;\n\n if (!options) {\n options = {};\n }\n\n for (key in defaults) {\n option = options[key];\n settings[key] = option === null || option === undefined ? defaults[key] : option;\n }\n\n if (settings.position.indent || settings.position.start) {\n settings.indent = settings.position.indent || [];\n settings.position = settings.position.start;\n }\n\n return parse(value, settings);\n}\n/* Parse entities. */\n\n\nfunction parse(value, settings) {\n var additional = settings.additional;\n var nonTerminated = settings.nonTerminated;\n var handleText = settings.text;\n var handleReference = settings.reference;\n var handleWarning = settings.warning;\n var textContext = settings.textContext;\n var referenceContext = settings.referenceContext;\n var warningContext = settings.warningContext;\n var pos = settings.position;\n var indent = settings.indent || [];\n var length = value.length;\n var index = 0;\n var lines = -1;\n var column = pos.column || 1;\n var line = pos.line || 1;\n var queue = '';\n var result = [];\n var entityCharacters;\n var terminated;\n var characters;\n var character;\n var reference;\n var following;\n var warning;\n var reason;\n var output;\n var entity;\n var begin;\n var start;\n var type;\n var test;\n var prev;\n var next;\n var diff;\n var end;\n /* Cache the current point. */\n\n prev = now();\n /* Wrap `handleWarning`. */\n\n warning = handleWarning ? parseError : noop;\n /* Ensure the algorithm walks over the first character\n * and the end (inclusive). */\n\n index--;\n length++;\n\n while (++index < length) {\n /* If the previous character was a newline. */\n if (character === '\\n') {\n column = indent[lines] || 1;\n }\n\n character = at(index);\n /* Handle anything other than an ampersand,\n * including newlines and EOF. */\n\n if (character !== '&') {\n if (character === '\\n') {\n line++;\n lines++;\n column = 0;\n }\n\n if (character) {\n queue += character;\n column++;\n } else {\n flush();\n }\n } else {\n following = at(index + 1);\n /* The behaviour depends on the identity of the next\n * character. */\n\n if (following === '\\t'\n /* Tab */\n || following === '\\n'\n /* Newline */\n || following === '\\f'\n /* Form feed */\n || following === ' '\n /* Space */\n || following === '<'\n /* Less-than */\n || following === '&'\n /* Ampersand */\n || following === '' || additional && following === additional) {\n /* Not a character reference. No characters\n * are consumed, and nothing is returned.\n * This is not an error, either. */\n queue += character;\n column++;\n continue;\n }\n\n start = index + 1;\n begin = start;\n end = start;\n /* Numerical entity. */\n\n if (following !== '#') {\n type = NAMED;\n } else {\n end = ++begin;\n /* The behaviour further depends on the\n * character after the U+0023 NUMBER SIGN. */\n\n following = at(end);\n\n if (following === 'x' || following === 'X') {\n /* ASCII hex digits. */\n type = HEXADECIMAL;\n end = ++begin;\n } else {\n /* ASCII digits. */\n type = DECIMAL;\n }\n }\n\n entityCharacters = '';\n entity = '';\n characters = '';\n test = TESTS[type];\n end--;\n\n while (++end < length) {\n following = at(end);\n\n if (!test(following)) {\n break;\n }\n\n characters += following;\n /* Check if we can match a legacy named\n * reference. If so, we cache that as the\n * last viable named reference. This\n * ensures we do not need to walk backwards\n * later. */\n\n if (type === NAMED && own.call(legacy, characters)) {\n entityCharacters = characters;\n entity = legacy[characters];\n }\n }\n\n terminated = at(end) === ';';\n\n if (terminated) {\n end++;\n\n if (type === NAMED && own.call(characterEntities, characters)) {\n entityCharacters = characters;\n entity = characterEntities[characters];\n }\n }\n\n diff = 1 + end - start;\n\n if (!terminated && !nonTerminated) {\n /* Empty. */\n } else if (!characters) {\n /* An empty (possible) entity is valid, unless\n * its numeric (thus an ampersand followed by\n * an octothorp). */\n if (type !== NAMED) {\n warning(NUMERIC_EMPTY, diff);\n }\n } else if (type === NAMED) {\n /* An ampersand followed by anything\n * unknown, and not terminated, is invalid. */\n if (terminated && !entity) {\n warning(NAMED_UNKNOWN, 1);\n } else {\n /* If theres something after an entity\n * name which is not known, cap the\n * reference. */\n if (entityCharacters !== characters) {\n end = begin + entityCharacters.length;\n diff = 1 + end - begin;\n terminated = false;\n }\n /* If the reference is not terminated,\n * warn. */\n\n\n if (!terminated) {\n reason = entityCharacters ? NAMED_NOT_TERMINATED : NAMED_EMPTY;\n\n if (!settings.attribute) {\n warning(reason, diff);\n } else {\n following = at(end);\n\n if (following === '=') {\n warning(reason, diff);\n entity = null;\n } else if (alphanumerical(following)) {\n entity = null;\n } else {\n warning(reason, diff);\n }\n }\n }\n }\n\n reference = entity;\n } else {\n if (!terminated) {\n /* All non-terminated numeric entities are\n * not rendered, and trigger a warning. */\n warning(NUMERIC_NOT_TERMINATED, diff);\n }\n /* When terminated and number, parse as\n * either hexadecimal or decimal. */\n\n\n reference = parseInt(characters, BASE[type]);\n /* Trigger a warning when the parsed number\n * is prohibited, and replace with\n * replacement character. */\n\n if (prohibited(reference)) {\n warning(NUMERIC_PROHIBITED, diff);\n reference = \"\\uFFFD\";\n } else if (reference in invalid) {\n /* Trigger a warning when the parsed number\n * is disallowed, and replace by an\n * alternative. */\n warning(NUMERIC_DISALLOWED, diff);\n reference = invalid[reference];\n } else {\n /* Parse the number. */\n output = '';\n /* Trigger a warning when the parsed\n * number should not be used. */\n\n if (disallowed(reference)) {\n warning(NUMERIC_DISALLOWED, diff);\n }\n /* Stringify the number. */\n\n\n if (reference > 0xffff) {\n reference -= 0x10000;\n output += fromCharCode(reference >>> (10 & 0x3ff) | 0xd800);\n reference = 0xdc00 | reference & 0x3ff;\n }\n\n reference = output + fromCharCode(reference);\n }\n }\n /* If we could not find a reference, queue the\n * checked characters (as normal characters),\n * and move the pointer to their end. This is\n * possible because we can be certain neither\n * newlines nor ampersands are included. */\n\n\n if (!reference) {\n characters = value.slice(start - 1, end);\n queue += characters;\n column += characters.length;\n index = end - 1;\n } else {\n /* Found it! First eat the queued\n * characters as normal text, then eat\n * an entity. */\n flush();\n prev = now();\n index = end - 1;\n column += end - start + 1;\n result.push(reference);\n next = now();\n next.offset++;\n\n if (handleReference) {\n handleReference.call(referenceContext, reference, {\n start: prev,\n end: next\n }, value.slice(start - 1, end));\n }\n\n prev = next;\n }\n }\n }\n /* Return the reduced nodes, and any possible warnings. */\n\n\n return result.join('');\n /* Get current position. */\n\n function now() {\n return {\n line: line,\n column: column,\n offset: index + (pos.offset || 0)\n };\n }\n /* “Throw” a parse-error: a warning. */\n\n\n function parseError(code, offset) {\n var position = now();\n position.column += offset;\n position.offset += offset;\n handleWarning.call(warningContext, MESSAGES[code], position, code);\n }\n /* Get character at position. */\n\n\n function at(position) {\n return value.charAt(position);\n }\n /* Flush `queue` (normal text). Macro invoked before\n * each entity and at the end of `value`.\n * Does nothing when `queue` is empty. */\n\n\n function flush() {\n if (queue) {\n result.push(queue);\n\n if (handleText) {\n handleText.call(textContext, queue, {\n start: prev,\n end: now()\n });\n }\n\n queue = '';\n }\n }\n}\n/* Check if `character` is outside the permissible unicode range. */\n\n\nfunction prohibited(code) {\n return code >= 0xd800 && code <= 0xdfff || code > 0x10ffff;\n}\n/* Check if `character` is disallowed. */\n\n\nfunction disallowed(code) {\n return code >= 0x0001 && code <= 0x0008 || code === 0x000b || code >= 0x000d && code <= 0x001f || code >= 0x007f && code <= 0x009f || code >= 0xfdd0 && code <= 0xfdef || (code & 0xffff) === 0xffff || (code & 0xffff) === 0xfffe;\n}","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function (node) {\n visit(node, 'table', wrap);\n return node;\n};\n\nfunction wrap(table) {\n var children = table.children;\n table.children = [{\n type: 'tableHead',\n align: table.align,\n children: [children[0]],\n position: children[0].position\n }];\n\n if (children.length > 1) {\n table.children.push({\n type: 'tableBody',\n align: table.align,\n children: children.slice(1),\n position: {\n start: children[1].position.start,\n end: children[children.length - 1].position.end\n }\n });\n }\n}","'use strict';\n\nmodule.exports = setextHeading;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_EQUALS = '=';\nvar C_DASH = '-';\nvar MAX_HEADING_INDENT = 3;\n/* Map of characters which can be used to mark setext\n * headers, mapping to their corresponding depth. */\n\nvar SETEXT_MARKERS = {};\nSETEXT_MARKERS[C_EQUALS] = 1;\nSETEXT_MARKERS[C_DASH] = 2;\n\nfunction setextHeading(eat, value, silent) {\n var self = this;\n var now = eat.now();\n var length = value.length;\n var index = -1;\n var subvalue = '';\n var content;\n var queue;\n var character;\n var marker;\n var depth;\n /* Eat initial indentation. */\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE || index >= MAX_HEADING_INDENT) {\n index--;\n break;\n }\n\n subvalue += character;\n }\n /* Eat content. */\n\n\n content = '';\n queue = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === C_NEWLINE) {\n index--;\n break;\n }\n\n if (character === C_SPACE || character === C_TAB) {\n queue += character;\n } else {\n content += queue + character;\n queue = '';\n }\n }\n\n now.column += subvalue.length;\n now.offset += subvalue.length;\n subvalue += content + queue;\n /* Ensure the content is followed by a newline and a\n * valid marker. */\n\n character = value.charAt(++index);\n marker = value.charAt(++index);\n\n if (character !== C_NEWLINE || !SETEXT_MARKERS[marker]) {\n return;\n }\n\n subvalue += character;\n /* Eat Setext-line. */\n\n queue = marker;\n depth = SETEXT_MARKERS[marker];\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== marker) {\n if (character !== C_NEWLINE) {\n return;\n }\n\n index--;\n break;\n }\n\n queue += character;\n }\n\n if (silent) {\n return true;\n }\n\n return eat(subvalue + queue)({\n type: 'heading',\n depth: depth,\n children: self.tokenizeInline(content, now)\n });\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('~~', fromIndex);\n}","'use strict';\n\nvar stringify = require('unist-util-stringify-position');\n\nmodule.exports = VMessage;\n/* Inherit from `Error#`. */\n\nfunction VMessagePrototype() {}\n\nVMessagePrototype.prototype = Error.prototype;\nVMessage.prototype = new VMessagePrototype();\n/* Message properties. */\n\nvar proto = VMessage.prototype;\nproto.file = '';\nproto.name = '';\nproto.reason = '';\nproto.message = '';\nproto.stack = '';\nproto.fatal = null;\nproto.column = null;\nproto.line = null;\n/* Construct a new VMessage.\n *\n * Note: We cannot invoke `Error` on the created context,\n * as that adds readonly `line` and `column` attributes on\n * Safari 9, thus throwing and failing the data. */\n\nfunction VMessage(reason, position, origin) {\n var parts;\n var range;\n var location;\n\n if (typeof position === 'string') {\n origin = position;\n position = null;\n }\n\n parts = parseOrigin(origin);\n range = stringify(position) || '1:1';\n location = {\n start: {\n line: null,\n column: null\n },\n end: {\n line: null,\n column: null\n }\n };\n /* Node. */\n\n if (position && position.position) {\n position = position.position;\n }\n\n if (position) {\n /* Position. */\n if (position.start) {\n location = position;\n position = position.start;\n } else {\n /* Point. */\n location.start = position;\n }\n }\n\n if (reason.stack) {\n this.stack = reason.stack;\n reason = reason.message;\n }\n\n this.message = reason;\n this.name = range;\n this.reason = reason;\n this.line = position ? position.line : null;\n this.column = position ? position.column : null;\n this.location = location;\n this.source = parts[0];\n this.ruleId = parts[1];\n}\n\nfunction parseOrigin(origin) {\n var result = [null, null];\n var index;\n\n if (typeof origin === 'string') {\n index = origin.indexOf(':');\n\n if (index === -1) {\n result[1] = origin;\n } else {\n result[0] = origin.slice(0, index);\n result[1] = origin.slice(index + 1);\n }\n }\n\n return result;\n}","'use strict';\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nvar xtend = require('xtend');\n\nvar unified = require('unified');\n\nvar parse = require('remark-parse');\n\nvar PropTypes = require('prop-types');\n\nvar addListMetadata = require('mdast-add-list-metadata');\n\nvar naiveHtml = require('./plugins/naive-html');\n\nvar disallowNode = require('./plugins/disallow-node');\n\nvar astToReact = require('./ast-to-react');\n\nvar wrapTableRows = require('./wrap-table-rows');\n\nvar getDefinitions = require('./get-definitions');\n\nvar uriTransformer = require('./uri-transformer');\n\nvar defaultRenderers = require('./renderers');\n\nvar symbols = require('./symbols');\n\nvar allTypes = Object.keys(defaultRenderers);\n\nvar ReactMarkdown = function ReactMarkdown(props) {\n var src = props.source || props.children || '';\n var parserOptions = props.parserOptions;\n\n if (props.allowedTypes && props.disallowedTypes) {\n throw new Error('Only one of `allowedTypes` and `disallowedTypes` should be defined');\n }\n\n var renderers = xtend(defaultRenderers, props.renderers);\n var plugins = [[parse, parserOptions]].concat(props.plugins || []);\n var parser = plugins.reduce(applyParserPlugin, unified());\n var rawAst = parser.parse(src);\n var renderProps = xtend(props, {\n renderers: renderers,\n definitions: getDefinitions(rawAst)\n });\n var astPlugins = determineAstPlugins(props); // eslint-disable-next-line no-sync\n\n var transformedAst = parser.runSync(rawAst);\n var ast = astPlugins.reduce(function (node, plugin) {\n return plugin(node, renderProps);\n }, transformedAst);\n return astToReact(ast, renderProps);\n};\n\nfunction applyParserPlugin(parser, plugin) {\n return Array.isArray(plugin) ? parser.use.apply(parser, _toConsumableArray(plugin)) : parser.use(plugin);\n}\n\nfunction determineAstPlugins(props) {\n var plugins = [wrapTableRows, addListMetadata()];\n var disallowedTypes = props.disallowedTypes;\n\n if (props.allowedTypes) {\n disallowedTypes = allTypes.filter(function (type) {\n return type !== 'root' && props.allowedTypes.indexOf(type) === -1;\n });\n }\n\n var removalMethod = props.unwrapDisallowed ? 'unwrap' : 'remove';\n\n if (disallowedTypes && disallowedTypes.length > 0) {\n plugins.push(disallowNode.ofType(disallowedTypes, removalMethod));\n }\n\n if (props.allowNode) {\n plugins.push(disallowNode.ifNotMatch(props.allowNode, removalMethod));\n }\n\n var renderHtml = !props.escapeHtml && !props.skipHtml;\n var hasHtmlParser = (props.astPlugins || []).some(function (item) {\n var plugin = Array.isArray(item) ? item[0] : item;\n return plugin.identity === symbols.HtmlParser;\n });\n\n if (renderHtml && !hasHtmlParser) {\n plugins.push(naiveHtml);\n }\n\n return props.astPlugins ? plugins.concat(props.astPlugins) : plugins;\n}\n\nReactMarkdown.defaultProps = {\n renderers: {},\n escapeHtml: true,\n skipHtml: false,\n sourcePos: false,\n rawSourcePos: false,\n transformLinkUri: uriTransformer,\n astPlugins: [],\n plugins: [],\n parserOptions: {}\n};\nReactMarkdown.propTypes = {\n className: PropTypes.string,\n source: PropTypes.string,\n children: PropTypes.string,\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n escapeHtml: PropTypes.bool,\n skipHtml: PropTypes.bool,\n allowNode: PropTypes.func,\n allowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n disallowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n astPlugins: PropTypes.arrayOf(PropTypes.func),\n unwrapDisallowed: PropTypes.bool,\n renderers: PropTypes.object,\n plugins: PropTypes.array,\n parserOptions: PropTypes.object\n};\nReactMarkdown.types = allTypes;\nReactMarkdown.renderers = defaultRenderers;\nReactMarkdown.uriTransformer = uriTransformer;\nmodule.exports = ReactMarkdown;","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var asterisk = value.indexOf('**', fromIndex);\n var underscore = value.indexOf('__', fromIndex);\n\n if (underscore === -1) {\n return asterisk;\n }\n\n if (asterisk === -1) {\n return underscore;\n }\n\n return underscore < asterisk ? underscore : asterisk;\n}","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n if (typeof Array.isArray === 'function') {\n return Array.isArray(arr);\n }\n\n return toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object\n\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n } // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n\n\n var key;\n\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n}; // If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\n\n\nvar setProperty = function setProperty(target, options) {\n if (defineProperty && options.name === '__proto__') {\n defineProperty(target, options.name, {\n enumerable: true,\n configurable: true,\n value: options.newValue,\n writable: true\n });\n } else {\n target[options.name] = options.newValue;\n }\n}; // Return undefined instead of __proto__ if '__proto__' is not an own property\n\n\nvar getProperty = function getProperty(obj, name) {\n if (name === '__proto__') {\n if (!hasOwn.call(obj, name)) {\n return void 0;\n } else if (gOPD) {\n // In early versions of node, obj['__proto__'] is buggy when obj has\n // __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n return gOPD(obj, name).value;\n }\n }\n\n return obj[name];\n};\n\nmodule.exports = function extend() {\n var options, name, src, copy, copyIsArray, clone;\n var target = arguments[0];\n var i = 1;\n var length = arguments.length;\n var deep = false; // Handle a deep copy situation\n\n if (typeof target === 'boolean') {\n deep = target;\n target = arguments[1] || {}; // skip the boolean and the target\n\n i = 2;\n }\n\n if (target == null || typeof target !== 'object' && typeof target !== 'function') {\n target = {};\n }\n\n for (; i < length; ++i) {\n options = arguments[i]; // Only deal with non-null/undefined values\n\n if (options != null) {\n // Extend the base object\n for (name in options) {\n src = getProperty(target, name);\n copy = getProperty(options, name); // Prevent never-ending loop\n\n if (target !== copy) {\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && isArray(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n } // Never move original objects, clone them\n\n\n setProperty(target, {\n name: name,\n newValue: extend(deep, clone, copy)\n }); // Don't bring in undefined values\n } else if (typeof copy !== 'undefined') {\n setProperty(target, {\n name: name,\n newValue: copy\n });\n }\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n};","'use strict';\n\nvar slice = [].slice;\nmodule.exports = wrap;\n/* Wrap `fn`. Can be sync or async; return a promise,\n * receive a completion handler, return new values and\n * errors. */\n\nfunction wrap(fn, callback) {\n var invoked;\n return wrapped;\n\n function wrapped() {\n var params = slice.call(arguments, 0);\n var callback = fn.length > params.length;\n var result;\n\n if (callback) {\n params.push(done);\n }\n\n try {\n result = fn.apply(null, params);\n } catch (err) {\n /* Well, this is quite the pickle. `fn` received\n * a callback and invoked it (thus continuing the\n * pipeline), but later also threw an error.\n * We’re not about to restart the pipeline again,\n * so the only thing left to do is to throw the\n * thing instea. */\n if (callback && invoked) {\n throw err;\n }\n\n return done(err);\n }\n\n if (!callback) {\n if (result && typeof result.then === 'function') {\n result.then(then, done);\n } else if (result instanceof Error) {\n done(result);\n } else {\n then(result);\n }\n }\n }\n /* Invoke `next`, only once. */\n\n\n function done() {\n if (!invoked) {\n invoked = true;\n callback.apply(null, arguments);\n }\n }\n /* Invoke `done` with one value.\n * Tracks if an error is passed, too. */\n\n\n function then(value) {\n done(null, value);\n }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = definition;\ndefinition.notInList = true;\ndefinition.notInBlock = true;\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_COLON = ':';\nvar C_LT = '<';\nvar C_GT = '>';\n\nfunction definition(eat, value, silent) {\n var self = this;\n var commonmark = self.options.commonmark;\n var index = 0;\n var length = value.length;\n var subvalue = '';\n var beforeURL;\n var beforeTitle;\n var queue;\n var character;\n var test;\n var identifier;\n var url;\n var title;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character !== C_BRACKET_OPEN) {\n return;\n }\n\n index++;\n subvalue += character;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_CLOSE) {\n break;\n } else if (character === C_BACKSLASH) {\n queue += character;\n index++;\n character = value.charAt(index);\n }\n\n queue += character;\n index++;\n }\n\n if (!queue || value.charAt(index) !== C_BRACKET_CLOSE || value.charAt(index + 1) !== C_COLON) {\n return;\n }\n\n identifier = queue;\n subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n index = subvalue.length;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE && character !== C_NEWLINE) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n character = value.charAt(index);\n queue = '';\n beforeURL = subvalue;\n\n if (character === C_LT) {\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!isEnclosedURLCharacter(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character === isEnclosedURLCharacter.delimiter) {\n subvalue += C_LT + queue + character;\n index++;\n } else {\n if (commonmark) {\n return;\n }\n\n index -= queue.length + 1;\n queue = '';\n }\n }\n\n if (!queue) {\n while (index < length) {\n character = value.charAt(index);\n\n if (!isUnclosedURLCharacter(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n subvalue += queue;\n }\n\n if (!queue) {\n return;\n }\n\n url = queue;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE && character !== C_NEWLINE) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n test = null;\n\n if (character === C_DOUBLE_QUOTE) {\n test = C_DOUBLE_QUOTE;\n } else if (character === C_SINGLE_QUOTE) {\n test = C_SINGLE_QUOTE;\n } else if (character === C_PAREN_OPEN) {\n test = C_PAREN_CLOSE;\n }\n\n if (!test) {\n queue = '';\n index = subvalue.length;\n } else if (queue) {\n subvalue += queue + character;\n index = subvalue.length;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === test) {\n break;\n }\n\n if (character === C_NEWLINE) {\n index++;\n character = value.charAt(index);\n\n if (character === C_NEWLINE || character === test) {\n return;\n }\n\n queue += C_NEWLINE;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character !== test) {\n return;\n }\n\n beforeTitle = subvalue;\n subvalue += queue + character;\n index++;\n title = queue;\n queue = '';\n } else {\n return;\n }\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (!character || character === C_NEWLINE) {\n if (silent) {\n return true;\n }\n\n beforeURL = eat(beforeURL).test().end;\n url = self.decode.raw(self.unescape(url), beforeURL, {\n nonTerminated: false\n });\n\n if (title) {\n beforeTitle = eat(beforeTitle).test().end;\n title = self.decode.raw(self.unescape(title), beforeTitle);\n }\n\n return eat(subvalue)({\n type: 'definition',\n identifier: normalize(identifier),\n title: title || null,\n url: url\n });\n }\n}\n/* Check if `character` can be inside an enclosed URI. */\n\n\nfunction isEnclosedURLCharacter(character) {\n return character !== C_GT && character !== C_BRACKET_OPEN && character !== C_BRACKET_CLOSE;\n}\n\nisEnclosedURLCharacter.delimiter = C_GT;\n/* Check if `character` can be inside an unclosed URI. */\n\nfunction isUnclosedURLCharacter(character) {\n return character !== C_BRACKET_OPEN && character !== C_BRACKET_CLOSE && !whitespace(character);\n}","\"use strict\";\n/**\n * Naive, simple plugin to match inline nodes without attributes\n * This allows say <strong>foo</strong>, but not <strong class=\"very\">foo</strong>\n * For proper HTML support, you'll want a different plugin\n **/\n\nvar visit = require('unist-util-visit');\n\nvar type = 'virtualHtml';\nvar selfClosingRe = /^<(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)\\s*\\/?>$/i;\nvar simpleTagRe = /^<(\\/?)([a-z]+)\\s*>$/;\n\nmodule.exports = function (tree) {\n var open;\n var currentParent;\n visit(tree, 'html', function (node, index, parent) {\n if (currentParent !== parent) {\n open = [];\n currentParent = parent;\n }\n\n var selfClosing = getSelfClosing(node);\n\n if (selfClosing) {\n parent.children.splice(index, 1, {\n type: type,\n tag: selfClosing,\n position: node.position\n });\n return true;\n }\n\n var current = getSimpleTag(node, parent);\n\n if (!current) {\n return true;\n }\n\n var matching = findAndPull(open, current.tag);\n\n if (matching) {\n parent.children.splice(index, 0, virtual(current, matching, parent));\n } else if (!current.opening) {\n open.push(current);\n }\n\n return true;\n }, true // Iterate in reverse\n );\n return tree;\n};\n\nfunction findAndPull(open, matchingTag) {\n var i = open.length;\n\n while (i--) {\n if (open[i].tag === matchingTag) {\n return open.splice(i, 1)[0];\n }\n }\n\n return false;\n}\n\nfunction getSimpleTag(node, parent) {\n var match = node.value.match(simpleTagRe);\n return match ? {\n tag: match[2],\n opening: !match[1],\n node: node\n } : false;\n}\n\nfunction getSelfClosing(node) {\n var match = node.value.match(selfClosingRe);\n return match ? match[1] : false;\n}\n\nfunction virtual(fromNode, toNode, parent) {\n var fromIndex = parent.children.indexOf(fromNode.node);\n var toIndex = parent.children.indexOf(toNode.node);\n var extracted = parent.children.splice(fromIndex, toIndex - fromIndex + 1);\n var children = extracted.slice(1, -1);\n return {\n type: type,\n children: children,\n tag: fromNode.tag,\n position: {\n start: fromNode.node.position.start,\n end: toNode.node.position.end,\n indent: []\n }\n };\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar decode = require('parse-entities');\n\nvar locate = require('../locate/tag');\n\nmodule.exports = autoLink;\nautoLink.locator = locate;\nautoLink.notInLink = true;\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_AT_SIGN = '@';\nvar C_SLASH = '/';\nvar MAILTO = 'mailto:';\nvar MAILTO_LENGTH = MAILTO.length;\n/* Tokenise a link. */\n\nfunction autoLink(eat, value, silent) {\n var self;\n var subvalue;\n var length;\n var index;\n var queue;\n var character;\n var hasAtCharacter;\n var link;\n var now;\n var content;\n var tokenizers;\n var exit;\n\n if (value.charAt(0) !== C_LT) {\n return;\n }\n\n self = this;\n subvalue = '';\n length = value.length;\n index = 0;\n queue = '';\n hasAtCharacter = false;\n link = '';\n index++;\n subvalue = C_LT;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (whitespace(character) || character === C_GT || character === C_AT_SIGN || character === ':' && value.charAt(index + 1) === C_SLASH) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n if (!queue) {\n return;\n }\n\n link += queue;\n queue = '';\n character = value.charAt(index);\n link += character;\n index++;\n\n if (character === C_AT_SIGN) {\n hasAtCharacter = true;\n } else {\n if (character !== ':' || value.charAt(index + 1) !== C_SLASH) {\n return;\n }\n\n link += C_SLASH;\n index++;\n }\n\n while (index < length) {\n character = value.charAt(index);\n\n if (whitespace(character) || character === C_GT) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (!queue || character !== C_GT) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n link += queue;\n content = link;\n subvalue += link + character;\n now = eat.now();\n now.column++;\n now.offset++;\n\n if (hasAtCharacter) {\n if (link.slice(0, MAILTO_LENGTH).toLowerCase() === MAILTO) {\n content = content.substr(MAILTO_LENGTH);\n now.column += MAILTO_LENGTH;\n now.offset += MAILTO_LENGTH;\n } else {\n link = MAILTO + link;\n }\n }\n /* Temporarily remove all tokenizers except text in autolinks. */\n\n\n tokenizers = self.inlineTokenizers;\n self.inlineTokenizers = {\n text: tokenizers.text\n };\n exit = self.enterLink();\n content = self.tokenizeInline(content, now);\n self.inlineTokenizers = tokenizers;\n exit();\n return eat(subvalue)({\n type: 'link',\n title: null,\n url: decode(link, {\n nonTerminated: false\n }),\n children: content\n });\n}","exports = module.exports = trim;\n\nfunction trim(str) {\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function (str) {\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function (str) {\n return str.replace(/\\s*$/, '');\n};","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('\\\\', fromIndex);\n}","'use strict';\n\nmodule.exports = factory;\nvar MERGEABLE_NODES = {\n text: mergeText,\n blockquote: mergeBlockquote\n};\n/* Check whether a node is mergeable with adjacent nodes. */\n\nfunction mergeable(node) {\n var start;\n var end;\n\n if (node.type !== 'text' || !node.position) {\n return true;\n }\n\n start = node.position.start;\n end = node.position.end;\n /* Only merge nodes which occupy the same size as their\n * `value`. */\n\n return start.line !== end.line || end.column - start.column === node.value.length;\n}\n/* Merge two text nodes: `node` into `prev`. */\n\n\nfunction mergeText(prev, node) {\n prev.value += node.value;\n return prev;\n}\n/* Merge two blockquotes: `node` into `prev`, unless in\n * CommonMark mode. */\n\n\nfunction mergeBlockquote(prev, node) {\n if (this.options.commonmark) {\n return node;\n }\n\n prev.children = prev.children.concat(node.children);\n return prev;\n}\n/* Construct a tokenizer. This creates both\n * `tokenizeInline` and `tokenizeBlock`. */\n\n\nfunction factory(type) {\n return tokenize;\n /* Tokenizer for a bound `type`. */\n\n function tokenize(value, location) {\n var self = this;\n var offset = self.offset;\n var tokens = [];\n var methods = self[type + 'Methods'];\n var tokenizers = self[type + 'Tokenizers'];\n var line = location.line;\n var column = location.column;\n var index;\n var length;\n var method;\n var name;\n var matched;\n var valueLength;\n /* Trim white space only lines. */\n\n if (!value) {\n return tokens;\n }\n /* Expose on `eat`. */\n\n\n eat.now = now;\n eat.file = self.file;\n /* Sync initial offset. */\n\n updatePosition('');\n /* Iterate over `value`, and iterate over all\n * tokenizers. When one eats something, re-iterate\n * with the remaining value. If no tokenizer eats,\n * something failed (should not happen) and an\n * exception is thrown. */\n\n while (value) {\n index = -1;\n length = methods.length;\n matched = false;\n\n while (++index < length) {\n name = methods[index];\n method = tokenizers[name];\n\n if (method && (\n /* istanbul ignore next */\n !method.onlyAtStart || self.atStart) && (!method.notInList || !self.inList) && (!method.notInBlock || !self.inBlock) && (!method.notInLink || !self.inLink)) {\n valueLength = value.length;\n method.apply(self, [eat, value]);\n matched = valueLength !== value.length;\n\n if (matched) {\n break;\n }\n }\n }\n /* istanbul ignore if */\n\n\n if (!matched) {\n self.file.fail(new Error('Infinite loop'), eat.now());\n }\n }\n\n self.eof = now();\n return tokens;\n /* Update line, column, and offset based on\n * `value`. */\n\n function updatePosition(subvalue) {\n var lastIndex = -1;\n var index = subvalue.indexOf('\\n');\n\n while (index !== -1) {\n line++;\n lastIndex = index;\n index = subvalue.indexOf('\\n', index + 1);\n }\n\n if (lastIndex === -1) {\n column += subvalue.length;\n } else {\n column = subvalue.length - lastIndex;\n }\n\n if (line in offset) {\n if (lastIndex !== -1) {\n column += offset[line];\n } else if (column <= offset[line]) {\n column = offset[line] + 1;\n }\n }\n }\n /* Get offset. Called before the first character is\n * eaten to retrieve the range's offsets. */\n\n\n function getOffset() {\n var indentation = [];\n var pos = line + 1;\n /* Done. Called when the last character is\n * eaten to retrieve the range’s offsets. */\n\n return function () {\n var last = line + 1;\n\n while (pos < last) {\n indentation.push((offset[pos] || 0) + 1);\n pos++;\n }\n\n return indentation;\n };\n }\n /* Get the current position. */\n\n\n function now() {\n var pos = {\n line: line,\n column: column\n };\n pos.offset = self.toOffset(pos);\n return pos;\n }\n /* Store position information for a node. */\n\n\n function Position(start) {\n this.start = start;\n this.end = now();\n }\n /* Throw when a value is incorrectly eaten.\n * This shouldn’t happen but will throw on new,\n * incorrect rules. */\n\n\n function validateEat(subvalue) {\n /* istanbul ignore if */\n if (value.substring(0, subvalue.length) !== subvalue) {\n /* Capture stack-trace. */\n self.file.fail(new Error('Incorrectly eaten value: please report this ' + 'warning on http://git.io/vg5Ft'), now());\n }\n }\n /* Mark position and patch `node.position`. */\n\n\n function position() {\n var before = now();\n return update;\n /* Add the position to a node. */\n\n function update(node, indent) {\n var prev = node.position;\n var start = prev ? prev.start : before;\n var combined = [];\n var n = prev && prev.end.line;\n var l = before.line;\n node.position = new Position(start);\n /* If there was already a `position`, this\n * node was merged. Fixing `start` wasn’t\n * hard, but the indent is different.\n * Especially because some information, the\n * indent between `n` and `l` wasn’t\n * tracked. Luckily, that space is\n * (should be?) empty, so we can safely\n * check for it now. */\n\n if (prev && indent && prev.indent) {\n combined = prev.indent;\n\n if (n < l) {\n while (++n < l) {\n combined.push((offset[n] || 0) + 1);\n }\n\n combined.push(before.column);\n }\n\n indent = combined.concat(indent);\n }\n\n node.position.indent = indent || [];\n return node;\n }\n }\n /* Add `node` to `parent`s children or to `tokens`.\n * Performs merges where possible. */\n\n\n function add(node, parent) {\n var children = parent ? parent.children : tokens;\n var prev = children[children.length - 1];\n\n if (prev && node.type === prev.type && node.type in MERGEABLE_NODES && mergeable(prev) && mergeable(node)) {\n node = MERGEABLE_NODES[node.type].call(self, prev, node);\n }\n\n if (node !== prev) {\n children.push(node);\n }\n\n if (self.atStart && tokens.length !== 0) {\n self.exitStart();\n }\n\n return node;\n }\n /* Remove `subvalue` from `value`.\n * `subvalue` must be at the start of `value`. */\n\n\n function eat(subvalue) {\n var indent = getOffset();\n var pos = position();\n var current = now();\n validateEat(subvalue);\n apply.reset = reset;\n reset.test = test;\n apply.test = test;\n value = value.substring(subvalue.length);\n updatePosition(subvalue);\n indent = indent();\n return apply;\n /* Add the given arguments, add `position` to\n * the returned node, and return the node. */\n\n function apply(node, parent) {\n return pos(add(pos(node), parent), indent);\n }\n /* Functions just like apply, but resets the\n * content: the line and column are reversed,\n * and the eaten value is re-added.\n * This is useful for nodes with a single\n * type of content, such as lists and tables.\n * See `apply` above for what parameters are\n * expected. */\n\n\n function reset() {\n var node = apply.apply(null, arguments);\n line = current.line;\n column = current.column;\n value = subvalue + value;\n return node;\n }\n /* Test the position, after eating, and reverse\n * to a not-eaten state. */\n\n\n function test() {\n var result = pos({});\n line = current.line;\n column = current.column;\n value = subvalue + value;\n return result.position;\n }\n }\n }\n}","'use strict';\n\nmodule.exports = text;\n\nfunction text(eat, value, silent) {\n var self = this;\n var methods;\n var tokenizers;\n var index;\n var length;\n var subvalue;\n var position;\n var tokenizer;\n var name;\n var min;\n var now;\n /* istanbul ignore if - never used (yet) */\n\n if (silent) {\n return true;\n }\n\n methods = self.inlineMethods;\n length = methods.length;\n tokenizers = self.inlineTokenizers;\n index = -1;\n min = value.length;\n\n while (++index < length) {\n name = methods[index];\n\n if (name === 'text' || !tokenizers[name]) {\n continue;\n }\n\n tokenizer = tokenizers[name].locator;\n\n if (!tokenizer) {\n eat.file.fail('Missing locator: `' + name + '`');\n }\n\n position = tokenizer.call(self, value, 1);\n\n if (position !== -1 && position < min) {\n min = position;\n }\n }\n\n subvalue = value.slice(0, min);\n now = eat.now();\n self.decode(subvalue, now, function (content, position, source) {\n eat(source || content)({\n type: 'text',\n value: content\n });\n });\n}","'use strict';\n\nvar trim = require('trim');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = blockquote;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_GT = '>';\n/* Tokenise a blockquote. */\n\nfunction blockquote(eat, value, silent) {\n var self = this;\n var offsets = self.offset;\n var tokenizers = self.blockTokenizers;\n var interruptors = self.interruptBlockquote;\n var now = eat.now();\n var currentLine = now.line;\n var length = value.length;\n var values = [];\n var contents = [];\n var indents = [];\n var add;\n var index = 0;\n var character;\n var rest;\n var nextIndex;\n var content;\n var line;\n var startIndex;\n var prefixed;\n var exit;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n index++;\n }\n\n if (value.charAt(index) !== C_GT) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n index = 0;\n\n while (index < length) {\n nextIndex = value.indexOf(C_NEWLINE, index);\n startIndex = index;\n prefixed = false;\n\n if (nextIndex === -1) {\n nextIndex = length;\n }\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n index++;\n }\n\n if (value.charAt(index) === C_GT) {\n index++;\n prefixed = true;\n\n if (value.charAt(index) === C_SPACE) {\n index++;\n }\n } else {\n index = startIndex;\n }\n\n content = value.slice(index, nextIndex);\n\n if (!prefixed && !trim(content)) {\n index = startIndex;\n break;\n }\n\n if (!prefixed) {\n rest = value.slice(index);\n /* Check if the following code contains a possible\n * block. */\n\n if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) {\n break;\n }\n }\n\n line = startIndex === index ? content : value.slice(startIndex, nextIndex);\n indents.push(index - startIndex);\n values.push(line);\n contents.push(content);\n index = nextIndex + 1;\n }\n\n index = -1;\n length = indents.length;\n add = eat(values.join(C_NEWLINE));\n\n while (++index < length) {\n offsets[currentLine] = (offsets[currentLine] || 0) + indents[index];\n currentLine++;\n }\n\n exit = self.enterBlock();\n contents = self.tokenizeBlock(contents.join(C_NEWLINE), now);\n exit();\n return add({\n type: 'blockquote',\n children: contents\n });\n}","\"use strict\";\n\nvar visit = require('unist-util-visit');\n\nexports.ofType = function (types, mode) {\n return function (node) {\n types.forEach(function (type) {\n return visit(node, type, disallow, true);\n });\n return node;\n };\n\n function disallow(node, index, parent) {\n if (parent) {\n untangle(node, index, parent, mode);\n }\n }\n};\n\nexports.ifNotMatch = function (allowNode, mode) {\n return function (node) {\n visit(node, disallow, true);\n return node;\n };\n\n function disallow(node, index, parent) {\n if (parent && !allowNode(node, index, parent)) {\n untangle(node, index, parent, mode);\n }\n }\n};\n\nfunction untangle(node, index, parent, mode) {\n if (mode === 'remove') {\n parent.children.splice(index, 1);\n } else if (mode === 'unwrap') {\n var args = [index, 1];\n\n if (node.children) {\n args = args.concat(node.children);\n }\n\n Array.prototype.splice.apply(parent.children, args);\n }\n}","'use strict';\n\nvar alphabetical = require('is-alphabetical');\n\nvar locate = require('../locate/tag');\n\nvar tag = require('../util/html').tag;\n\nmodule.exports = inlineHTML;\ninlineHTML.locator = locate;\nvar EXPRESSION_HTML_LINK_OPEN = /^<a /i;\nvar EXPRESSION_HTML_LINK_CLOSE = /^<\\/a>/i;\n\nfunction inlineHTML(eat, value, silent) {\n var self = this;\n var length = value.length;\n var character;\n var subvalue;\n\n if (value.charAt(0) !== '<' || length < 3) {\n return;\n }\n\n character = value.charAt(1);\n\n if (!alphabetical(character) && character !== '?' && character !== '!' && character !== '/') {\n return;\n }\n\n subvalue = value.match(tag);\n\n if (!subvalue) {\n return;\n }\n /* istanbul ignore if - not used yet. */\n\n\n if (silent) {\n return true;\n }\n\n subvalue = subvalue[0];\n\n if (!self.inLink && EXPRESSION_HTML_LINK_OPEN.test(subvalue)) {\n self.inLink = true;\n } else if (self.inLink && EXPRESSION_HTML_LINK_CLOSE.test(subvalue)) {\n self.inLink = false;\n }\n\n return eat(subvalue)({\n type: 'html',\n value: subvalue\n });\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/delete');\n\nmodule.exports = strikethrough;\nstrikethrough.locator = locate;\nvar C_TILDE = '~';\nvar DOUBLE = '~~';\n\nfunction strikethrough(eat, value, silent) {\n var self = this;\n var character = '';\n var previous = '';\n var preceding = '';\n var subvalue = '';\n var index;\n var length;\n var now;\n\n if (!self.options.gfm || value.charAt(0) !== C_TILDE || value.charAt(1) !== C_TILDE || whitespace(value.charAt(2))) {\n return;\n }\n\n index = 1;\n length = value.length;\n now = eat.now();\n now.column += 2;\n now.offset += 2;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === C_TILDE && previous === C_TILDE && (!preceding || !whitespace(preceding))) {\n /* istanbul ignore if - never used (yet) */\n if (silent) {\n return true;\n }\n\n return eat(DOUBLE + subvalue + DOUBLE)({\n type: 'delete',\n children: self.tokenizeInline(subvalue, now)\n });\n }\n\n subvalue += previous;\n preceding = previous;\n previous = character;\n }\n}","'use strict';\n\nvar collapseWhiteSpace = require('collapse-white-space');\n\nmodule.exports = normalize;\n/* Normalize an identifier. Collapses multiple white space\n * characters into a single space, and removes casing. */\n\nfunction normalize(value) {\n return collapseWhiteSpace(value).toLowerCase();\n}","'use strict';\n\nvar repeat = require('repeat-string');\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = indentedCode;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar CODE_INDENT_COUNT = 4;\nvar CODE_INDENT = repeat(C_SPACE, CODE_INDENT_COUNT);\n/* Tokenise indented code. */\n\nfunction indentedCode(eat, value, silent) {\n var index = -1;\n var length = value.length;\n var subvalue = '';\n var content = '';\n var subvalueQueue = '';\n var contentQueue = '';\n var character;\n var blankQueue;\n var indent;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (indent) {\n indent = false;\n subvalue += subvalueQueue;\n content += contentQueue;\n subvalueQueue = '';\n contentQueue = '';\n\n if (character === C_NEWLINE) {\n subvalueQueue = character;\n contentQueue = character;\n } else {\n subvalue += character;\n content += character;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (!character || character === C_NEWLINE) {\n contentQueue = character;\n subvalueQueue = character;\n break;\n }\n\n subvalue += character;\n content += character;\n }\n }\n } else if (character === C_SPACE && value.charAt(index + 1) === character && value.charAt(index + 2) === character && value.charAt(index + 3) === character) {\n subvalueQueue += CODE_INDENT;\n index += 3;\n indent = true;\n } else if (character === C_TAB) {\n subvalueQueue += character;\n indent = true;\n } else {\n blankQueue = '';\n\n while (character === C_TAB || character === C_SPACE) {\n blankQueue += character;\n character = value.charAt(++index);\n }\n\n if (character !== C_NEWLINE) {\n break;\n }\n\n subvalueQueue += blankQueue + character;\n contentQueue += character;\n }\n }\n\n if (content) {\n if (silent) {\n return true;\n }\n\n return eat(subvalue)({\n type: 'code',\n lang: null,\n value: trim(content)\n });\n }\n}","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmb2N1c2FibGU9ImZhbHNlIj4KICA8cGF0aCBkPSJNMTAgMS42NjdBOC4zMzYgOC4zMzYgMCAwMDEuNjY3IDEwYzAgMy42ODMgMi4zOTEgNi44MDggNS43IDcuOTE3LjQxNi4wNjYuNTUtLjE5Mi41NS0uNDE3di0xLjQwOGMtMi4zMDkuNS0yLjgtMS4xMTctMi44LTEuMTE3LS4zODQtLjk2Ny0uOTI1LTEuMjI1LS45MjUtMS4yMjUtLjc1OS0uNTE3LjA1OC0uNS4wNTgtLjUuODMzLjA1OCAxLjI3NS44NTggMS4yNzUuODU4LjcyNSAxLjI2NyAxLjk1Ljg5MiAyLjQyNS42OTIuMDc1LS41NDIuMjkyLS45MDguNTI1LTEuMTE3LTEuODUtLjIwOC0zLjc5Mi0uOTI1LTMuNzkyLTQuMSAwLS45MjUuMzE3LTEuNjY2Ljg1OS0yLjI1OC0uMDg0LS4yMDgtLjM3NS0xLjA3NS4wODMtMi4yIDAgMCAuNy0uMjI1IDIuMjkyLjg1QTcuODUyIDcuODUyIDAgMDExMCA1LjdjLjcwOCAwIDEuNDI1LjA5MiAyLjA4My4yNzUgMS41OTItMS4wNzUgMi4yOTItLjg1IDIuMjkyLS44NS40NTggMS4xMjUuMTY3IDEuOTkyLjA4MyAyLjIuNTQyLjU5Mi44NTkgMS4zMzMuODU5IDIuMjU4IDAgMy4xODQtMS45NSAzLjg4NC0zLjgwOSA0LjA5Mi4zLjI1OC41NzUuNzY3LjU3NSAxLjU0MlYxNy41YzAgLjIyNS4xMzQuNDkyLjU1OS40MTdDMTUuOTUgMTYuOCAxOC4zMzMgMTMuNjgzIDE4LjMzMyAxMGMwLTQuNi0zLjczMy04LjMzMy04LjMzMy04LjMzM3oiIGZpbGw9IiM2MzkiLz4KPC9zdmc+Cg==\"","module.exports = AlgoliaSearch;\n\nvar Index = require('./Index.js');\n\nvar deprecate = require('./deprecate.js');\n\nvar deprecatedMessage = require('./deprecatedMessage.js');\n\nvar AlgoliaSearchCore = require('./AlgoliaSearchCore.js');\n\nvar inherits = require('inherits');\n\nvar errors = require('./errors');\n\nfunction AlgoliaSearch() {\n AlgoliaSearchCore.apply(this, arguments);\n}\n\ninherits(AlgoliaSearch, AlgoliaSearchCore);\n/*\n * Delete an index\n *\n * @param indexName the name of index to delete\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer that contains the task ID\n */\n\nAlgoliaSearch.prototype.deleteIndex = function (indexName, callback) {\n return this._jsonRequest({\n method: 'DELETE',\n url: '/1/indexes/' + encodeURIComponent(indexName),\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Move an existing index.\n * @param srcIndexName the name of index to copy.\n * @param dstIndexName the new index name that will contains a copy of\n * srcIndexName (destination will be overriten if it already exist).\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer that contains the task ID\n */\n\n\nAlgoliaSearch.prototype.moveIndex = function (srcIndexName, dstIndexName, callback) {\n var postObj = {\n operation: 'move',\n destination: dstIndexName\n };\n return this._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(srcIndexName) + '/operation',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Copy an existing index.\n * @param srcIndexName the name of index to copy.\n * @param dstIndexName the new index name that will contains a copy\n * of srcIndexName (destination will be overriten if it already exist).\n * @param scope an array of scopes to copy: ['settings', 'synonyms', 'rules']\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer that contains the task ID\n */\n\n\nAlgoliaSearch.prototype.copyIndex = function (srcIndexName, dstIndexName, scopeOrCallback, _callback) {\n var postObj = {\n operation: 'copy',\n destination: dstIndexName\n };\n var callback = _callback;\n\n if (typeof scopeOrCallback === 'function') {\n // oops, old behaviour of third argument being a function\n callback = scopeOrCallback;\n } else if (Array.isArray(scopeOrCallback) && scopeOrCallback.length > 0) {\n postObj.scope = scopeOrCallback;\n } else if (typeof scopeOrCallback !== 'undefined') {\n throw new Error('the scope given to `copyIndex` was not an array with settings, synonyms or rules');\n }\n\n return this._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(srcIndexName) + '/operation',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Return last log entries.\n * @param offset Specify the first entry to retrieve (0-based, 0 is the most recent log entry).\n * @param length Specify the maximum number of entries to retrieve starting\n * at offset. Maximum allowed value: 1000.\n * @param type Specify the maximum number of entries to retrieve starting\n * at offset. Maximum allowed value: 1000.\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer that contains the task ID\n */\n\n\nAlgoliaSearch.prototype.getLogs = function (offset, length, callback) {\n var clone = require('./clone.js');\n\n var params = {};\n\n if (typeof offset === 'object') {\n // getLogs(params)\n params = clone(offset);\n callback = length;\n } else if (arguments.length === 0 || typeof offset === 'function') {\n // getLogs([cb])\n callback = offset;\n } else if (arguments.length === 1 || typeof length === 'function') {\n // getLogs(1, [cb)]\n callback = length;\n params.offset = offset;\n } else {\n // getLogs(1, 2, [cb])\n params.offset = offset;\n params.length = length;\n }\n\n if (params.offset === undefined) params.offset = 0;\n if (params.length === undefined) params.length = 10;\n return this._jsonRequest({\n method: 'GET',\n url: '/1/logs?' + this._getSearchParams(params, ''),\n hostType: 'read',\n callback: callback\n });\n};\n/*\n * List all existing indexes (paginated)\n *\n * @param page The page to retrieve, starting at 0.\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with index list\n */\n\n\nAlgoliaSearch.prototype.listIndexes = function (page, callback) {\n var params = '';\n\n if (page === undefined || typeof page === 'function') {\n callback = page;\n } else {\n params = '?page=' + page;\n }\n\n return this._jsonRequest({\n method: 'GET',\n url: '/1/indexes' + params,\n hostType: 'read',\n callback: callback\n });\n};\n/*\n * Get the index object initialized\n *\n * @param indexName the name of index\n * @param callback the result callback with one argument (the Index instance)\n */\n\n\nAlgoliaSearch.prototype.initIndex = function (indexName) {\n return new Index(this, indexName);\n};\n\nAlgoliaSearch.prototype.initAnalytics = function (opts) {\n // the actual require must be inside the function, when put outside then you have a cyclic dependency\n // not well resolved that ends up making the main \"./index.js\" (main module, the agloliasearch function)\n // export an object instead of a function\n // Other workarounds:\n // - rewrite the lib in ES6, cyclic dependencies may be better supported\n // - move initAnalytics to a property on the main module (algoliasearch.initAnalytics),\n // same as places.\n // The current API was made mostly to mimic the one made in PHP\n var createAnalyticsClient = require('./createAnalyticsClient.js');\n\n return createAnalyticsClient(this.applicationID, this.apiKey, opts);\n};\n/*\n * @deprecated use client.listApiKeys\n */\n\n\nAlgoliaSearch.prototype.listUserKeys = deprecate(function (callback) {\n return this.listApiKeys(callback);\n}, deprecatedMessage('client.listUserKeys()', 'client.listApiKeys()'));\n/*\n * List all existing api keys with their associated ACLs\n *\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with api keys list\n */\n\nAlgoliaSearch.prototype.listApiKeys = function (callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/keys',\n hostType: 'read',\n callback: callback\n });\n};\n/*\n * @deprecated see client.getApiKey\n */\n\n\nAlgoliaSearch.prototype.getUserKeyACL = deprecate(function (key, callback) {\n return this.getApiKey(key, callback);\n}, deprecatedMessage('client.getUserKeyACL()', 'client.getApiKey()'));\n/*\n * Get an API key\n *\n * @param key\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with the right API key\n */\n\nAlgoliaSearch.prototype.getApiKey = function (key, callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/keys/' + key,\n hostType: 'read',\n callback: callback\n });\n};\n/*\n * @deprecated see client.deleteApiKey\n */\n\n\nAlgoliaSearch.prototype.deleteUserKey = deprecate(function (key, callback) {\n return this.deleteApiKey(key, callback);\n}, deprecatedMessage('client.deleteUserKey()', 'client.deleteApiKey()'));\n/*\n * Delete an existing API key\n * @param key\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with the date of deletion\n */\n\nAlgoliaSearch.prototype.deleteApiKey = function (key, callback) {\n return this._jsonRequest({\n method: 'DELETE',\n url: '/1/keys/' + key,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Restore a deleted API key\n *\n * @param {String} key - The key to restore\n * @param {Function} callback - The result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with the restored API key\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.restoreApiKey('APIKEY')\n * @see {@link https://www.algolia.com/doc/rest-api/search/#restore-api-key|Algolia REST API Documentation}\n */\n\n\nAlgoliaSearch.prototype.restoreApiKey = function (key, callback) {\n return this._jsonRequest({\n method: 'POST',\n url: '/1/keys/' + key + '/restore',\n hostType: 'write',\n callback: callback\n });\n};\n/*\n @deprecated see client.addApiKey\n */\n\n\nAlgoliaSearch.prototype.addUserKey = deprecate(function (acls, params, callback) {\n return this.addApiKey(acls, params, callback);\n}, deprecatedMessage('client.addUserKey()', 'client.addApiKey()'));\n/*\n * Add a new global API key\n *\n * @param {string[]} acls - The list of ACL for this key. Defined by an array of strings that\n * can contains the following values:\n * - search: allow to search (https and http)\n * - addObject: allows to add/update an object in the index (https only)\n * - deleteObject : allows to delete an existing object (https only)\n * - deleteIndex : allows to delete index content (https only)\n * - settings : allows to get index settings (https only)\n * - editSettings : allows to change index settings (https only)\n * @param {Object} [params] - Optionnal parameters to set for the key\n * @param {number} params.validity - Number of seconds after which the key will be automatically removed (0 means no time limit for this key)\n * @param {number} params.maxQueriesPerIPPerHour - Number of API calls allowed from an IP address per hour\n * @param {number} params.maxHitsPerQuery - Number of hits this API key can retrieve in one call\n * @param {string[]} params.indexes - Allowed targeted indexes for this key\n * @param {string} params.description - A description for your key\n * @param {string[]} params.referers - A list of authorized referers\n * @param {Object} params.queryParameters - Force the key to use specific query parameters\n * @param {Function} callback - The result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with the added API key\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.addApiKey(['search'], {\n * validity: 300,\n * maxQueriesPerIPPerHour: 2000,\n * maxHitsPerQuery: 3,\n * indexes: ['fruits'],\n * description: 'Eat three fruits',\n * referers: ['*.algolia.com'],\n * queryParameters: {\n * tagFilters: ['public'],\n * }\n * })\n * @see {@link https://www.algolia.com/doc/rest_api#AddKey|Algolia REST API Documentation}\n */\n\nAlgoliaSearch.prototype.addApiKey = function (acls, params, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: client.addApiKey(arrayOfAcls[, params, callback])';\n\n if (!isArray(acls)) {\n throw new Error(usage);\n }\n\n if (arguments.length === 1 || typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n var postObj = {\n acl: acls\n };\n\n if (params) {\n postObj.validity = params.validity;\n postObj.maxQueriesPerIPPerHour = params.maxQueriesPerIPPerHour;\n postObj.maxHitsPerQuery = params.maxHitsPerQuery;\n postObj.indexes = params.indexes;\n postObj.description = params.description;\n\n if (params.queryParameters) {\n postObj.queryParameters = this._getSearchParams(params.queryParameters, '');\n }\n\n postObj.referers = params.referers;\n }\n\n return this._jsonRequest({\n method: 'POST',\n url: '/1/keys',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * @deprecated Please use client.addApiKey()\n */\n\n\nAlgoliaSearch.prototype.addUserKeyWithValidity = deprecate(function (acls, params, callback) {\n return this.addApiKey(acls, params, callback);\n}, deprecatedMessage('client.addUserKeyWithValidity()', 'client.addApiKey()'));\n/**\n * @deprecated Please use client.updateApiKey()\n */\n\nAlgoliaSearch.prototype.updateUserKey = deprecate(function (key, acls, params, callback) {\n return this.updateApiKey(key, acls, params, callback);\n}, deprecatedMessage('client.updateUserKey()', 'client.updateApiKey()'));\n/**\n * Update an existing API key\n * @param {string} key - The key to update\n * @param {string[]} acls - The list of ACL for this key. Defined by an array of strings that\n * can contains the following values:\n * - search: allow to search (https and http)\n * - addObject: allows to add/update an object in the index (https only)\n * - deleteObject : allows to delete an existing object (https only)\n * - deleteIndex : allows to delete index content (https only)\n * - settings : allows to get index settings (https only)\n * - editSettings : allows to change index settings (https only)\n * @param {Object} [params] - Optionnal parameters to set for the key\n * @param {number} params.validity - Number of seconds after which the key will be automatically removed (0 means no time limit for this key)\n * @param {number} params.maxQueriesPerIPPerHour - Number of API calls allowed from an IP address per hour\n * @param {number} params.maxHitsPerQuery - Number of hits this API key can retrieve in one call\n * @param {string[]} params.indexes - Allowed targeted indexes for this key\n * @param {string} params.description - A description for your key\n * @param {string[]} params.referers - A list of authorized referers\n * @param {Object} params.queryParameters - Force the key to use specific query parameters\n * @param {Function} callback - The result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with the modified API key\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.updateApiKey('APIKEY', ['search'], {\n * validity: 300,\n * maxQueriesPerIPPerHour: 2000,\n * maxHitsPerQuery: 3,\n * indexes: ['fruits'],\n * description: 'Eat three fruits',\n * referers: ['*.algolia.com'],\n * queryParameters: {\n * tagFilters: ['public'],\n * }\n * })\n * @see {@link https://www.algolia.com/doc/rest_api#UpdateIndexKey|Algolia REST API Documentation}\n */\n\nAlgoliaSearch.prototype.updateApiKey = function (key, acls, params, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: client.updateApiKey(key, arrayOfAcls[, params, callback])';\n\n if (!isArray(acls)) {\n throw new Error(usage);\n }\n\n if (arguments.length === 2 || typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n var putObj = {\n acl: acls\n };\n\n if (params) {\n putObj.validity = params.validity;\n putObj.maxQueriesPerIPPerHour = params.maxQueriesPerIPPerHour;\n putObj.maxHitsPerQuery = params.maxHitsPerQuery;\n putObj.indexes = params.indexes;\n putObj.description = params.description;\n\n if (params.queryParameters) {\n putObj.queryParameters = this._getSearchParams(params.queryParameters, '');\n }\n\n putObj.referers = params.referers;\n }\n\n return this._jsonRequest({\n method: 'PUT',\n url: '/1/keys/' + key,\n body: putObj,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Initialize a new batch of search queries\n * @deprecated use client.search()\n */\n\n\nAlgoliaSearch.prototype.startQueriesBatch = deprecate(function startQueriesBatchDeprecated() {\n this._batch = [];\n}, deprecatedMessage('client.startQueriesBatch()', 'client.search()'));\n/**\n * Add a search query in the batch\n * @deprecated use client.search()\n */\n\nAlgoliaSearch.prototype.addQueryInBatch = deprecate(function addQueryInBatchDeprecated(indexName, query, args) {\n this._batch.push({\n indexName: indexName,\n query: query,\n params: args\n });\n}, deprecatedMessage('client.addQueryInBatch()', 'client.search()'));\n/**\n * Launch the batch of queries using XMLHttpRequest.\n * @deprecated use client.search()\n */\n\nAlgoliaSearch.prototype.sendQueriesBatch = deprecate(function sendQueriesBatchDeprecated(callback) {\n return this.search(this._batch, callback);\n}, deprecatedMessage('client.sendQueriesBatch()', 'client.search()'));\n/**\n * Perform write operations across multiple indexes.\n *\n * To reduce the amount of time spent on network round trips,\n * you can create, update, or delete several objects in one call,\n * using the batch endpoint (all operations are done in the given order).\n *\n * Available actions:\n * - addObject\n * - updateObject\n * - partialUpdateObject\n * - partialUpdateObjectNoCreate\n * - deleteObject\n *\n * https://www.algolia.com/doc/rest_api#Indexes\n * @param {Object[]} operations An array of operations to perform\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.batch([{\n * action: 'addObject',\n * indexName: 'clients',\n * body: {\n * name: 'Bill'\n * }\n * }, {\n * action: 'udpateObject',\n * indexName: 'fruits',\n * body: {\n * objectID: '29138',\n * name: 'banana'\n * }\n * }], cb)\n */\n\nAlgoliaSearch.prototype.batch = function (operations, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: client.batch(operations[, callback])';\n\n if (!isArray(operations)) {\n throw new Error(usage);\n }\n\n return this._jsonRequest({\n method: 'POST',\n url: '/1/indexes/*/batch',\n body: {\n requests: operations\n },\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Assign or Move a userID to a cluster\n *\n * @param {string} data.userID The userID to assign to a new cluster\n * @param {string} data.cluster The cluster to assign the user to\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.assignUserID({ cluster: 'c1-test', userID: 'some-user' });\n */\n\n\nAlgoliaSearch.prototype.assignUserID = function (data, callback) {\n if (!data.userID || !data.cluster) {\n throw new errors.AlgoliaSearchError('You have to provide both a userID and cluster', data);\n }\n\n return this._jsonRequest({\n method: 'POST',\n url: '/1/clusters/mapping',\n hostType: 'write',\n body: {\n cluster: data.cluster\n },\n callback: callback,\n headers: {\n 'x-algolia-user-id': data.userID\n }\n });\n};\n/**\n * Assign a array of userIDs to a cluster.\n *\n * @param {Array} data.userIDs The array of userIDs to assign to a new cluster\n * @param {string} data.cluster The cluster to assign the user to\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.assignUserIDs({ cluster: 'c1-test', userIDs: ['some-user-1', 'some-user-2'] });\n */\n\n\nAlgoliaSearch.prototype.assignUserIDs = function (data, callback) {\n if (!data.userIDs || !data.cluster) {\n throw new errors.AlgoliaSearchError('You have to provide both an array of userIDs and cluster', data);\n }\n\n return this._jsonRequest({\n method: 'POST',\n url: '/1/clusters/mapping/batch',\n hostType: 'write',\n body: {\n cluster: data.cluster,\n users: data.userIDs\n },\n callback: callback\n });\n};\n/**\n * Get the top userIDs\n *\n * (the callback is the second argument)\n *\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.getTopUserID();\n */\n\n\nAlgoliaSearch.prototype.getTopUserID = function (callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/clusters/mapping/top',\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * Get userID\n *\n * @param {string} data.userID The userID to get info about\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.getUserID({ userID: 'some-user' });\n */\n\n\nAlgoliaSearch.prototype.getUserID = function (data, callback) {\n if (!data.userID) {\n throw new errors.AlgoliaSearchError('You have to provide a userID', {\n debugData: data\n });\n }\n\n return this._jsonRequest({\n method: 'GET',\n url: '/1/clusters/mapping/' + data.userID,\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * List all the clusters\n *\n * (the callback is the second argument)\n *\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.listClusters();\n */\n\n\nAlgoliaSearch.prototype.listClusters = function (callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/clusters',\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * List the userIDs\n *\n * (the callback is the second argument)\n *\n * @param {string} data.hitsPerPage How many hits on every page\n * @param {string} data.page The page to retrieve\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.listClusters();\n * client.listClusters({ page: 3, hitsPerPage: 30});\n */\n\n\nAlgoliaSearch.prototype.listUserIDs = function (data, callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/clusters/mapping',\n body: data,\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * Remove an userID\n *\n * @param {string} data.userID The userID to assign to a new cluster\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.removeUserID({ userID: 'some-user' });\n */\n\n\nAlgoliaSearch.prototype.removeUserID = function (data, callback) {\n if (!data.userID) {\n throw new errors.AlgoliaSearchError('You have to provide a userID', {\n debugData: data\n });\n }\n\n return this._jsonRequest({\n method: 'DELETE',\n url: '/1/clusters/mapping',\n hostType: 'write',\n callback: callback,\n headers: {\n 'x-algolia-user-id': data.userID\n }\n });\n};\n/**\n * Search for userIDs\n *\n * @param {string} data.cluster The cluster to target\n * @param {string} data.query The query to execute\n * @param {string} data.hitsPerPage How many hits on every page\n * @param {string} data.page The page to retrieve\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.searchUserIDs({ cluster: 'c1-test', query: 'some-user' });\n * client.searchUserIDs({\n * cluster: \"c1-test\",\n * query: \"some-user\",\n * page: 3,\n * hitsPerPage: 2\n * });\n */\n\n\nAlgoliaSearch.prototype.searchUserIDs = function (data, callback) {\n return this._jsonRequest({\n method: 'POST',\n url: '/1/clusters/mapping/search',\n body: data,\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * Set strategy for personalization\n *\n * @param {Object} data\n * @param {Object} data.eventsScoring Associate a score to an event\n * @param {Object} data.eventsScoring.<eventName> The name of the event\n * @param {Number} data.eventsScoring.<eventName>.score The score to associate to <eventName>\n * @param {String} data.eventsScoring.<eventName>.type Either \"click\", \"conversion\" or \"view\"\n * @param {Object} data.facetsScoring Associate a score to a facet\n * @param {Object} data.facetsScoring.<facetName> The name of the facet\n * @param {Number} data.facetsScoring.<facetName>.score The score to associate to <facetName>\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.setPersonalizationStrategy({\n * eventsScoring: {\n * \"Add to cart\": { score: 50, type: \"conversion\" },\n * Purchase: { score: 100, type: \"conversion\" }\n * },\n * facetsScoring: {\n * brand: { score: 100 },\n * categories: { score: 10 }\n * }\n * });\n */\n\n\nAlgoliaSearch.prototype.setPersonalizationStrategy = function (data, callback) {\n return this._jsonRequest({\n method: 'POST',\n url: '/1/recommendation/personalization/strategy',\n body: data,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Get strategy for personalization\n *\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.getPersonalizationStrategy();\n */\n\n\nAlgoliaSearch.prototype.getPersonalizationStrategy = function (callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/recommendation/personalization/strategy',\n hostType: 'read',\n callback: callback\n });\n}; // environment specific methods\n\n\nAlgoliaSearch.prototype.destroy = notImplemented;\nAlgoliaSearch.prototype.enableRateLimitForward = notImplemented;\nAlgoliaSearch.prototype.disableRateLimitForward = notImplemented;\nAlgoliaSearch.prototype.useSecuredAPIKey = notImplemented;\nAlgoliaSearch.prototype.disableSecuredAPIKey = notImplemented;\nAlgoliaSearch.prototype.generateSecuredApiKey = notImplemented;\nAlgoliaSearch.prototype.getSecuredApiKeyRemainingValidity = notImplemented;\n\nfunction notImplemented() {\n var message = 'Not implemented in this environment.\\n' + 'If you feel this is a mistake, write to support@algolia.com';\n throw new errors.AlgoliaSearchError(message);\n}","'use strict';\n/* Expose. */\n\nmodule.exports = visitParents;\n/* Visit. */\n\nfunction visitParents(tree, type, visitor) {\n var stack = [];\n\n if (typeof type === 'function') {\n visitor = type;\n type = null;\n }\n\n one(tree);\n /* Visit a single node. */\n\n function one(node) {\n var result;\n\n if (!type || node.type === type) {\n result = visitor(node, stack.concat());\n }\n\n if (node.children && result !== false) {\n return all(node.children, node);\n }\n\n return result;\n }\n /* Visit children in `parent`. */\n\n\n function all(children, parent) {\n var length = children.length;\n var index = -1;\n var child;\n stack.push(parent);\n\n while (++index < length) {\n child = children[index];\n\n if (child && one(child) === false) {\n return false;\n }\n }\n\n stack.pop();\n return true;\n }\n}","'use strict';\n\nvar openCloseTag = require('../util/html').openCloseTag;\n\nmodule.exports = blockHTML;\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_LT = '<';\n\nfunction blockHTML(eat, value, silent) {\n var self = this;\n var blocks = self.options.blocks;\n var length = value.length;\n var index = 0;\n var next;\n var line;\n var offset;\n var character;\n var count;\n var sequence;\n var subvalue;\n var sequences = [[/^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true], [/^<!--/, /-->/, true], [/^<\\?/, /\\?>/, true], [/^<![A-Za-z]/, />/, true], [/^<!\\[CDATA\\[/, /\\]\\]>/, true], [new RegExp('^</?(' + blocks.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true], [new RegExp(openCloseTag.source + '\\\\s*$'), /^$/, false]];\n /* Eat initial spacing. */\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n index++;\n }\n\n if (value.charAt(index) !== C_LT) {\n return;\n }\n\n next = value.indexOf(C_NEWLINE, index + 1);\n next = next === -1 ? length : next;\n line = value.slice(index, next);\n offset = -1;\n count = sequences.length;\n\n while (++offset < count) {\n if (sequences[offset][0].test(line)) {\n sequence = sequences[offset];\n break;\n }\n }\n\n if (!sequence) {\n return;\n }\n\n if (silent) {\n return sequence[2];\n }\n\n index = next;\n\n if (!sequence[1].test(line)) {\n while (index < length) {\n next = value.indexOf(C_NEWLINE, index + 1);\n next = next === -1 ? length : next;\n line = value.slice(index + 1, next);\n\n if (sequence[1].test(line)) {\n if (line) {\n index = next;\n }\n\n break;\n }\n\n index = next;\n }\n }\n\n subvalue = value.slice(0, index);\n return eat(subvalue)({\n type: 'html',\n value: subvalue\n });\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('<', fromIndex);\n}","'use strict';\n\nmodule.exports = factory;\n/* Factory to de-escape a value, based on a list at `key`\n * in `ctx`. */\n\nfunction factory(ctx, key) {\n return unescape;\n /* De-escape a string using the expression at `key`\n * in `ctx`. */\n\n function unescape(value) {\n var prev = 0;\n var index = value.indexOf('\\\\');\n var escape = ctx[key];\n var queue = [];\n var character;\n\n while (index !== -1) {\n queue.push(value.slice(prev, index));\n prev = index + 1;\n character = value.charAt(prev);\n /* If the following character is not a valid escape,\n * add the slash. */\n\n if (!character || escape.indexOf(character) === -1) {\n queue.push('\\\\');\n }\n\n index = value.indexOf('\\\\', prev);\n }\n\n queue.push(value.slice(prev));\n return queue.join('');\n }\n}","import React, { useRef, useState, useMemo, useEffect, memo, useContext, Children } from 'react';\nimport { useDescendantsInit, DescendantProvider, useDescendant, createDescendantContext, useDescendants, useDescendantKeyDown } from '@reach/descendants';\nimport { forwardRefWithAs, useControlledSwitchWarning, makeId, useControlledState, noop, checkStyles, isFunction, isNumber, useForkedRef, useUpdateEffect, useEventCallback, wrapEvent, createNamedContext, getElementComputedStyle, useIsomorphicLayoutEffect, boolOrBoolString, cloneValidElement } from '@reach/utils';\nimport { useId } from '@reach/auto-id';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar TabsDescendantsContext = /*#__PURE__*/createDescendantContext(\"TabsDescendantsContext\");\nvar TabPanelDescendantsContext = /*#__PURE__*/createDescendantContext(\"TabPanelDescendantsContext\");\nvar TabsContext = /*#__PURE__*/createNamedContext(\"TabsContext\", {});\nvar TabsKeyboardActivation;\n\n(function (TabsKeyboardActivation) {\n TabsKeyboardActivation[\"Auto\"] = \"auto\";\n TabsKeyboardActivation[\"Manual\"] = \"manual\";\n})(TabsKeyboardActivation || (TabsKeyboardActivation = {}));\n\nvar TabsOrientation;\n\n(function (TabsOrientation) {\n TabsOrientation[\"Horizontal\"] = \"horizontal\";\n TabsOrientation[\"Vertical\"] = \"vertical\";\n})(TabsOrientation || (TabsOrientation = {})); ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * Tabs\r\n *\r\n * The parent component of the tab interface.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#tabs\r\n */\n\n\nvar Tabs = /*#__PURE__*/forwardRefWithAs(function Tabs(_ref, ref) {\n var _props$id;\n\n var _ref$as = _ref.as,\n Comp = _ref$as === void 0 ? \"div\" : _ref$as,\n children = _ref.children,\n defaultIndex = _ref.defaultIndex,\n _ref$orientation = _ref.orientation,\n orientation = _ref$orientation === void 0 ? TabsOrientation.Horizontal : _ref$orientation,\n _ref$index = _ref.index,\n controlledIndex = _ref$index === void 0 ? undefined : _ref$index,\n _ref$keyboardActivati = _ref.keyboardActivation,\n keyboardActivation = _ref$keyboardActivati === void 0 ? TabsKeyboardActivation.Auto : _ref$keyboardActivati,\n onChange = _ref.onChange,\n _ref$readOnly = _ref.readOnly,\n readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,\n props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"children\", \"defaultIndex\", \"orientation\", \"index\", \"keyboardActivation\", \"onChange\", \"readOnly\"]);\n\n var isControlled = useRef(controlledIndex != null);\n useControlledSwitchWarning(controlledIndex, \"index\", \"Tabs\");\n\n var _id = useId(props.id);\n\n var id = (_props$id = props.id) !== null && _props$id !== void 0 ? _props$id : makeId(\"tabs\", _id); // We only manage focus if the user caused the update vs. a new controlled\n // index coming in.\n\n var userInteractedRef = useRef(false);\n var selectedPanelRef = useRef(null);\n var isRTL = useRef(false);\n\n var _useControlledState = useControlledState(controlledIndex, defaultIndex !== null && defaultIndex !== void 0 ? defaultIndex : 0),\n selectedIndex = _useControlledState[0],\n setSelectedIndex = _useControlledState[1];\n\n var _useState = useState(-1),\n focusedIndex = _useState[0],\n setFocusedIndex = _useState[1];\n\n var _useDescendantsInit = useDescendantsInit(),\n tabs = _useDescendantsInit[0],\n setTabs = _useDescendantsInit[1];\n\n var context = useMemo(function () {\n return {\n focusedIndex: focusedIndex,\n id: id,\n isControlled: isControlled.current,\n isRTL: isRTL,\n keyboardActivation: keyboardActivation,\n onFocusPanel: function onFocusPanel() {\n var _selectedPanelRef$cur;\n\n (_selectedPanelRef$cur = selectedPanelRef.current) === null || _selectedPanelRef$cur === void 0 ? void 0 : _selectedPanelRef$cur.focus();\n },\n onSelectTab: readOnly ? noop : function (index) {\n userInteractedRef.current = true;\n onChange && onChange(index);\n setSelectedIndex(index);\n },\n onSelectTabWithKeyboard: readOnly ? noop : function (index) {\n var _tabs$index$element;\n\n userInteractedRef.current = true;\n\n switch (keyboardActivation) {\n case TabsKeyboardActivation.Manual:\n (_tabs$index$element = tabs[index].element) === null || _tabs$index$element === void 0 ? void 0 : _tabs$index$element.focus();\n return;\n\n case TabsKeyboardActivation.Auto:\n default:\n onChange && onChange(index);\n setSelectedIndex(index);\n return;\n }\n },\n orientation: orientation,\n selectedIndex: selectedIndex,\n selectedPanelRef: selectedPanelRef,\n setFocusedIndex: setFocusedIndex,\n setSelectedIndex: setSelectedIndex,\n userInteractedRef: userInteractedRef\n };\n }, [focusedIndex, id, keyboardActivation, onChange, orientation, readOnly, selectedIndex, setSelectedIndex, tabs]);\n useEffect(function () {\n return checkStyles(\"tabs\");\n }, []);\n return React.createElement(DescendantProvider, {\n context: TabsDescendantsContext,\n items: tabs,\n set: setTabs\n }, React.createElement(TabsContext.Provider, {\n value: context\n }, React.createElement(Comp, Object.assign({}, props, {\n ref: ref,\n \"data-reach-tabs\": \"\",\n \"data-orientation\": orientation,\n id: props.id\n }), isFunction(children) ? children({\n focusedIndex: focusedIndex,\n id: id,\n selectedIndex: selectedIndex\n }) : children)));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n Tabs.displayName = \"Tabs\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * TabList\r\n *\r\n * The parent component of the tabs.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#tablist\r\n */\n\n\nvar TabListImpl = /*#__PURE__*/forwardRefWithAs(function TabList(_ref2, forwardedRef) {\n var children = _ref2.children,\n _ref2$as = _ref2.as,\n Comp = _ref2$as === void 0 ? \"div\" : _ref2$as,\n onKeyDown = _ref2.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref2, [\"children\", \"as\", \"onKeyDown\"]);\n\n var _useContext = useContext(TabsContext),\n focusedIndex = _useContext.focusedIndex,\n isControlled = _useContext.isControlled,\n isRTL = _useContext.isRTL,\n keyboardActivation = _useContext.keyboardActivation,\n onSelectTabWithKeyboard = _useContext.onSelectTabWithKeyboard,\n orientation = _useContext.orientation,\n selectedIndex = _useContext.selectedIndex,\n setSelectedIndex = _useContext.setSelectedIndex;\n\n var tabs = useDescendants(TabsDescendantsContext);\n var ownRef = useRef(null);\n var ref = useForkedRef(forwardedRef, ownRef);\n useEffect(function () {\n if (ownRef.current && (ownRef.current.ownerDocument && ownRef.current.ownerDocument.dir === \"rtl\" || getElementComputedStyle(ownRef.current, \"direction\") === \"rtl\")) {\n isRTL.current = true;\n }\n }, [isRTL]);\n var handleKeyDown = useEventCallback(wrapEvent(onKeyDown, useDescendantKeyDown(TabsDescendantsContext, {\n currentIndex: keyboardActivation === TabsKeyboardActivation.Manual ? focusedIndex : selectedIndex,\n orientation: orientation,\n rotate: true,\n callback: onSelectTabWithKeyboard,\n filter: function filter(tab) {\n return !tab.disabled;\n },\n rtl: isRTL.current\n })));\n useIsomorphicLayoutEffect(function () {\n var _tabs$selectedIndex; // In the event an uncontrolled component's selected index is disabled,\n // (this should only happen if the first tab is disabled and no default\n // index is set), we need to override the selection to the next selectable\n // index value.\n\n\n if (!isControlled && boolOrBoolString((_tabs$selectedIndex = tabs[selectedIndex]) === null || _tabs$selectedIndex === void 0 ? void 0 : _tabs$selectedIndex.disabled)) {\n var next = tabs.find(function (tab) {\n return !tab.disabled;\n });\n\n if (next) {\n setSelectedIndex(next.index);\n }\n }\n }, [tabs, isControlled, selectedIndex, setSelectedIndex]);\n return React.createElement(Comp // The element that serves as the container for the set of tabs has role\n // `tablist`\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tabpanel\n , Object.assign({\n // The element that serves as the container for the set of tabs has role\n // `tablist`\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tabpanel\n role: \"tablist\",\n \"aria-orientation\": orientation\n }, props, {\n \"data-reach-tab-list\": \"\",\n ref: ref,\n onKeyDown: handleKeyDown\n }), Children.map(children, function (child, index) {\n // TODO: Remove in 1.0\n return cloneValidElement(child, {\n isSelected: index === selectedIndex\n });\n }));\n});\nvar TabList = /*#__PURE__*/memo(TabListImpl);\n\nif (process.env.NODE_ENV !== \"production\") {\n TabList.displayName = \"TabList\";\n TabListImpl.displayName = \"TabList\";\n}\n/**\r\n * Tab\r\n *\r\n * The interactive element that changes the selected panel.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#tab\r\n */\n\n\nvar Tab = /*#__PURE__*/forwardRefWithAs(function Tab(_ref3, forwardedRef) {\n var children = _ref3.children,\n _ = _ref3.isSelected,\n _ref3$as = _ref3.as,\n Comp = _ref3$as === void 0 ? \"button\" : _ref3$as,\n indexProp = _ref3.index,\n disabled = _ref3.disabled,\n onBlur = _ref3.onBlur,\n onFocus = _ref3.onFocus,\n props = _objectWithoutPropertiesLoose(_ref3, [\"children\", \"isSelected\", \"as\", \"index\", \"disabled\", \"onBlur\", \"onFocus\"]);\n\n var _useContext2 = useContext(TabsContext),\n tabsId = _useContext2.id,\n onSelectTab = _useContext2.onSelectTab,\n orientation = _useContext2.orientation,\n selectedIndex = _useContext2.selectedIndex,\n userInteractedRef = _useContext2.userInteractedRef,\n setFocusedIndex = _useContext2.setFocusedIndex;\n\n var ownRef = useRef(null);\n var ref = useForkedRef(forwardedRef, ownRef);\n var index = useDescendant({\n element: ownRef.current,\n disabled: !!disabled\n }, TabsDescendantsContext, indexProp);\n var htmlType = Comp === \"button\" && props.type == null ? \"button\" : props.type;\n var isSelected = index === selectedIndex;\n\n function onSelect() {\n onSelectTab(index);\n }\n\n useUpdateEffect(function () {\n if (isSelected && ownRef.current && userInteractedRef.current) {\n userInteractedRef.current = false;\n ownRef.current.focus();\n }\n }, [isSelected, userInteractedRef]);\n var handleFocus = useEventCallback(wrapEvent(onFocus, function () {\n setFocusedIndex(index);\n }));\n var handleBlur = useEventCallback(wrapEvent(onFocus, function () {\n setFocusedIndex(-1);\n }));\n return React.createElement(Comp // Each element with role `tab` has the property `aria-controls` referring\n // to its associated `tabpanel` element.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tabpanel\n , Object.assign({\n \"aria-controls\": makeId(tabsId, \"panel\", index),\n \"aria-disabled\": disabled,\n \"aria-selected\": isSelected,\n // Each element that serves as a tab has role `tab` and is contained\n // within the element with role `tablist`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tabpanel\n role: \"tab\",\n tabIndex: isSelected ? 0 : -1\n }, props, {\n ref: ref,\n \"data-reach-tab\": \"\",\n \"data-orientation\": orientation,\n \"data-selected\": isSelected ? \"\" : undefined,\n disabled: disabled,\n id: makeId(tabsId, \"tab\", index),\n onClick: onSelect,\n onFocus: handleFocus,\n onBlur: handleBlur,\n type: htmlType\n }), children);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n Tab.displayName = \"Tab\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * TabPanels\r\n *\r\n * The parent component of the panels.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#tabpanels\r\n */\n\n\nvar TabPanelsImpl = /*#__PURE__*/forwardRefWithAs(function TabPanels(_ref4, forwardedRef) {\n var children = _ref4.children,\n _ref4$as = _ref4.as,\n Comp = _ref4$as === void 0 ? \"div\" : _ref4$as,\n props = _objectWithoutPropertiesLoose(_ref4, [\"children\", \"as\"]);\n\n var ownRef = useRef();\n var ref = useForkedRef(ownRef, forwardedRef);\n\n var _useDescendantsInit2 = useDescendantsInit(),\n tabPanels = _useDescendantsInit2[0],\n setTabPanels = _useDescendantsInit2[1];\n\n return React.createElement(DescendantProvider, {\n context: TabPanelDescendantsContext,\n items: tabPanels,\n set: setTabPanels\n }, React.createElement(Comp, Object.assign({}, props, {\n ref: ref,\n \"data-reach-tab-panels\": \"\"\n }), children));\n});\nvar TabPanels = /*#__PURE__*/memo(TabPanelsImpl);\n\nif (process.env.NODE_ENV !== \"production\") {\n TabPanels.displayName = \"TabPanels\";\n TabPanelsImpl.displayName = \"TabPanels\";\n}\n/**\r\n * TabPanel\r\n *\r\n * The panel that displays when it's corresponding tab is active.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#tabpanel\r\n */\n\n\nvar TabPanel = /*#__PURE__*/forwardRefWithAs(function TabPanel(_ref5, forwardedRef) {\n var children = _ref5.children,\n ariaLabel = _ref5[\"aria-label\"],\n _ref5$as = _ref5.as,\n Comp = _ref5$as === void 0 ? \"div\" : _ref5$as,\n props = _objectWithoutPropertiesLoose(_ref5, [\"children\", \"aria-label\", \"as\"]);\n\n var _useContext3 = useContext(TabsContext),\n selectedPanelRef = _useContext3.selectedPanelRef,\n selectedIndex = _useContext3.selectedIndex,\n tabsId = _useContext3.id;\n\n var ownRef = useRef(null);\n var index = useDescendant({\n element: ownRef.current\n }, TabPanelDescendantsContext);\n var isSelected = index === selectedIndex;\n var id = makeId(tabsId, \"panel\", index);\n var ref = useForkedRef(forwardedRef, ownRef, isSelected ? selectedPanelRef : null);\n return React.createElement(Comp // Each element with role `tabpanel` has the property `aria-labelledby`\n // referring to its associated tab element.\n , Object.assign({\n \"aria-labelledby\": makeId(tabsId, \"tab\", index),\n hidden: !isSelected,\n // Each element that contains the content panel for a tab has role\n // `tabpanel`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tabpanel\n role: \"tabpanel\",\n tabIndex: isSelected ? 0 : -1\n }, props, {\n ref: ref,\n \"data-reach-tab-panel\": \"\",\n id: id\n }), children);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n TabPanel.displayName = \"TabPanel\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * A hook that exposes data for a given `Tabs` component to its descendants.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#usetabscontext\r\n */\n\n\nfunction useTabsContext() {\n var _useContext4 = useContext(TabsContext),\n focusedIndex = _useContext4.focusedIndex,\n id = _useContext4.id,\n selectedIndex = _useContext4.selectedIndex;\n\n return useMemo(function () {\n return {\n focusedIndex: focusedIndex,\n id: id,\n selectedIndex: selectedIndex\n };\n }, [focusedIndex, id, selectedIndex]);\n}\n\nexport { Tab, TabList, TabPanel, TabPanels, Tabs, TabsKeyboardActivation, TabsOrientation, useTabsContext };","'use strict';\n\nmodule.exports = atxHeading;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_HASH = '#';\nvar MAX_ATX_COUNT = 6;\n\nfunction atxHeading(eat, value, silent) {\n var self = this;\n var settings = self.options;\n var length = value.length + 1;\n var index = -1;\n var now = eat.now();\n var subvalue = '';\n var content = '';\n var character;\n var queue;\n var depth;\n /* Eat initial spacing. */\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n index--;\n break;\n }\n\n subvalue += character;\n }\n /* Eat hashes. */\n\n\n depth = 0;\n\n while (++index <= length) {\n character = value.charAt(index);\n\n if (character !== C_HASH) {\n index--;\n break;\n }\n\n subvalue += character;\n depth++;\n }\n\n if (depth > MAX_ATX_COUNT) {\n return;\n }\n\n if (!depth || !settings.pedantic && value.charAt(index + 1) === C_HASH) {\n return;\n }\n\n length = value.length + 1;\n /* Eat intermediate white-space. */\n\n queue = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n index--;\n break;\n }\n\n queue += character;\n }\n /* Exit when not in pedantic mode without spacing. */\n\n\n if (!settings.pedantic && queue.length === 0 && character && character !== C_NEWLINE) {\n return;\n }\n\n if (silent) {\n return true;\n }\n /* Eat content. */\n\n\n subvalue += queue;\n queue = '';\n content = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (!character || character === C_NEWLINE) {\n break;\n }\n\n if (character !== C_SPACE && character !== C_TAB && character !== C_HASH) {\n content += queue + character;\n queue = '';\n continue;\n }\n\n while (character === C_SPACE || character === C_TAB) {\n queue += character;\n character = value.charAt(++index);\n }\n\n while (character === C_HASH) {\n queue += character;\n character = value.charAt(++index);\n }\n\n while (character === C_SPACE || character === C_TAB) {\n queue += character;\n character = value.charAt(++index);\n }\n\n index--;\n }\n\n now.column += subvalue.length;\n now.offset += subvalue.length;\n subvalue += content + queue;\n return eat(subvalue)({\n type: 'heading',\n depth: depth,\n children: self.tokenizeInline(content, now)\n });\n}","/**\r\n * Prism: Lightweight, robust, elegant syntax highlighting\r\n * MIT license http://www.opensource.org/licenses/mit-license.php/\r\n * @author Lea Verou http://lea.verou.me\r\n */\n\n/**\r\n * prism-react-renderer:\r\n * This file has been modified to remove:\r\n * - globals and window dependency\r\n * - worker support\r\n * - highlightAll and other element dependent methods\r\n * - _.hooks helpers\r\n * - UMD/node-specific hacks\r\n * It has also been run through prettier\r\n */\nvar Prism = function () {\n var uniqueId = 0;\n var _ = {\n util: {\n encode: function encode(tokens) {\n if (tokens instanceof Token) {\n return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n } else if (_.util.type(tokens) === \"Array\") {\n return tokens.map(_.util.encode);\n } else {\n return tokens.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/\\u00a0/g, \" \");\n }\n },\n type: function type(o) {\n return Object.prototype.toString.call(o).match(/\\[object (\\w+)\\]/)[1];\n },\n objId: function objId(obj) {\n if (!obj[\"__id\"]) {\n Object.defineProperty(obj, \"__id\", {\n value: ++uniqueId\n });\n }\n\n return obj[\"__id\"];\n },\n // Deep clone a language definition (e.g. to extend it)\n clone: function clone(o, visited) {\n var type = _.util.type(o);\n\n visited = visited || {};\n\n switch (type) {\n case \"Object\":\n if (visited[_.util.objId(o)]) {\n return visited[_.util.objId(o)];\n }\n\n var clone = {};\n visited[_.util.objId(o)] = clone;\n\n for (var key in o) {\n if (o.hasOwnProperty(key)) {\n clone[key] = _.util.clone(o[key], visited);\n }\n }\n\n return clone;\n\n case \"Array\":\n if (visited[_.util.objId(o)]) {\n return visited[_.util.objId(o)];\n }\n\n var clone = [];\n visited[_.util.objId(o)] = clone;\n o.forEach(function (v, i) {\n clone[i] = _.util.clone(v, visited);\n });\n return clone;\n }\n\n return o;\n }\n },\n languages: {\n extend: function extend(id, redef) {\n var lang = _.util.clone(_.languages[id]);\n\n for (var key in redef) {\n lang[key] = redef[key];\n }\n\n return lang;\n },\n\n /**\r\n * Insert a token before another token in a language literal\r\n * As this needs to recreate the object (we cannot actually insert before keys in object literals),\r\n * we cannot just provide an object, we need anobject and a key.\r\n * @param inside The key (or language id) of the parent\r\n * @param before The key to insert before. If not provided, the function appends instead.\r\n * @param insert Object with the key/value pairs to insert\r\n * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\r\n */\n insertBefore: function insertBefore(inside, before, insert, root) {\n root = root || _.languages;\n var grammar = root[inside];\n\n if (arguments.length == 2) {\n insert = arguments[1];\n\n for (var newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n grammar[newToken] = insert[newToken];\n }\n }\n\n return grammar;\n }\n\n var ret = {};\n\n for (var token in grammar) {\n if (grammar.hasOwnProperty(token)) {\n if (token == before) {\n for (var newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n ret[newToken] = insert[newToken];\n }\n }\n }\n\n ret[token] = grammar[token];\n }\n } // Update references in other language definitions\n\n\n _.languages.DFS(_.languages, function (key, value) {\n if (value === root[inside] && key != inside) {\n this[key] = ret;\n }\n });\n\n return root[inside] = ret;\n },\n // Traverse a language definition with Depth First Search\n DFS: function DFS(o, callback, type, visited) {\n visited = visited || {};\n\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n callback.call(o, i, o[i], type || i);\n\n if (_.util.type(o[i]) === \"Object\" && !visited[_.util.objId(o[i])]) {\n visited[_.util.objId(o[i])] = true;\n\n _.languages.DFS(o[i], callback, null, visited);\n } else if (_.util.type(o[i]) === \"Array\" && !visited[_.util.objId(o[i])]) {\n visited[_.util.objId(o[i])] = true;\n\n _.languages.DFS(o[i], callback, i, visited);\n }\n }\n }\n }\n },\n plugins: {},\n highlight: function highlight(text, grammar, language) {\n var env = {\n code: text,\n grammar: grammar,\n language: language\n };\n env.tokens = _.tokenize(env.code, env.grammar);\n return Token.stringify(_.util.encode(env.tokens), env.language);\n },\n matchGrammar: function matchGrammar(text, strarr, grammar, index, startPos, oneshot, target) {\n var Token = _.Token;\n\n for (var token in grammar) {\n if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n continue;\n }\n\n if (token == target) {\n return;\n }\n\n var patterns = grammar[token];\n patterns = _.util.type(patterns) === \"Array\" ? patterns : [patterns];\n\n for (var j = 0; j < patterns.length; ++j) {\n var pattern = patterns[j],\n inside = pattern.inside,\n lookbehind = !!pattern.lookbehind,\n greedy = !!pattern.greedy,\n lookbehindLength = 0,\n alias = pattern.alias;\n\n if (greedy && !pattern.pattern.global) {\n // Without the global flag, lastIndex won't work\n var flags = pattern.pattern.toString().match(/[imuy]*$/)[0];\n pattern.pattern = RegExp(pattern.pattern.source, flags + \"g\");\n }\n\n pattern = pattern.pattern || pattern; // Don’t cache length as it changes during the loop\n\n for (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) {\n var str = strarr[i];\n\n if (strarr.length > text.length) {\n // Something went terribly wrong, ABORT, ABORT!\n return;\n }\n\n if (str instanceof Token) {\n continue;\n }\n\n if (greedy && i != strarr.length - 1) {\n pattern.lastIndex = pos;\n var match = pattern.exec(text);\n\n if (!match) {\n break;\n }\n\n var from = match.index + (lookbehind ? match[1].length : 0),\n to = match.index + match[0].length,\n k = i,\n p = pos;\n\n for (var len = strarr.length; k < len && (p < to || !strarr[k].type && !strarr[k - 1].greedy); ++k) {\n p += strarr[k].length; // Move the index i to the element in strarr that is closest to from\n\n if (from >= p) {\n ++i;\n pos = p;\n }\n } // If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\n\n if (strarr[i] instanceof Token) {\n continue;\n } // Number of tokens to delete and replace with the new match\n\n\n delNum = k - i;\n str = text.slice(pos, p);\n match.index -= pos;\n } else {\n pattern.lastIndex = 0;\n var match = pattern.exec(str),\n delNum = 1;\n }\n\n if (!match) {\n if (oneshot) {\n break;\n }\n\n continue;\n }\n\n if (lookbehind) {\n lookbehindLength = match[1] ? match[1].length : 0;\n }\n\n var from = match.index + lookbehindLength,\n match = match[0].slice(lookbehindLength),\n to = from + match.length,\n before = str.slice(0, from),\n after = str.slice(to);\n var args = [i, delNum];\n\n if (before) {\n ++i;\n pos += before.length;\n args.push(before);\n }\n\n var wrapped = new Token(token, inside ? _.tokenize(match, inside) : match, alias, match, greedy);\n args.push(wrapped);\n\n if (after) {\n args.push(after);\n }\n\n Array.prototype.splice.apply(strarr, args);\n\n if (delNum != 1) {\n _.matchGrammar(text, strarr, grammar, i, pos, true, token);\n }\n\n if (oneshot) {\n break;\n }\n }\n }\n }\n },\n hooks: {\n add: function add() {}\n },\n tokenize: function tokenize(text, grammar, language) {\n var strarr = [text];\n var rest = grammar.rest;\n\n if (rest) {\n for (var token in rest) {\n grammar[token] = rest[token];\n }\n\n delete grammar.rest;\n }\n\n _.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n return strarr;\n }\n };\n\n var Token = _.Token = function (type, content, alias, matchedStr, greedy) {\n this.type = type;\n this.content = content;\n this.alias = alias; // Copy of the full string this token was created from\n\n this.length = (matchedStr || \"\").length | 0;\n this.greedy = !!greedy;\n };\n\n Token.stringify = function (o, language, parent) {\n if (typeof o == \"string\") {\n return o;\n }\n\n if (_.util.type(o) === \"Array\") {\n return o.map(function (element) {\n return Token.stringify(element, language, o);\n }).join(\"\");\n }\n\n var env = {\n type: o.type,\n content: Token.stringify(o.content, language, parent),\n tag: \"span\",\n classes: [\"token\", o.type],\n attributes: {},\n language: language,\n parent: parent\n };\n\n if (o.alias) {\n var aliases = _.util.type(o.alias) === \"Array\" ? o.alias : [o.alias];\n Array.prototype.push.apply(env.classes, aliases);\n }\n\n var attributes = Object.keys(env.attributes).map(function (name) {\n return name + '=\"' + (env.attributes[name] || \"\").replace(/\"/g, \""\") + '\"';\n }).join(\" \");\n return \"<\" + env.tag + ' class=\"' + env.classes.join(\" \") + '\"' + (attributes ? \" \" + attributes : \"\") + \">\" + env.content + \"</\" + env.tag + \">\";\n };\n\n return _;\n}();\n/* This content is auto-generated to include some prismjs language components: */\n\n/* \"prismjs/components/prism-markup\" */\n\n\nPrism.languages.markup = {\n 'comment': /<!--[\\s\\S]*?-->/,\n 'prolog': /<\\?[\\s\\S]+?\\?>/,\n 'doctype': /<!DOCTYPE[\\s\\S]+?>/i,\n 'cdata': /<!\\[CDATA\\[[\\s\\S]*?]]>/i,\n 'tag': {\n pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/i,\n greedy: true,\n inside: {\n 'tag': {\n pattern: /^<\\/?[^\\s>\\/]+/i,\n inside: {\n 'punctuation': /^<\\/?/,\n 'namespace': /^[^\\s>\\/:]+:/\n }\n },\n 'attr-value': {\n pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/i,\n inside: {\n 'punctuation': [/^=/, {\n pattern: /^(\\s*)[\"']|[\"']$/,\n lookbehind: true\n }]\n }\n },\n 'punctuation': /\\/?>/,\n 'attr-name': {\n pattern: /[^\\s>\\/]+/,\n inside: {\n 'namespace': /^[^\\s>\\/:]+:/\n }\n }\n }\n },\n 'entity': /&#?[\\da-z]{1,8};/i\n};\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] = Prism.languages.markup['entity']; // Plugin to make entity title show the real entity, idea by Roman Komarov\n\nPrism.hooks.add('wrap', function (env) {\n if (env.type === 'entity') {\n env.attributes['title'] = env.content.replace(/&/, '&');\n }\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n /**\n * Adds an inlined language to markup.\n *\n * An example of an inlined language is CSS with `<style>` tags.\n *\n * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n * case insensitive.\n * @param {string} lang The language key.\n * @example\n * addInlined('style', 'css');\n */\n value: function addInlined(tagName, lang) {\n var includedCdataInside = {};\n includedCdataInside['language-' + lang] = {\n pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n lookbehind: true,\n inside: Prism.languages[lang]\n };\n includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n var inside = {\n 'included-cdata': {\n pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n inside: includedCdataInside\n }\n };\n inside['language-' + lang] = {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages[lang]\n };\n var def = {};\n def[tagName] = {\n pattern: RegExp(/(<__[\\s\\S]*?>)(?:<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\s*|[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, tagName), 'i'),\n lookbehind: true,\n greedy: true,\n inside: inside\n };\n Prism.languages.insertBefore('markup', 'cdata', def);\n }\n});\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n/* \"prismjs/components/prism-bash\" */\n\n(function (Prism) {\n // $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n // + LC_ALL, RANDOM, REPLY, SECONDS.\n // + make sure PS1..4 are here as they are not always set,\n // - some useless things.\n var envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n var insideString = {\n 'environment': {\n pattern: RegExp(\"\\\\$\" + envVars),\n alias: 'constant'\n },\n 'variable': [// [0]: Arithmetic Environment\n {\n pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n greedy: true,\n inside: {\n // If there is a $ sign at the beginning highlight $(( and )) as variable\n 'variable': [{\n pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n lookbehind: true\n }, /^\\$\\(\\(/],\n 'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n 'operator': /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n // If there is no $ sign at the beginning highlight (( and )) as punctuation\n 'punctuation': /\\(\\(?|\\)\\)?|,|;/\n }\n }, // [1]: Command Substitution\n {\n pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n greedy: true,\n inside: {\n 'variable': /^\\$\\(|^`|\\)$|`$/\n }\n }, // [2]: Brace expansion\n {\n pattern: /\\$\\{[^}]+\\}/,\n greedy: true,\n inside: {\n 'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n 'punctuation': /[\\[\\]]/,\n 'environment': {\n pattern: RegExp(\"(\\\\{)\" + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n }\n }, /\\$(?:\\w+|[#?*!@$])/],\n // Escape sequences from echo and printf's manuals, and escaped quotes.\n 'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/\n };\n Prism.languages.bash = {\n 'shebang': {\n pattern: /^#!\\s*\\/.*/,\n alias: 'important'\n },\n 'comment': {\n pattern: /(^|[^\"{\\\\$])#.*/,\n lookbehind: true\n },\n 'function-name': [// a) function foo {\n // b) foo() {\n // c) function foo() {\n // but not “foo {”\n {\n // a) and c)\n pattern: /(\\bfunction\\s+)\\w+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n lookbehind: true,\n alias: 'function'\n }, {\n // b)\n pattern: /\\b\\w+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n alias: 'function'\n }],\n // Highlight variable names as variables in for and select beginnings.\n 'for-or-select': {\n pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n alias: 'variable',\n lookbehind: true\n },\n // Highlight variable names as variables in the left-hand part\n // of assignments (“=” and “+=”).\n 'assign-left': {\n pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?=\\+?=)/,\n inside: {\n 'environment': {\n pattern: RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\" + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n },\n alias: 'variable',\n lookbehind: true\n },\n 'string': [// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n {\n pattern: /((?:^|[^<])<<-?\\s*)(\\w+?)\\s*(?:\\r?\\n|\\r)(?:[\\s\\S])*?(?:\\r?\\n|\\r)\\2/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n }, // Here-document with quotes around the tag\n // → No expansion (so no “inside”).\n {\n pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s*(?:\\r?\\n|\\r)(?:[\\s\\S])*?(?:\\r?\\n|\\r)\\3/,\n lookbehind: true,\n greedy: true\n }, // “Normal” string\n {\n pattern: /([\"'])(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|`[^`]+`|(?!\\1)[^\\\\])*\\1/,\n greedy: true,\n inside: insideString\n }],\n 'environment': {\n pattern: RegExp(\"\\\\$?\" + envVars),\n alias: 'constant'\n },\n 'variable': insideString.variable,\n 'function': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'keyword': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'builtin': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\\s;|&])/,\n lookbehind: true,\n // Alias added to make those easier to distinguish from strings.\n alias: 'class-name'\n },\n 'boolean': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:true|false)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'file-descriptor': {\n pattern: /\\B&\\d\\b/,\n alias: 'important'\n },\n 'operator': {\n // Lots of redirections here, but not just that.\n pattern: /\\d?<>|>\\||\\+=|==?|!=?|=~|<<[<-]?|[&\\d]?>>|\\d?[<>]&?|&[>&]?|\\|[&|]?|<=?|>=?/,\n inside: {\n 'file-descriptor': {\n pattern: /^\\d/,\n alias: 'important'\n }\n }\n },\n 'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n 'number': {\n pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n lookbehind: true\n }\n };\n /* Patterns in command substitution. */\n\n var toBeCopied = ['comment', 'function-name', 'for-or-select', 'assign-left', 'string', 'environment', 'function', 'keyword', 'builtin', 'boolean', 'file-descriptor', 'operator', 'punctuation', 'number'];\n var inside = insideString.variable[1].inside;\n\n for (var i = 0; i < toBeCopied.length; i++) {\n inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n }\n\n Prism.languages.shell = Prism.languages.bash;\n})(Prism);\n/* \"prismjs/components/prism-clike\" */\n\n\nPrism.languages.clike = {\n 'comment': [{\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true\n }, {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }],\n 'string': {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n 'class-name': {\n pattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n punctuation: /[.\\\\]/\n }\n },\n 'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'function': /\\w+(?=\\()/,\n 'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n 'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n 'punctuation': /[{}[\\];(),.:]/\n};\n/* \"prismjs/components/prism-c\" */\n\nPrism.languages.c = Prism.languages.extend('clike', {\n 'class-name': {\n pattern: /(\\b(?:enum|struct)\\s+)\\w+/,\n lookbehind: true\n },\n 'keyword': /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n 'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/,\n 'number': /(?:\\b0x(?:[\\da-f]+\\.?[\\da-f]*|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]*/i\n});\nPrism.languages.insertBefore('c', 'string', {\n 'macro': {\n // allow for multiline macro definitions\n // spaces after the # character compile fine with gcc\n pattern: /(^\\s*)#\\s*[a-z]+(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true,\n alias: 'property',\n inside: {\n // highlight the path of the include statement as a string\n 'string': {\n pattern: /(#\\s*include\\s*)(?:<.+?>|(\"|')(?:\\\\?.)+?\\2)/,\n lookbehind: true\n },\n // highlight macro directives as keywords\n 'directive': {\n pattern: /(#\\s*)\\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\\b/,\n lookbehind: true,\n alias: 'keyword'\n }\n }\n },\n // highlight predefined macros as constants\n 'constant': /\\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\\b/\n});\ndelete Prism.languages.c['boolean'];\n/* \"prismjs/components/prism-cpp\" */\n\nPrism.languages.cpp = Prism.languages.extend('c', {\n 'class-name': {\n pattern: /(\\b(?:class|enum|struct)\\s+)\\w+/,\n lookbehind: true\n },\n 'keyword': /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/,\n 'number': {\n pattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+\\.?[\\da-f']*|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+\\.?[\\d']*|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]*/i,\n greedy: true\n },\n 'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n 'boolean': /\\b(?:true|false)\\b/\n});\nPrism.languages.insertBefore('cpp', 'string', {\n 'raw-string': {\n pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n alias: 'string',\n greedy: true\n }\n});\n/* \"prismjs/components/prism-css\" */\n\n(function (Prism) {\n var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n Prism.languages.css = {\n 'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n 'atrule': {\n pattern: /@[\\w-]+[\\s\\S]*?(?:;|(?=\\s*\\{))/,\n inside: {\n 'rule': /@[\\w-]+/ // See rest below\n\n }\n },\n 'url': {\n pattern: RegExp('url\\\\((?:' + string.source + '|[^\\n\\r()]*)\\\\)', 'i'),\n inside: {\n 'function': /^url/i,\n 'punctuation': /^\\(|\\)$/\n }\n },\n 'selector': RegExp('[^{}\\\\s](?:[^{};\"\\']|' + string.source + ')*?(?=\\\\s*\\\\{)'),\n 'string': {\n pattern: string,\n greedy: true\n },\n 'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n 'important': /!important\\b/i,\n 'function': /[-a-z0-9]+(?=\\()/i,\n 'punctuation': /[(){};:,]/\n };\n Prism.languages.css['atrule'].inside.rest = Prism.languages.css;\n var markup = Prism.languages.markup;\n\n if (markup) {\n markup.tag.addInlined('style', 'css');\n Prism.languages.insertBefore('inside', 'attr-value', {\n 'style-attr': {\n pattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n inside: {\n 'attr-name': {\n pattern: /^\\s*style/i,\n inside: markup.tag.inside\n },\n 'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n 'attr-value': {\n pattern: /.+/i,\n inside: Prism.languages.css\n }\n },\n alias: 'language-css'\n }\n }, markup.tag);\n }\n})(Prism);\n/* \"prismjs/components/prism-css-extras\" */\n\n\nPrism.languages.css.selector = {\n pattern: Prism.languages.css.selector,\n inside: {\n 'pseudo-element': /:(?:after|before|first-letter|first-line|selection)|::[-\\w]+/,\n 'pseudo-class': /:[-\\w]+/,\n 'class': /\\.[-:.\\w]+/,\n 'id': /#[-:.\\w]+/,\n 'attribute': {\n pattern: /\\[(?:[^[\\]\"']|(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1)*\\]/,\n greedy: true,\n inside: {\n 'punctuation': /^\\[|\\]$/,\n 'case-sensitivity': {\n pattern: /(\\s)[si]$/i,\n lookbehind: true,\n alias: 'keyword'\n },\n 'namespace': {\n pattern: /^(\\s*)[-*\\w\\xA0-\\uFFFF]*\\|(?!=)/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\|$/\n }\n },\n 'attribute': {\n pattern: /^(\\s*)[-\\w\\xA0-\\uFFFF]+/,\n lookbehind: true\n },\n 'value': [/(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/, {\n pattern: /(=\\s*)[-\\w\\xA0-\\uFFFF]+(?=\\s*$)/,\n lookbehind: true\n }],\n 'operator': /[|~*^$]?=/\n }\n },\n 'n-th': [{\n pattern: /(\\(\\s*)[+-]?\\d*[\\dn](?:\\s*[+-]\\s*\\d+)?(?=\\s*\\))/,\n lookbehind: true,\n inside: {\n 'number': /[\\dn]+/,\n 'operator': /[+-]/\n }\n }, {\n pattern: /(\\(\\s*)(?:even|odd)(?=\\s*\\))/i,\n lookbehind: true\n }],\n 'punctuation': /[()]/\n }\n};\nPrism.languages.insertBefore('css', 'property', {\n 'variable': {\n pattern: /(^|[^-\\w\\xA0-\\uFFFF])--[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*/i,\n lookbehind: true\n }\n});\nPrism.languages.insertBefore('css', 'function', {\n 'operator': {\n pattern: /(\\s)[+\\-*\\/](?=\\s)/,\n lookbehind: true\n },\n 'hexcode': /#[\\da-f]{3,8}/i,\n 'entity': /\\\\[\\da-f]{1,8}/i,\n 'unit': {\n pattern: /(\\d)(?:%|[a-z]+)/,\n lookbehind: true\n },\n 'number': /-?[\\d.]+/\n});\n/* \"prismjs/components/prism-javascript\" */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n 'class-name': [Prism.languages.clike['class-name'], {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])[_$A-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\.(?:prototype|constructor))/,\n lookbehind: true\n }],\n 'keyword': [{\n pattern: /((?:^|})\\s*)(?:catch|finally)\\b/,\n lookbehind: true\n }, {\n pattern: /(^|[^.])\\b(?:as|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true\n }],\n 'number': /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n 'function': /#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n 'operator': /-[-=]?|\\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/;\nPrism.languages.insertBefore('javascript', 'keyword', {\n 'regex': {\n pattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s])\\s*)\\/(\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyus]{0,6}(?=\\s*($|[\\r\\n,.;})\\]]))/,\n lookbehind: true,\n greedy: true\n },\n // This must be declared before keyword because we use \"function\" inside the look-forward\n 'function-variable': {\n pattern: /#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/,\n alias: 'function'\n },\n 'parameter': [{\n pattern: /(function(?:\\s+[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)?\\s*\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\))/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }, {\n pattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=>)/i,\n inside: Prism.languages.javascript\n }, {\n pattern: /(\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }, {\n pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\s*)\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }],\n 'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\nPrism.languages.insertBefore('javascript', 'string', {\n 'template-string': {\n pattern: /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\\${)[^\\\\`])*`/,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n 'interpolation': {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\${|}$/,\n alias: 'punctuation'\n },\n rest: Prism.languages.javascript\n }\n },\n 'string': /[\\s\\S]+/\n }\n }\n});\n\nif (Prism.languages.markup) {\n Prism.languages.markup.tag.addInlined('script', 'javascript');\n}\n\nPrism.languages.js = Prism.languages.javascript;\n/* \"prismjs/components/prism-jsx\" */\n\n(function (Prism) {\n var javascript = Prism.util.clone(Prism.languages.javascript);\n Prism.languages.jsx = Prism.languages.extend('markup', javascript);\n Prism.languages.jsx.tag.pattern = /<\\/?(?:[\\w.:-]+\\s*(?:\\s+(?:[\\w.:-]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s{'\">=]+|\\{(?:\\{(?:\\{[^}]*\\}|[^{}])*\\}|[^{}])+\\}))?|\\{\\.{3}[a-z_$][\\w$]*(?:\\.[a-z_$][\\w$]*)*\\}))*\\s*\\/?)?>/i;\n Prism.languages.jsx.tag.inside['tag'].pattern = /^<\\/?[^\\s>\\/]*/i;\n Prism.languages.jsx.tag.inside['attr-value'].pattern = /=(?!\\{)(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">]+)/i;\n Prism.languages.jsx.tag.inside['tag'].inside['class-name'] = /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/;\n Prism.languages.insertBefore('inside', 'attr-name', {\n 'spread': {\n pattern: /\\{\\.{3}[a-z_$][\\w$]*(?:\\.[a-z_$][\\w$]*)*\\}/,\n inside: {\n 'punctuation': /\\.{3}|[{}.]/,\n 'attr-value': /\\w+/\n }\n }\n }, Prism.languages.jsx.tag);\n Prism.languages.insertBefore('inside', 'attr-value', {\n 'script': {\n // Allow for two levels of nesting\n pattern: /=(\\{(?:\\{(?:\\{[^}]*\\}|[^}])*\\}|[^}])+\\})/i,\n inside: {\n 'script-punctuation': {\n pattern: /^=(?={)/,\n alias: 'punctuation'\n },\n rest: Prism.languages.jsx\n },\n 'alias': 'language-javascript'\n }\n }, Prism.languages.jsx.tag); // The following will handle plain text inside tags\n\n var stringifyToken = function stringifyToken(token) {\n if (!token) {\n return '';\n }\n\n if (typeof token === 'string') {\n return token;\n }\n\n if (typeof token.content === 'string') {\n return token.content;\n }\n\n return token.content.map(stringifyToken).join('');\n };\n\n var walkTokens = function walkTokens(tokens) {\n var openedTags = [];\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var notTagNorBrace = false;\n\n if (typeof token !== 'string') {\n if (token.type === 'tag' && token.content[0] && token.content[0].type === 'tag') {\n // We found a tag, now find its kind\n if (token.content[0].content[0].content === '</') {\n // Closing tag\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].tagName === stringifyToken(token.content[0].content[1])) {\n // Pop matching opening tag\n openedTags.pop();\n }\n } else {\n if (token.content[token.content.length - 1].content === '/>') ;else {\n // Opening tag\n openedTags.push({\n tagName: stringifyToken(token.content[0].content[1]),\n openedBraces: 0\n });\n }\n }\n } else if (openedTags.length > 0 && token.type === 'punctuation' && token.content === '{') {\n // Here we might have entered a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces++;\n } else if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces > 0 && token.type === 'punctuation' && token.content === '}') {\n // Here we might have left a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces--;\n } else {\n notTagNorBrace = true;\n }\n }\n\n if (notTagNorBrace || typeof token === 'string') {\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces === 0) {\n // Here we are inside a tag, and not inside a JSX context.\n // That's plain text: drop any tokens matched.\n var plainText = stringifyToken(token); // And merge text with adjacent text\n\n if (i < tokens.length - 1 && (typeof tokens[i + 1] === 'string' || tokens[i + 1].type === 'plain-text')) {\n plainText += stringifyToken(tokens[i + 1]);\n tokens.splice(i + 1, 1);\n }\n\n if (i > 0 && (typeof tokens[i - 1] === 'string' || tokens[i - 1].type === 'plain-text')) {\n plainText = stringifyToken(tokens[i - 1]) + plainText;\n tokens.splice(i - 1, 1);\n i--;\n }\n\n tokens[i] = new Prism.Token('plain-text', plainText, null, plainText);\n }\n }\n\n if (token.content && typeof token.content !== 'string') {\n walkTokens(token.content);\n }\n }\n };\n\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'jsx' && env.language !== 'tsx') {\n return;\n }\n\n walkTokens(env.tokens);\n });\n})(Prism);\n/* \"prismjs/components/prism-javadoclike\" */\n\n\n(function (Prism) {\n var javaDocLike = Prism.languages.javadoclike = {\n 'parameter': {\n pattern: /(^\\s*(?:\\/{3}|\\*|\\/\\*\\*)\\s*@(?:param|arg|arguments)\\s+)\\w+/m,\n lookbehind: true\n },\n 'keyword': {\n // keywords are the first word in a line preceded be an `@` or surrounded by curly braces.\n // @word, {@word}\n pattern: /(^\\s*(?:\\/{3}|\\*|\\/\\*\\*)\\s*|\\{)@[a-z][a-zA-Z-]+\\b/m,\n lookbehind: true\n },\n 'punctuation': /[{}]/\n };\n /**\n * Adds doc comment support to the given language and calls a given callback on each doc comment pattern.\n *\n * @param {string} lang the language add doc comment support to.\n * @param {(pattern: {inside: {rest: undefined}}) => void} callback the function called with each doc comment pattern as argument.\n */\n\n function docCommentSupport(lang, callback) {\n var tokenName = 'doc-comment';\n var grammar = Prism.languages[lang];\n\n if (!grammar) {\n return;\n }\n\n var token = grammar[tokenName];\n\n if (!token) {\n // add doc comment: /** */\n var definition = {};\n definition[tokenName] = {\n pattern: /(^|[^\\\\])\\/\\*\\*[^/][\\s\\S]*?(?:\\*\\/|$)/,\n alias: 'comment'\n };\n grammar = Prism.languages.insertBefore(lang, 'comment', definition);\n token = grammar[tokenName];\n }\n\n if (token instanceof RegExp) {\n // convert regex to object\n token = grammar[tokenName] = {\n pattern: token\n };\n }\n\n if (Array.isArray(token)) {\n for (var i = 0, l = token.length; i < l; i++) {\n if (token[i] instanceof RegExp) {\n token[i] = {\n pattern: token[i]\n };\n }\n\n callback(token[i]);\n }\n } else {\n callback(token);\n }\n }\n /**\n * Adds doc-comment support to the given languages for the given documentation language.\n *\n * @param {string[]|string} languages\n * @param {Object} docLanguage\n */\n\n\n function addSupport(languages, docLanguage) {\n if (typeof languages === 'string') {\n languages = [languages];\n }\n\n languages.forEach(function (lang) {\n docCommentSupport(lang, function (pattern) {\n if (!pattern.inside) {\n pattern.inside = {};\n }\n\n pattern.inside.rest = docLanguage;\n });\n });\n }\n\n Object.defineProperty(javaDocLike, 'addSupport', {\n value: addSupport\n });\n javaDocLike.addSupport(['java', 'javascript', 'php'], javaDocLike);\n})(Prism);\n/* \"prismjs/components/prism-java\" */\n\n\n(function (Prism) {\n var keywords = /\\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|var|null|exports|module|open|opens|provides|requires|to|transitive|uses|with)\\b/; // based on the java naming conventions\n\n var className = /\\b[A-Z](?:\\w*[a-z]\\w*)?\\b/;\n Prism.languages.java = Prism.languages.extend('clike', {\n 'class-name': [className, // variables and parameters\n // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n /\\b[A-Z]\\w*(?=\\s+\\w+\\s*[;,=())])/],\n 'keyword': keywords,\n 'function': [Prism.languages.clike.function, {\n pattern: /(\\:\\:)[a-z_]\\w*/,\n lookbehind: true\n }],\n 'number': /\\b0b[01][01_]*L?\\b|\\b0x[\\da-f_]*\\.?[\\da-f_p+-]+\\b|(?:\\b\\d[\\d_]*\\.?[\\d_]*|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n 'operator': {\n pattern: /(^|[^.])(?:<<=?|>>>?=?|->|([-+&|])\\2|[?:~]|[-+*/%&|^!=<>]=?)/m,\n lookbehind: true\n }\n });\n Prism.languages.insertBefore('java', 'class-name', {\n 'annotation': {\n alias: 'punctuation',\n pattern: /(^|[^.])@\\w+/,\n lookbehind: true\n },\n 'namespace': {\n pattern: /(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)[a-z]\\w*(\\.[a-z]\\w*)+/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\./\n }\n },\n 'generics': {\n pattern: /<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<[\\w\\s,.&?]*>)*>)*>)*>/,\n inside: {\n 'class-name': className,\n 'keyword': keywords,\n 'punctuation': /[<>(),.:]/,\n 'operator': /[?&|]/\n }\n }\n });\n})(Prism);\n/* \"prismjs/components/prism-markup-templating\" */\n\n\n(function (Prism) {\n /**\n * Returns the placeholder for the given language id and index.\n *\n * @param {string} language\n * @param {string|number} index\n * @returns {string}\n */\n function getPlaceholder(language, index) {\n return '___' + language.toUpperCase() + index + '___';\n }\n\n Object.defineProperties(Prism.languages['markup-templating'] = {}, {\n buildPlaceholders: {\n /**\n * Tokenize all inline templating expressions matching `placeholderPattern`.\n *\n * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns\n * `true` will be replaced.\n *\n * @param {object} env The environment of the `before-tokenize` hook.\n * @param {string} language The language id.\n * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders.\n * @param {(match: string) => boolean} [replaceFilter]\n */\n value: function value(env, language, placeholderPattern, replaceFilter) {\n if (env.language !== language) {\n return;\n }\n\n var tokenStack = env.tokenStack = [];\n env.code = env.code.replace(placeholderPattern, function (match) {\n if (typeof replaceFilter === 'function' && !replaceFilter(match)) {\n return match;\n }\n\n var i = tokenStack.length;\n var placeholder; // Check for existing strings\n\n while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) {\n ++i;\n } // Create a sparse array\n\n\n tokenStack[i] = match;\n return placeholder;\n }); // Switch the grammar to markup\n\n env.grammar = Prism.languages.markup;\n }\n },\n tokenizePlaceholders: {\n /**\n * Replace placeholders with proper tokens after tokenizing.\n *\n * @param {object} env The environment of the `after-tokenize` hook.\n * @param {string} language The language id.\n */\n value: function value(env, language) {\n if (env.language !== language || !env.tokenStack) {\n return;\n } // Switch the grammar back\n\n\n env.grammar = Prism.languages[language];\n var j = 0;\n var keys = Object.keys(env.tokenStack);\n\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n // all placeholders are replaced already\n if (j >= keys.length) {\n break;\n }\n\n var token = tokens[i];\n\n if (typeof token === 'string' || token.content && typeof token.content === 'string') {\n var k = keys[j];\n var t = env.tokenStack[k];\n var s = typeof token === 'string' ? token : token.content;\n var placeholder = getPlaceholder(language, k);\n var index = s.indexOf(placeholder);\n\n if (index > -1) {\n ++j;\n var before = s.substring(0, index);\n var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);\n var after = s.substring(index + placeholder.length);\n var replacement = [];\n\n if (before) {\n replacement.push.apply(replacement, walkTokens([before]));\n }\n\n replacement.push(middle);\n\n if (after) {\n replacement.push.apply(replacement, walkTokens([after]));\n }\n\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement));\n } else {\n token.content = replacement;\n }\n }\n } else if (token.content\n /* && typeof token.content !== 'string' */\n ) {\n walkTokens(token.content);\n }\n }\n\n return tokens;\n }\n\n walkTokens(env.tokens);\n }\n }\n });\n})(Prism);\n/* \"prismjs/components/prism-php\" */\n\n/**\n * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n * Modified by Miles Johnson: http://milesj.me\n *\n * Supports the following:\n * \t\t- Extends clike syntax\n * \t\t- Support for PHP 5.3+ (namespaces, traits, generators, etc)\n * \t\t- Smarter constant and function matching\n *\n * Adds the following new token classes:\n * \t\tconstant, delimiter, variable, function, package\n */\n\n\n(function (Prism) {\n Prism.languages.php = Prism.languages.extend('clike', {\n 'keyword': /\\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|new|or|parent|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\\b/i,\n 'boolean': {\n pattern: /\\b(?:false|true)\\b/i,\n alias: 'constant'\n },\n 'constant': [/\\b[A-Z_][A-Z0-9_]*\\b/, /\\b(?:null)\\b/i],\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n }\n });\n Prism.languages.insertBefore('php', 'string', {\n 'shell-comment': {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true,\n alias: 'comment'\n }\n });\n Prism.languages.insertBefore('php', 'comment', {\n 'delimiter': {\n pattern: /\\?>$|^<\\?(?:php(?=\\s)|=)?/i,\n alias: 'important'\n }\n });\n Prism.languages.insertBefore('php', 'keyword', {\n 'variable': /\\$+(?:\\w+\\b|(?={))/i,\n 'package': {\n pattern: /(\\\\|namespace\\s+|use\\s+)[\\w\\\\]+/,\n lookbehind: true,\n inside: {\n punctuation: /\\\\/\n }\n }\n }); // Must be defined after the function pattern\n\n Prism.languages.insertBefore('php', 'operator', {\n 'property': {\n pattern: /(->)[\\w]+/,\n lookbehind: true\n }\n });\n var string_interpolation = {\n pattern: /{\\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\\\{])\\$+(?:\\w+(?:\\[.+?]|->\\w+)*)/,\n lookbehind: true,\n inside: {\n rest: Prism.languages.php\n }\n };\n Prism.languages.insertBefore('php', 'string', {\n 'nowdoc-string': {\n pattern: /<<<'([^']+)'(?:\\r\\n?|\\n)(?:.*(?:\\r\\n?|\\n))*?\\1;/,\n greedy: true,\n alias: 'string',\n inside: {\n 'delimiter': {\n pattern: /^<<<'[^']+'|[a-z_]\\w*;$/i,\n alias: 'symbol',\n inside: {\n 'punctuation': /^<<<'?|[';]$/\n }\n }\n }\n },\n 'heredoc-string': {\n pattern: /<<<(?:\"([^\"]+)\"(?:\\r\\n?|\\n)(?:.*(?:\\r\\n?|\\n))*?\\1;|([a-z_]\\w*)(?:\\r\\n?|\\n)(?:.*(?:\\r\\n?|\\n))*?\\2;)/i,\n greedy: true,\n alias: 'string',\n inside: {\n 'delimiter': {\n pattern: /^<<<(?:\"[^\"]+\"|[a-z_]\\w*)|[a-z_]\\w*;$/i,\n alias: 'symbol',\n inside: {\n 'punctuation': /^<<<\"?|[\";]$/\n }\n },\n 'interpolation': string_interpolation // See below\n\n }\n },\n 'single-quoted-string': {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n greedy: true,\n alias: 'string'\n },\n 'double-quoted-string': {\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true,\n alias: 'string',\n inside: {\n 'interpolation': string_interpolation // See below\n\n }\n }\n }); // The different types of PHP strings \"replace\" the C-like standard string\n\n delete Prism.languages.php['string'];\n Prism.hooks.add('before-tokenize', function (env) {\n if (!/<\\?/.test(env.code)) {\n return;\n }\n\n var phpPattern = /<\\?(?:[^\"'/#]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|(?:\\/\\/|#)(?:[^?\\n\\r]|\\?(?!>))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$))*?(?:\\?>|$)/ig;\n Prism.languages['markup-templating'].buildPlaceholders(env, 'php', phpPattern);\n });\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php');\n });\n})(Prism);\n/* \"prismjs/components/prism-jsdoc\" */\n\n\n(function (Prism) {\n var javascript = Prism.languages.javascript;\n var type = /{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source;\n var parameterPrefix = '(@(?:param|arg|argument|property)\\\\s+(?:' + type + '\\\\s+)?)';\n Prism.languages.jsdoc = Prism.languages.extend('javadoclike', {\n 'parameter': {\n // @param {string} foo - foo bar\n pattern: RegExp(parameterPrefix + /[$\\w\\xA0-\\uFFFF.]+(?=\\s|$)/.source),\n lookbehind: true,\n inside: {\n 'punctuation': /\\./\n }\n }\n });\n Prism.languages.insertBefore('jsdoc', 'keyword', {\n 'optional-parameter': {\n // @param {string} [baz.foo=\"bar\"] foo bar\n pattern: RegExp(parameterPrefix + /\\[[$\\w\\xA0-\\uFFFF.]+(?:=[^[\\]]+)?\\](?=\\s|$)/.source),\n lookbehind: true,\n inside: {\n 'parameter': {\n pattern: /(^\\[)[$\\w\\xA0-\\uFFFF\\.]+/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\./\n }\n },\n 'code': {\n pattern: /(=)[\\s\\S]*(?=\\]$)/,\n lookbehind: true,\n inside: javascript,\n alias: 'language-javascript'\n },\n 'punctuation': /[=[\\]]/\n }\n },\n 'class-name': [{\n pattern: RegExp('(@[a-z]+\\\\s+)' + type),\n lookbehind: true,\n inside: {\n 'punctuation': /[.,:?=<>|{}()[\\]]/\n }\n }, {\n pattern: /(@(?:augments|extends|class|interface|memberof!?|this)\\s+)[A-Z]\\w*(?:\\.[A-Z]\\w*)*/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\./\n }\n }],\n 'example': {\n pattern: /(@example\\s+)[^@]+?(?=\\s*(?:\\*\\s*)?(?:@\\w|\\*\\/))/,\n lookbehind: true,\n inside: {\n 'code': {\n pattern: /^(\\s*(?:\\*\\s*)?).+$/m,\n lookbehind: true,\n inside: javascript,\n alias: 'language-javascript'\n }\n }\n }\n });\n Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc);\n})(Prism);\n/* \"prismjs/components/prism-actionscript\" */\n\n\nPrism.languages.actionscript = Prism.languages.extend('javascript', {\n 'keyword': /\\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\\b/,\n 'operator': /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/\n});\nPrism.languages.actionscript['class-name'].alias = 'function';\n\nif (Prism.languages.markup) {\n Prism.languages.insertBefore('actionscript', 'string', {\n 'xml': {\n pattern: /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2)*\\s*\\/?>/,\n lookbehind: true,\n inside: {\n rest: Prism.languages.markup\n }\n }\n });\n}\n/* \"prismjs/components/prism-coffeescript\" */\n\n\n(function (Prism) {\n // Ignore comments starting with { to privilege string interpolation highlighting\n var comment = /#(?!\\{).+/,\n interpolation = {\n pattern: /#\\{[^}]+\\}/,\n alias: 'variable'\n };\n Prism.languages.coffeescript = Prism.languages.extend('javascript', {\n 'comment': comment,\n 'string': [// Strings are multiline\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n greedy: true\n }, {\n // Strings are multiline\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true,\n inside: {\n 'interpolation': interpolation\n }\n }],\n 'keyword': /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n 'class-member': {\n pattern: /@(?!\\d)\\w+/,\n alias: 'variable'\n }\n });\n Prism.languages.insertBefore('coffeescript', 'comment', {\n 'multiline-comment': {\n pattern: /###[\\s\\S]+?###/,\n alias: 'comment'\n },\n // Block regexp can contain comments and interpolation\n 'block-regex': {\n pattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n alias: 'regex',\n inside: {\n 'comment': comment,\n 'interpolation': interpolation\n }\n }\n });\n Prism.languages.insertBefore('coffeescript', 'string', {\n 'inline-javascript': {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n inside: {\n 'delimiter': {\n pattern: /^`|`$/,\n alias: 'punctuation'\n },\n rest: Prism.languages.javascript\n }\n },\n // Block strings\n 'multiline-string': [{\n pattern: /'''[\\s\\S]*?'''/,\n greedy: true,\n alias: 'string'\n }, {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: 'string',\n inside: {\n interpolation: interpolation\n }\n }]\n });\n Prism.languages.insertBefore('coffeescript', 'keyword', {\n // Object property\n 'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n });\n delete Prism.languages.coffeescript['template-string'];\n Prism.languages.coffee = Prism.languages.coffeescript;\n})(Prism);\n/* \"prismjs/components/prism-js-extras\" */\n\n\n(function (Prism) {\n Prism.languages.insertBefore('javascript', 'function-variable', {\n 'method-variable': {\n pattern: RegExp('(\\\\.\\\\s*)' + Prism.languages.javascript['function-variable'].pattern.source),\n lookbehind: true,\n alias: ['function-variable', 'method', 'function', 'property-access']\n }\n });\n Prism.languages.insertBefore('javascript', 'function', {\n 'method': {\n pattern: RegExp('(\\\\.\\\\s*)' + Prism.languages.javascript['function'].source),\n lookbehind: true,\n alias: ['function', 'property-access']\n }\n });\n Prism.languages.insertBefore('javascript', 'constant', {\n 'known-class-name': [{\n // standard built-ins\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\n pattern: /\\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\\b/,\n alias: 'class-name'\n }, {\n // errors\n pattern: /\\b(?:[A-Z]\\w*)Error\\b/,\n alias: 'class-name'\n }]\n });\n Prism.languages.javascript['keyword'].unshift({\n pattern: /\\b(?:as|default|export|from|import)\\b/,\n alias: 'module'\n }, {\n pattern: /\\bnull\\b/,\n alias: ['null', 'nil']\n }, {\n pattern: /\\bundefined\\b/,\n alias: 'nil'\n });\n Prism.languages.insertBefore('javascript', 'operator', {\n 'spread': {\n pattern: /\\.{3}/,\n alias: 'operator'\n },\n 'arrow': {\n pattern: /=>/,\n alias: 'operator'\n }\n });\n Prism.languages.insertBefore('javascript', 'punctuation', {\n 'property-access': {\n pattern: /(\\.\\s*)#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*/,\n lookbehind: true\n },\n 'maybe-class-name': {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])[A-Z][$\\w\\xA0-\\uFFFF]+/,\n lookbehind: true\n },\n 'dom': {\n // this contains only a few commonly used DOM variables\n pattern: /\\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\\b/,\n alias: 'variable'\n },\n 'console': {\n pattern: /\\bconsole(?=\\s*\\.)/,\n alias: 'class-name'\n }\n }); // add 'maybe-class-name' to tokens which might be a class name\n\n var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access'];\n\n for (var i = 0; i < maybeClassNameTokens.length; i++) {\n var token = maybeClassNameTokens[i];\n var value = Prism.languages.javascript[token]; // convert regex to object\n\n if (Prism.util.type(value) === 'RegExp') {\n value = Prism.languages.javascript[token] = {\n pattern: value\n };\n } // keep in mind that we don't support arrays\n\n\n var inside = value.inside || {};\n value.inside = inside;\n inside['maybe-class-name'] = /^[A-Z][\\s\\S]*/;\n }\n})(Prism);\n/* \"prismjs/components/prism-flow\" */\n\n\n(function (Prism) {\n Prism.languages.flow = Prism.languages.extend('javascript', {});\n Prism.languages.insertBefore('flow', 'keyword', {\n 'type': [{\n pattern: /\\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\\b/,\n alias: 'tag'\n }]\n });\n Prism.languages.flow['function-variable'].pattern = /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)(?:\\s*:\\s*\\w+)?|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i;\n delete Prism.languages.flow['parameter'];\n Prism.languages.insertBefore('flow', 'operator', {\n 'flow-punctuation': {\n pattern: /\\{\\||\\|\\}/,\n alias: 'punctuation'\n }\n });\n\n if (!Array.isArray(Prism.languages.flow.keyword)) {\n Prism.languages.flow.keyword = [Prism.languages.flow.keyword];\n }\n\n Prism.languages.flow.keyword.unshift({\n pattern: /(^|[^$]\\b)(?:type|opaque|declare|Class)\\b(?!\\$)/,\n lookbehind: true\n }, {\n pattern: /(^|[^$]\\B)\\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\\b(?!\\$)/,\n lookbehind: true\n });\n})(Prism);\n/* \"prismjs/components/prism-n4js\" */\n\n\nPrism.languages.n4js = Prism.languages.extend('javascript', {\n // Keywords from N4JS language spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html\n 'keyword': /\\b(?:any|Array|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\\b/\n});\nPrism.languages.insertBefore('n4js', 'constant', {\n // Annotations in N4JS spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html#_annotations\n 'annotation': {\n pattern: /@+\\w+/,\n alias: 'operator'\n }\n});\nPrism.languages.n4jsd = Prism.languages.n4js;\n/* \"prismjs/components/prism-typescript\" */\n\nPrism.languages.typescript = Prism.languages.extend('javascript', {\n // From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words\n 'keyword': /\\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\\b/,\n 'builtin': /\\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\\b/\n});\nPrism.languages.ts = Prism.languages.typescript;\n/* \"prismjs/components/prism-js-templates\" */\n\n(function (Prism) {\n var templateString = Prism.languages.javascript['template-string']; // see the pattern in prism-javascript.js\n\n var templateLiteralPattern = templateString.pattern.source;\n var interpolationObject = templateString.inside['interpolation'];\n var interpolationPunctuationObject = interpolationObject.inside['interpolation-punctuation'];\n var interpolationPattern = interpolationObject.pattern.source;\n /**\n * Creates a new pattern to match a template string with a special tag.\n *\n * This will return `undefined` if there is no grammar with the given language id.\n *\n * @param {string} language The language id of the embedded language. E.g. `markdown`.\n * @param {string} tag The regex pattern to match the tag.\n * @returns {object | undefined}\n * @example\n * createTemplate('css', /\\bcss/.source);\n */\n\n function createTemplate(language, tag) {\n if (!Prism.languages[language]) {\n return undefined;\n }\n\n return {\n pattern: RegExp('((?:' + tag + ')\\\\s*)' + templateLiteralPattern),\n lookbehind: true,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n 'embedded-code': {\n pattern: /[\\s\\S]+/,\n alias: language\n }\n }\n };\n }\n\n Prism.languages.javascript['template-string'] = [// styled-jsx:\n // css`a { color: #25F; }`\n // styled-components:\n // styled.h1`color: red;`\n createTemplate('css', /\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source), // html`<p></p>`\n // div.innerHTML = `<p></p>`\n createTemplate('html', /\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=/.source), // svg`<path fill=\"#fff\" d=\"M55.37 ...\"/>`\n createTemplate('svg', /\\bsvg/.source), // md`# h1`, markdown`## h2`\n createTemplate('markdown', /\\b(?:md|markdown)/.source), // gql`...`, graphql`...`, graphql.experimental`...`\n createTemplate('graphql', /\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)/.source), // vanilla template string\n templateString].filter(Boolean);\n /**\n * Returns a specific placeholder literal for the given language.\n *\n * @param {number} counter\n * @param {string} language\n * @returns {string}\n */\n\n function getPlaceholder(counter, language) {\n return '___' + language.toUpperCase() + '_' + counter + '___';\n }\n /**\n * Returns the tokens of `Prism.tokenize` but also runs the `before-tokenize` and `after-tokenize` hooks.\n *\n * @param {string} code\n * @param {any} grammar\n * @param {string} language\n * @returns {(string|Token)[]}\n */\n\n\n function tokenizeWithHooks(code, grammar, language) {\n var env = {\n code: code,\n grammar: grammar,\n language: language\n };\n Prism.hooks.run('before-tokenize', env);\n env.tokens = Prism.tokenize(env.code, env.grammar);\n Prism.hooks.run('after-tokenize', env);\n return env.tokens;\n }\n /**\n * Returns the token of the given JavaScript interpolation expression.\n *\n * @param {string} expression The code of the expression. E.g. `\"${42}\"`\n * @returns {Token}\n */\n\n\n function tokenizeInterpolationExpression(expression) {\n var tempGrammar = {};\n tempGrammar['interpolation-punctuation'] = interpolationPunctuationObject;\n /** @type {Array} */\n\n var tokens = Prism.tokenize(expression, tempGrammar);\n\n if (tokens.length === 3) {\n /**\n * The token array will look like this\n * [\n * [\"interpolation-punctuation\", \"${\"]\n * \"...\" // JavaScript expression of the interpolation\n * [\"interpolation-punctuation\", \"}\"]\n * ]\n */\n var args = [1, 1];\n args.push.apply(args, tokenizeWithHooks(tokens[1], Prism.languages.javascript, 'javascript'));\n tokens.splice.apply(tokens, args);\n }\n\n return new Prism.Token('interpolation', tokens, interpolationObject.alias, expression);\n }\n /**\n * Tokenizes the given code with support for JavaScript interpolation expressions mixed in.\n *\n * This function has 3 phases:\n *\n * 1. Replace all JavaScript interpolation expression with a placeholder.\n * The placeholder will have the syntax of a identify of the target language.\n * 2. Tokenize the code with placeholders.\n * 3. Tokenize the interpolation expressions and re-insert them into the tokenize code.\n * The insertion only works if a placeholder hasn't been \"ripped apart\" meaning that the placeholder has been\n * tokenized as two tokens by the grammar of the embedded language.\n *\n * @param {string} code\n * @param {object} grammar\n * @param {string} language\n * @returns {Token}\n */\n\n\n function tokenizeEmbedded(code, grammar, language) {\n // 1. First filter out all interpolations\n // because they might be escaped, we need a lookbehind, so we use Prism\n\n /** @type {(Token|string)[]} */\n var _tokens = Prism.tokenize(code, {\n 'interpolation': {\n pattern: RegExp(interpolationPattern),\n lookbehind: true\n }\n }); // replace all interpolations with a placeholder which is not in the code already\n\n\n var placeholderCounter = 0;\n /** @type {Object<string, string>} */\n\n var placeholderMap = {};\n\n var embeddedCode = _tokens.map(function (token) {\n if (typeof token === 'string') {\n return token;\n } else {\n var interpolationExpression = token.content;\n var placeholder;\n\n while (code.indexOf(placeholder = getPlaceholder(placeholderCounter++, language)) !== -1) {}\n\n placeholderMap[placeholder] = interpolationExpression;\n return placeholder;\n }\n }).join(''); // 2. Tokenize the embedded code\n\n\n var embeddedTokens = tokenizeWithHooks(embeddedCode, grammar, language); // 3. Re-insert the interpolation\n\n var placeholders = Object.keys(placeholderMap);\n placeholderCounter = 0;\n /**\n *\n * @param {(Token|string)[]} tokens\n * @returns {void}\n */\n\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n if (placeholderCounter >= placeholders.length) {\n return;\n }\n\n var token = tokens[i];\n\n if (typeof token === 'string' || typeof token.content === 'string') {\n var placeholder = placeholders[placeholderCounter];\n var s = typeof token === 'string' ? token :\n /** @type {string} */\n token.content;\n var index = s.indexOf(placeholder);\n\n if (index !== -1) {\n ++placeholderCounter;\n var before = s.substring(0, index);\n var middle = tokenizeInterpolationExpression(placeholderMap[placeholder]);\n var after = s.substring(index + placeholder.length);\n var replacement = [];\n\n if (before) {\n replacement.push(before);\n }\n\n replacement.push(middle);\n\n if (after) {\n var afterTokens = [after];\n walkTokens(afterTokens);\n replacement.push.apply(replacement, afterTokens);\n }\n\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement));\n i += replacement.length - 1;\n } else {\n token.content = replacement;\n }\n }\n } else {\n var content = token.content;\n\n if (Array.isArray(content)) {\n walkTokens(content);\n } else {\n walkTokens([content]);\n }\n }\n }\n }\n\n walkTokens(embeddedTokens);\n return new Prism.Token(language, embeddedTokens, 'language-' + language, code);\n }\n /**\n * The languages for which JS templating will handle tagged template literals.\n *\n * JS templating isn't active for only JavaScript but also related languages like TypeScript, JSX, and TSX.\n */\n\n\n var supportedLanguages = {\n 'javascript': true,\n 'js': true,\n 'typescript': true,\n 'ts': true,\n 'jsx': true,\n 'tsx': true\n };\n Prism.hooks.add('after-tokenize', function (env) {\n if (!(env.language in supportedLanguages)) {\n return;\n }\n /**\n * Finds and tokenizes all template strings with an embedded languages.\n *\n * @param {(Token | string)[]} tokens\n * @returns {void}\n */\n\n\n function findTemplateStrings(tokens) {\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n continue;\n }\n\n var content = token.content;\n\n if (!Array.isArray(content)) {\n if (typeof content !== 'string') {\n findTemplateStrings([content]);\n }\n\n continue;\n }\n\n if (token.type === 'template-string') {\n /**\n * A JavaScript template-string token will look like this:\n *\n * [\"template-string\", [\n * [\"template-punctuation\", \"`\"],\n * (\n * An array of \"string\" and \"interpolation\" tokens. This is the simple string case.\n * or\n * [\"embedded-code\", \"...\"] This is the token containing the embedded code.\n * It also has an alias which is the language of the embedded code.\n * ),\n * [\"template-punctuation\", \"`\"]\n * ]]\n */\n var embedded = content[1];\n\n if (content.length === 3 && typeof embedded !== 'string' && embedded.type === 'embedded-code') {\n // get string content\n var code = stringContent(embedded);\n var alias = embedded.alias;\n var language = Array.isArray(alias) ? alias[0] : alias;\n var grammar = Prism.languages[language];\n\n if (!grammar) {\n // the embedded language isn't registered.\n continue;\n }\n\n content[1] = tokenizeEmbedded(code, grammar, language);\n }\n } else {\n findTemplateStrings(content);\n }\n }\n }\n\n findTemplateStrings(env.tokens);\n });\n /**\n * Returns the string content of a token or token stream.\n *\n * @param {string | Token | (string | Token)[]} value\n * @returns {string}\n */\n\n function stringContent(value) {\n if (typeof value === 'string') {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(stringContent).join('');\n } else {\n return stringContent(value.content);\n }\n }\n})(Prism);\n/* \"prismjs/components/prism-graphql\" */\n\n\nPrism.languages.graphql = {\n 'comment': /#.*/,\n 'string': {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n 'number': /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n 'boolean': /\\b(?:true|false)\\b/,\n 'variable': /\\$[a-z_]\\w*/i,\n 'directive': {\n pattern: /@[a-z_]\\w*/i,\n alias: 'function'\n },\n 'attr-name': {\n pattern: /[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true\n },\n 'fragment': {\n pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n 'keyword': /\\b(?:enum|fragment|implements|input|interface|mutation|on|query|scalar|schema|type|union)\\b/,\n 'operator': /[!=|]|\\.{3}/,\n 'punctuation': /[!(){}\\[\\]:=,]/,\n 'constant': /\\b(?!ID\\b)[A-Z][A-Z_\\d]*\\b/\n};\n/* \"prismjs/components/prism-markdown\" */\n\n(function (Prism) {\n // Allow only one line break\n var inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\r?\\n|\\r)(?!\\r?\\n|\\r))/.source;\n /**\n * This function is intended for the creation of the bold or italic pattern.\n *\n * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n *\n * _Note:_ Keep in mind that this adds a capturing group.\n *\n * @param {string} pattern\n * @param {boolean} starAlternative Whether to also add an alternative where all `_`s are replaced with `*`s.\n * @returns {RegExp}\n */\n\n function createInline(pattern, starAlternative) {\n pattern = pattern.replace(/<inner>/g, inner);\n\n if (starAlternative) {\n pattern = pattern + '|' + pattern.replace(/_/g, '\\\\*');\n }\n\n return RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')');\n }\n\n var tableCell = /(?:\\\\.|``.+?``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source;\n var tableRow = /\\|?__(?:\\|__)+\\|?(?:(?:\\r?\\n|\\r)|$)/.source.replace(/__/g, tableCell);\n var tableLine = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\r?\\n|\\r)/.source;\n Prism.languages.markdown = Prism.languages.extend('markup', {});\n Prism.languages.insertBefore('markdown', 'prolog', {\n 'blockquote': {\n // > ...\n pattern: /^>(?:[\\t ]*>)*/m,\n alias: 'punctuation'\n },\n 'table': {\n pattern: RegExp('^' + tableRow + tableLine + '(?:' + tableRow + ')*', 'm'),\n inside: {\n 'table-data-rows': {\n pattern: RegExp('^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'),\n lookbehind: true,\n inside: {\n 'table-data': {\n pattern: RegExp(tableCell),\n inside: Prism.languages.markdown\n },\n 'punctuation': /\\|/\n }\n },\n 'table-line': {\n pattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n lookbehind: true,\n inside: {\n 'punctuation': /\\||:?-{3,}:?/\n }\n },\n 'table-header-row': {\n pattern: RegExp('^' + tableRow + '$'),\n inside: {\n 'table-header': {\n pattern: RegExp(tableCell),\n alias: 'important',\n inside: Prism.languages.markdown\n },\n 'punctuation': /\\|/\n }\n }\n }\n },\n 'code': [{\n // Prefixed by 4 spaces or 1 tab and preceded by an empty line\n pattern: /(^[ \\t]*(?:\\r?\\n|\\r))(?: {4}|\\t).+(?:(?:\\r?\\n|\\r)(?: {4}|\\t).+)*/m,\n lookbehind: true,\n alias: 'keyword'\n }, {\n // `code`\n // ``code``\n pattern: /``.+?``|`[^`\\r\\n]+`/,\n alias: 'keyword'\n }, {\n // ```optional language\n // code block\n // ```\n pattern: /^```[\\s\\S]*?^```$/m,\n greedy: true,\n inside: {\n 'code-block': {\n pattern: /^(```.*(?:\\r?\\n|\\r))[\\s\\S]+?(?=(?:\\r?\\n|\\r)^```$)/m,\n lookbehind: true\n },\n 'code-language': {\n pattern: /^(```).+/,\n lookbehind: true\n },\n 'punctuation': /```/\n }\n }],\n 'title': [{\n // title 1\n // =======\n // title 2\n // -------\n pattern: /\\S.*(?:\\r?\\n|\\r)(?:==+|--+)(?=[ \\t]*$)/m,\n alias: 'important',\n inside: {\n punctuation: /==+$|--+$/\n }\n }, {\n // # title 1\n // ###### title 6\n pattern: /(^\\s*)#+.+/m,\n lookbehind: true,\n alias: 'important',\n inside: {\n punctuation: /^#+|#+$/\n }\n }],\n 'hr': {\n // ***\n // ---\n // * * *\n // -----------\n pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'list': {\n // * item\n // + item\n // - item\n // 1. item\n pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'url-reference': {\n // [id]: http://example.com \"Optional title\"\n // [id]: http://example.com 'Optional title'\n // [id]: http://example.com (Optional title)\n // [id]: <http://example.com> \"Optional title\"\n pattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n inside: {\n 'variable': {\n pattern: /^(!?\\[)[^\\]]+/,\n lookbehind: true\n },\n 'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n 'punctuation': /^[\\[\\]!:]|[<>]/\n },\n alias: 'url'\n },\n 'bold': {\n // **strong**\n // __strong__\n // allow one nested instance of italic text using the same delimiter\n pattern: createInline(/__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__/.source, true),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^..)[\\s\\S]+(?=..$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /\\*\\*|__/\n }\n },\n 'italic': {\n // *em*\n // _em_\n // allow one nested instance of bold text using the same delimiter\n pattern: createInline(/_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_/.source, true),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^.)[\\s\\S]+(?=.$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /[*_]/\n }\n },\n 'strike': {\n // ~~strike through~~\n // ~strike~\n pattern: createInline(/(~~?)(?:(?!~)<inner>)+?\\2/.source, false),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /~~?/\n }\n },\n 'url': {\n // [example](http://example.com \"Optional title\")\n // [example][id]\n // [example] [id]\n pattern: createInline(/!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)| ?\\[(?:(?!\\])<inner>)+\\])/.source, false),\n lookbehind: true,\n greedy: true,\n inside: {\n 'variable': {\n pattern: /(\\[)[^\\]]+(?=\\]$)/,\n lookbehind: true\n },\n 'content': {\n pattern: /(^!?\\[)[^\\]]+(?=\\])/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'string': {\n pattern: /\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/\n }\n }\n }\n });\n ['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n ['url', 'bold', 'italic', 'strike'].forEach(function (inside) {\n if (token !== inside) {\n Prism.languages.markdown[token].inside.content.inside[inside] = Prism.languages.markdown[inside];\n }\n });\n });\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'markdown' && env.language !== 'md') {\n return;\n }\n\n function walkTokens(tokens) {\n if (!tokens || typeof tokens === 'string') {\n return;\n }\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (token.type !== 'code') {\n walkTokens(token.content);\n continue;\n }\n /*\n * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n * is optional. But the grammar is defined so that there is only one case we have to handle:\n *\n * token.content = [\n * <span class=\"punctuation\">```</span>,\n * <span class=\"code-language\">xxxx</span>,\n * '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n * <span class=\"code-block\">...</span>,\n * '\\n', // exactly one new lines again\n * <span class=\"punctuation\">```</span>\n * ];\n */\n\n\n var codeLang = token.content[1];\n var codeBlock = token.content[3];\n\n if (codeLang && codeBlock && codeLang.type === 'code-language' && codeBlock.type === 'code-block' && typeof codeLang.content === 'string') {\n // this might be a language that Prism does not support\n var alias = 'language-' + codeLang.content.trim().split(/\\s+/)[0].toLowerCase(); // add alias\n\n if (!codeBlock.alias) {\n codeBlock.alias = [alias];\n } else if (typeof codeBlock.alias === 'string') {\n codeBlock.alias = [codeBlock.alias, alias];\n } else {\n codeBlock.alias.push(alias);\n }\n }\n }\n }\n\n walkTokens(env.tokens);\n });\n Prism.hooks.add('wrap', function (env) {\n if (env.type !== 'code-block') {\n return;\n }\n\n var codeLang = '';\n\n for (var i = 0, l = env.classes.length; i < l; i++) {\n var cls = env.classes[i];\n var match = /language-(.+)/.exec(cls);\n\n if (match) {\n codeLang = match[1];\n break;\n }\n }\n\n var grammar = Prism.languages[codeLang];\n\n if (!grammar) {\n if (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n var id = 'md-' + new Date().valueOf() + '-' + Math.floor(Math.random() * 1e16);\n env.attributes['id'] = id;\n Prism.plugins.autoloader.loadLanguages(codeLang, function () {\n var ele = document.getElementById(id);\n\n if (ele) {\n ele.innerHTML = Prism.highlight(ele.textContent, Prism.languages[codeLang], codeLang);\n }\n });\n }\n } else {\n // reverse Prism.util.encode\n var code = env.content.replace(/</g, '<').replace(/&/g, '&');\n env.content = Prism.highlight(code, grammar, codeLang);\n }\n });\n Prism.languages.md = Prism.languages.markdown;\n})(Prism);\n/* \"prismjs/components/prism-diff\" */\n\n\n(function (Prism) {\n Prism.languages.diff = {\n 'coord': [// Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n /^(?:\\*{3}|-{3}|\\+{3}).*$/m, // Match \"@@ ... @@\" coord lines in unified diff.\n /^@@.*@@$/m, // Match coord lines in normal diff (starts with a number).\n /^\\d+.*$/m] // deleted, inserted, unchanged, diff\n\n };\n /**\n * A map from the name of a block to its line prefix.\n *\n * @type {Object<string, string>}\n */\n\n var PREFIXES = {\n 'deleted-sign': '-',\n 'deleted-arrow': '<',\n 'inserted-sign': '+',\n 'inserted-arrow': '>',\n 'unchanged': ' ',\n 'diff': '!'\n }; // add a token for each prefix\n\n Object.keys(PREFIXES).forEach(function (name) {\n var prefix = PREFIXES[name];\n var alias = [];\n\n if (!/^\\w+$/.test(name)) {\n // \"deleted-sign\" -> \"deleted\"\n alias.push(/\\w+/.exec(name)[0]);\n }\n\n if (name === \"diff\") {\n alias.push(\"bold\");\n }\n\n Prism.languages.diff[name] = {\n // pattern: /^(?:[_].*(?:\\r\\n?|\\n|(?![\\s\\S])))+/m\n pattern: RegExp('^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+', 'm'),\n alias: alias\n };\n }); // make prefixes available to Diff plugin\n\n Object.defineProperty(Prism.languages.diff, 'PREFIXES', {\n value: PREFIXES\n });\n})(Prism);\n/* \"prismjs/components/prism-git\" */\n\n\nPrism.languages.git = {\n /*\n * A simple one line comment like in a git status command\n * For instance:\n * $ git status\n * # On branch infinite-scroll\n * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged,\n * # and have 1 and 2 different commits each, respectively.\n * nothing to commit (working directory clean)\n */\n 'comment': /^#.*/m,\n\n /*\n * Regexp to match the changed lines in a git diff output. Check the example below.\n */\n 'deleted': /^[-–].*/m,\n 'inserted': /^\\+.*/m,\n\n /*\n * a string (double and simple quote)\n */\n 'string': /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/m,\n\n /*\n * a git command. It starts with a random prompt finishing by a $, then \"git\" then some other parameters\n * For instance:\n * $ git add file.txt\n */\n 'command': {\n pattern: /^.*\\$ git .*$/m,\n inside: {\n /*\n * A git command can contain a parameter starting by a single or a double dash followed by a string\n * For instance:\n * $ git diff --cached\n * $ git log -p\n */\n 'parameter': /\\s--?\\w+/m\n }\n },\n\n /*\n * Coordinates displayed in a git diff command\n * For instance:\n * $ git diff\n * diff --git file.txt file.txt\n * index 6214953..1d54a52 100644\n * --- file.txt\n * +++ file.txt\n * @@ -1 +1,2 @@\n * -Here's my tetx file\n * +Here's my text file\n * +And this is the second line\n */\n 'coord': /^@@.*@@$/m,\n\n /*\n * Match a \"commit [SHA1]\" line in a git log output.\n * For instance:\n * $ git log\n * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09\n * Author: lgiraudel\n * Date: Mon Feb 17 11:18:34 2014 +0100\n *\n * Add of a new line\n */\n 'commit_sha1': /^commit \\w{40}$/m\n};\n/* \"prismjs/components/prism-go\" */\n\nPrism.languages.go = Prism.languages.extend('clike', {\n 'keyword': /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n 'builtin': /\\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\\b/,\n 'boolean': /\\b(?:_|iota|nil|true|false)\\b/,\n 'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n 'number': /(?:\\b0x[a-f\\d]+|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[-+]?\\d+)?)i?/i,\n 'string': {\n pattern: /([\"'`])(\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n greedy: true\n }\n});\ndelete Prism.languages.go['class-name'];\n/* \"prismjs/components/prism-handlebars\" */\n\n(function (Prism) {\n Prism.languages.handlebars = {\n 'comment': /\\{\\{![\\s\\S]*?\\}\\}/,\n 'delimiter': {\n pattern: /^\\{\\{\\{?|\\}\\}\\}?$/i,\n alias: 'punctuation'\n },\n 'string': /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n 'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:[Ee][+-]?\\d+)?/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'block': {\n pattern: /^(\\s*~?\\s*)[#\\/]\\S+?(?=\\s*~?\\s*$|\\s)/i,\n lookbehind: true,\n alias: 'keyword'\n },\n 'brackets': {\n pattern: /\\[[^\\]]+\\]/,\n inside: {\n punctuation: /\\[|\\]/,\n variable: /[\\s\\S]+/\n }\n },\n 'punctuation': /[!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n 'variable': /[^!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n };\n Prism.hooks.add('before-tokenize', function (env) {\n var handlebarsPattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/g;\n Prism.languages['markup-templating'].buildPlaceholders(env, 'handlebars', handlebarsPattern);\n });\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'handlebars');\n });\n})(Prism);\n/* \"prismjs/components/prism-json\" */\n\n\nPrism.languages.json = {\n 'property': {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n greedy: true\n },\n 'string': {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n greedy: true\n },\n 'comment': /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n 'number': /-?\\d+\\.?\\d*(e[+-]?\\d+)?/i,\n 'punctuation': /[{}[\\],]/,\n 'operator': /:/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n }\n};\n/* \"prismjs/components/prism-less\" */\n\n/* FIXME :\n :extend() is not handled specifically : its highlighting is buggy.\n Mixin usage must be inside a ruleset to be highlighted.\n At-rules (e.g. import) containing interpolations are buggy.\n Detached rulesets are highlighted as at-rules.\n A comment before a mixin usage prevents the latter to be properly highlighted.\n */\n\nPrism.languages.less = Prism.languages.extend('css', {\n 'comment': [/\\/\\*[\\s\\S]*?\\*\\//, {\n pattern: /(^|[^\\\\])\\/\\/.*/,\n lookbehind: true\n }],\n 'atrule': {\n pattern: /@[\\w-]+?(?:\\([^{}]+\\)|[^(){};])*?(?=\\s*\\{)/i,\n inside: {\n 'punctuation': /[:()]/\n }\n },\n // selectors and mixins are considered the same\n 'selector': {\n pattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\([^{}]*\\)|[^{};@])*?(?=\\s*\\{)/,\n inside: {\n // mixin parameters\n 'variable': /@+[\\w-]+/\n }\n },\n 'property': /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/i,\n 'operator': /[+\\-*\\/]/\n});\nPrism.languages.insertBefore('less', 'property', {\n 'variable': [// Variable declaration (the colon must be consumed!)\n {\n pattern: /@[\\w-]+\\s*:/,\n inside: {\n \"punctuation\": /:/\n }\n }, // Variable usage\n /@@?[\\w-]+/],\n 'mixin-usage': {\n pattern: /([{;]\\s*)[.#](?!\\d)[\\w-]+.*?(?=[(;])/,\n lookbehind: true,\n alias: 'function'\n }\n});\n/* \"prismjs/components/prism-makefile\" */\n\nPrism.languages.makefile = {\n 'comment': {\n pattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n lookbehind: true\n },\n 'string': {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n // Built-in target names\n 'builtin': /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n // Targets\n 'symbol': {\n pattern: /^[^:=\\r\\n]+(?=\\s*:(?!=))/m,\n inside: {\n 'variable': /\\$+(?:[^(){}:#=\\s]+|(?=[({]))/\n }\n },\n 'variable': /\\$+(?:[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n 'keyword': [// Directives\n /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/, // Functions\n {\n pattern: /(\\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \\t])/,\n lookbehind: true\n }],\n 'operator': /(?:::|[?:+!])?=|[|@]/,\n 'punctuation': /[:;(){}]/\n};\n/* \"prismjs/components/prism-objectivec\" */\n\nPrism.languages.objectivec = Prism.languages.extend('c', {\n 'keyword': /\\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n 'string': /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n 'operator': /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\ndelete Prism.languages.objectivec['class-name'];\n/* \"prismjs/components/prism-ocaml\" */\n\nPrism.languages.ocaml = {\n 'comment': /\\(\\*[\\s\\S]*?\\*\\)/,\n 'string': [{\n pattern: /\"(?:\\\\.|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n }, {\n pattern: /(['`])(?:\\\\(?:\\d+|x[\\da-f]+|.)|(?!\\1)[^\\\\\\r\\n])\\1/i,\n greedy: true\n }],\n 'number': /\\b(?:0x[\\da-f][\\da-f_]+|(?:0[bo])?\\d[\\d_]*\\.?[\\d_]*(?:e[+-]?[\\d_]+)?)/i,\n 'type': {\n pattern: /\\B['`]\\w*/,\n alias: 'variable'\n },\n 'directive': {\n pattern: /\\B#\\w+/,\n alias: 'function'\n },\n 'keyword': /\\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|prefix|private|rec|then|sig|struct|to|try|type|val|value|virtual|where|while|with)\\b/,\n 'boolean': /\\b(?:false|true)\\b/,\n // Custom operators are allowed\n 'operator': /:=|[=<>@^|&+\\-*\\/$%!?~][!$%&*+\\-.\\/:<=>?@^|~]*|\\b(?:and|asr|land|lor|lxor|lsl|lsr|mod|nor|or)\\b/,\n 'punctuation': /[(){}\\[\\]|_.,:;]/\n};\n/* \"prismjs/components/prism-python\" */\n\nPrism.languages.python = {\n 'comment': {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true\n },\n 'string-interpolation': {\n pattern: /(?:f|rf|fr)(?:(\"\"\"|''')[\\s\\S]+?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n greedy: true,\n inside: {\n 'interpolation': {\n // \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n pattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,\n lookbehind: true,\n inside: {\n 'format-spec': {\n pattern: /(:)[^:(){}]+(?=}$)/,\n lookbehind: true\n },\n 'conversion-option': {\n pattern: //,\n alias: 'punctuation'\n },\n rest: null\n }\n },\n 'string': /[\\s\\S]+/\n }\n },\n 'triple-quoted-string': {\n pattern: /(?:[rub]|rb|br)?(\"\"\"|''')[\\s\\S]+?\\1/i,\n greedy: true,\n alias: 'string'\n },\n 'string': {\n pattern: /(?:[rub]|rb|br)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n greedy: true\n },\n 'function': {\n pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n lookbehind: true\n },\n 'class-name': {\n pattern: /(\\bclass\\s+)\\w+/i,\n lookbehind: true\n },\n 'decorator': {\n pattern: /(^\\s*)@\\w+(?:\\.\\w+)*/i,\n lookbehind: true,\n alias: ['annotation', 'punctuation'],\n inside: {\n 'punctuation': /\\./\n }\n },\n 'keyword': /\\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n 'builtin': /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n 'boolean': /\\b(?:True|False|None)\\b/,\n 'number': /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n 'operator': /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n 'punctuation': /[{}[\\];(),.:]/\n};\nPrism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python;\nPrism.languages.py = Prism.languages.python;\n/* \"prismjs/components/prism-reason\" */\n\nPrism.languages.reason = Prism.languages.extend('clike', {\n 'comment': {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n lookbehind: true\n },\n 'string': {\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n },\n // 'class-name' must be matched *after* 'constructor' defined below\n 'class-name': /\\b[A-Z]\\w*/,\n 'keyword': /\\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\\b/,\n 'operator': /\\.{3}|:[:=]|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:mod|land|lor|lxor|lsl|lsr|asr)\\b/\n});\nPrism.languages.insertBefore('reason', 'class-name', {\n 'character': {\n pattern: /'(?:\\\\x[\\da-f]{2}|\\\\o[0-3][0-7][0-7]|\\\\\\d{3}|\\\\.|[^'\\\\\\r\\n])'/,\n alias: 'string'\n },\n 'constructor': {\n // Negative look-ahead prevents from matching things like String.capitalize\n pattern: /\\b[A-Z]\\w*\\b(?!\\s*\\.)/,\n alias: 'variable'\n },\n 'label': {\n pattern: /\\b[a-z]\\w*(?=::)/,\n alias: 'symbol'\n }\n}); // We can't match functions property, so let's not even try.\n\ndelete Prism.languages.reason.function;\n/* \"prismjs/components/prism-sass\" */\n\n(function (Prism) {\n Prism.languages.sass = Prism.languages.extend('css', {\n // Sass comments don't need to be closed, only indented\n 'comment': {\n pattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t]+.+)*/m,\n lookbehind: true\n }\n });\n Prism.languages.insertBefore('sass', 'atrule', {\n // We want to consume the whole line\n 'atrule-line': {\n // Includes support for = and + shortcuts\n pattern: /^(?:[ \\t]*)[@+=].+/m,\n inside: {\n 'atrule': /(?:@[\\w-]+|[+=])/m\n }\n }\n });\n delete Prism.languages.sass.atrule;\n var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/;\n var operator = [/[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|or|not)\\b/, {\n pattern: /(\\s+)-(?=\\s)/,\n lookbehind: true\n }];\n Prism.languages.insertBefore('sass', 'property', {\n // We want to consume the whole line\n 'variable-line': {\n pattern: /^[ \\t]*\\$.+/m,\n inside: {\n 'punctuation': /:/,\n 'variable': variable,\n 'operator': operator\n }\n },\n // We want to consume the whole line\n 'property-line': {\n pattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s]+.*)/m,\n inside: {\n 'property': [/[^:\\s]+(?=\\s*:)/, {\n pattern: /(:)[^:\\s]+/,\n lookbehind: true\n }],\n 'punctuation': /:/,\n 'variable': variable,\n 'operator': operator,\n 'important': Prism.languages.sass.important\n }\n }\n });\n delete Prism.languages.sass.property;\n delete Prism.languages.sass.important; // Now that whole lines for other patterns are consumed,\n // what's left should be selectors\n\n Prism.languages.insertBefore('sass', 'punctuation', {\n 'selector': {\n pattern: /([ \\t]*)\\S(?:,?[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,?[^,\\r\\n]+)*)*/,\n lookbehind: true\n }\n });\n})(Prism);\n/* \"prismjs/components/prism-scss\" */\n\n\nPrism.languages.scss = Prism.languages.extend('css', {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n 'atrule': {\n pattern: /@[\\w-]+(?:\\([^()]+\\)|[^(])*?(?=\\s+[{;])/,\n inside: {\n 'rule': /@[\\w-]+/ // See rest below\n\n }\n },\n // url, compassified\n 'url': /(?:[-a-z]+-)?url(?=\\()/i,\n // CSS selector regex is not appropriate for Sass\n // since there can be lot more things (var, @ directive, nesting..)\n // a selector must start at the end of a property or after a brace (end of other rules or nesting)\n // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable\n // the end of a selector is found when there is no rules in it ( {} or {\\s}) or if there is a property (because an interpolated var\n // can \"pass\" as a selector- e.g: proper#{$erty})\n // this one was hard to do, so please be careful if you edit this one :)\n 'selector': {\n // Initial look-ahead is used to prevent matching of blank selectors\n pattern: /(?=\\S)[^@;{}()]?(?:[^@;{}()]|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}]+[:{][^}]+))/m,\n inside: {\n 'parent': {\n pattern: /&/,\n alias: 'important'\n },\n 'placeholder': /%[-\\w]+/,\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n },\n 'property': {\n pattern: /(?:[\\w-]|\\$[-\\w]+|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,\n inside: {\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n }\n});\nPrism.languages.insertBefore('scss', 'atrule', {\n 'keyword': [/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i, {\n pattern: /( +)(?:from|through)(?= )/,\n lookbehind: true\n }]\n});\nPrism.languages.insertBefore('scss', 'important', {\n // var and interpolated vars\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n});\nPrism.languages.insertBefore('scss', 'function', {\n 'placeholder': {\n pattern: /%[-\\w]+/,\n alias: 'selector'\n },\n 'statement': {\n pattern: /\\B!(?:default|optional)\\b/i,\n alias: 'keyword'\n },\n 'boolean': /\\b(?:true|false)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n },\n 'operator': {\n pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|or|not)(?=\\s)/,\n lookbehind: true\n }\n});\nPrism.languages.scss['atrule'].inside.rest = Prism.languages.scss;\n/* \"prismjs/components/prism-sql\" */\n\nPrism.languages.sql = {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n 'variable': [{\n pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n greedy: true\n }, /@[\\w.$]+/],\n 'string': {\n pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n greedy: true,\n lookbehind: true\n },\n 'function': /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i,\n // 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(?:_INSERT|COL)?|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|RETURNS?|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(?:TRUE|FALSE|NULL)\\b/i,\n 'number': /\\b0x[\\da-f]+\\b|\\b\\d+\\.?\\d*|\\B\\.\\d+\\b/i,\n 'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n 'punctuation': /[;[\\]()`,.]/\n};\n/* \"prismjs/components/prism-stylus\" */\n\n(function (Prism) {\n var inside = {\n 'url': /url\\(([\"']?).*?\\1\\)/i,\n 'string': {\n pattern: /(\"|')(?:(?!\\1)[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\\1/,\n greedy: true\n },\n 'interpolation': null,\n // See below\n 'func': null,\n // See below\n 'important': /\\B!(?:important|optional)\\b/i,\n 'keyword': {\n pattern: /(^|\\s+)(?:(?:if|else|for|return|unless)(?=\\s+|$)|@[\\w-]+)/,\n lookbehind: true\n },\n 'hexcode': /#[\\da-f]{3,6}/i,\n 'number': /\\b\\d+(?:\\.\\d+)?%?/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'operator': [// We want non-word chars around \"-\" because it is\n // accepted in property names.\n /~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.+|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/],\n 'punctuation': /[{}()\\[\\];:,]/\n };\n inside['interpolation'] = {\n pattern: /\\{[^\\r\\n}:]+\\}/,\n alias: 'variable',\n inside: {\n 'delimiter': {\n pattern: /^{|}$/,\n alias: 'punctuation'\n },\n rest: inside\n }\n };\n inside['func'] = {\n pattern: /[\\w-]+\\([^)]*\\).*/,\n inside: {\n 'function': /^[^(]+/,\n rest: inside\n }\n };\n Prism.languages.stylus = {\n 'comment': {\n pattern: /(^|[^\\\\])(\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n 'atrule-declaration': {\n pattern: /(^\\s*)@.+/m,\n lookbehind: true,\n inside: {\n 'atrule': /^@[\\w-]+/,\n rest: inside\n }\n },\n 'variable-declaration': {\n pattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:(?:\\{[^}]*\\}|.+)|$)/m,\n lookbehind: true,\n inside: {\n 'variable': /^\\S+/,\n rest: inside\n }\n },\n 'statement': {\n pattern: /(^[ \\t]*)(?:if|else|for|return|unless)[ \\t]+.+/m,\n lookbehind: true,\n inside: {\n keyword: /^\\S+/,\n rest: inside\n }\n },\n // A property/value pair cannot end with a comma or a brace\n // It cannot have indented content unless it ended with a semicolon\n 'property-declaration': {\n pattern: /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)[^{\\r\\n]*(?:;|[^{\\r\\n,](?=$)(?!(\\r?\\n|\\r)(?:\\{|\\2[ \\t]+)))/m,\n lookbehind: true,\n inside: {\n 'property': {\n pattern: /^[^\\s:]+/,\n inside: {\n 'interpolation': inside.interpolation\n }\n },\n rest: inside\n }\n },\n // A selector can contain parentheses only as part of a pseudo-element\n // It can span multiple lines.\n // It must end with a comma or an accolade or have indented content.\n 'selector': {\n pattern: /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t]+)))/m,\n lookbehind: true,\n inside: {\n 'interpolation': inside.interpolation,\n 'punctuation': /[{},]/\n }\n },\n 'func': inside.func,\n 'string': inside.string,\n 'interpolation': inside.interpolation,\n 'punctuation': /[{}()\\[\\];:.]/\n };\n})(Prism);\n/* \"prismjs/components/prism-tsx\" */\n\n\nvar typescript = Prism.util.clone(Prism.languages.typescript);\nPrism.languages.tsx = Prism.languages.extend('jsx', typescript);\n/* \"prismjs/components/prism-wasm\" */\n\nPrism.languages.wasm = {\n 'comment': [/\\(;[\\s\\S]*?;\\)/, {\n pattern: /;;.*/,\n greedy: true\n }],\n 'string': {\n pattern: /\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n greedy: true\n },\n 'keyword': [{\n pattern: /\\b(?:align|offset)=/,\n inside: {\n 'operator': /=/\n }\n }, {\n pattern: /\\b(?:(?:f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))?|memory\\.(?:grow|size))\\b/,\n inside: {\n 'punctuation': /\\./\n }\n }, /\\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\\b/],\n 'variable': /\\$[\\w!#$%&'*+\\-./:<=>?@\\\\^_`|~]+/i,\n 'number': /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/,\n 'punctuation': /[()]/\n};\n/* \"prismjs/components/prism-yaml\" */\n\nPrism.languages.yaml = {\n 'scalar': {\n pattern: /([\\-:]\\s*(?:![^\\s]+)?[ \\t]*[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)[^\\r\\n]+(?:\\2[^\\r\\n]+)*)/,\n lookbehind: true,\n alias: 'string'\n },\n 'comment': /#.*/,\n 'key': {\n pattern: /(\\s*(?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:![^\\s]+)?[ \\t]*)[^\\r\\n{[\\]},#\\s]+?(?=\\s*:\\s)/,\n lookbehind: true,\n alias: 'atrule'\n },\n 'directive': {\n pattern: /(^[ \\t]*)%.+/m,\n lookbehind: true,\n alias: 'important'\n },\n 'datetime': {\n pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?)?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?)(?=[ \\t]*(?:$|,|]|}))/m,\n lookbehind: true,\n alias: 'number'\n },\n 'boolean': {\n pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:true|false)[ \\t]*(?=$|,|]|})/im,\n lookbehind: true,\n alias: 'important'\n },\n 'null': {\n pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:null|~)[ \\t]*(?=$|,|]|})/im,\n lookbehind: true,\n alias: 'important'\n },\n 'string': {\n pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(\"|')(?:(?!\\2)[^\\\\\\r\\n]|\\\\.)*\\2(?=[ \\t]*(?:$|,|]|}|\\s*#))/m,\n lookbehind: true,\n greedy: true\n },\n 'number': {\n pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+\\.?\\d*|\\.?\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)[ \\t]*(?=$|,|]|})/im,\n lookbehind: true\n },\n 'tag': /![^\\s]+/,\n 'important': /[&*][\\w]+/,\n 'punctuation': /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n};\nPrism.languages.yml = Prism.languages.yaml;\nexport default Prism;","// Duotone Dark\n// Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes)\n// Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-evening-dark.css)\n// Generated with Base16 Builder (https://github.com/base16-builder/base16-builder)\nvar theme = {\n plain: {\n backgroundColor: \"#2a2734\",\n color: \"#9a86fd\"\n },\n styles: [{\n types: [\"comment\", \"prolog\", \"doctype\", \"cdata\", \"punctuation\"],\n style: {\n color: \"#6c6783\"\n }\n }, {\n types: [\"namespace\"],\n style: {\n opacity: 0.7\n }\n }, {\n types: [\"tag\", \"operator\", \"number\"],\n style: {\n color: \"#e09142\"\n }\n }, {\n types: [\"property\", \"function\"],\n style: {\n color: \"#9a86fd\"\n }\n }, {\n types: [\"tag-id\", \"selector\", \"atrule-id\"],\n style: {\n color: \"#eeebff\"\n }\n }, {\n types: [\"attr-name\"],\n style: {\n color: \"#c4b9fe\"\n }\n }, {\n types: [\"boolean\", \"string\", \"entity\", \"url\", \"attr-value\", \"keyword\", \"control\", \"directive\", \"unit\", \"statement\", \"regex\", \"at-rule\", \"placeholder\", \"variable\"],\n style: {\n color: \"#ffcc99\"\n }\n }, {\n types: [\"deleted\"],\n style: {\n textDecorationLine: \"line-through\"\n }\n }, {\n types: [\"inserted\"],\n style: {\n textDecorationLine: \"underline\"\n }\n }, {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n }, {\n types: [\"important\", \"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n }, {\n types: [\"important\"],\n style: {\n color: \"#c4b9fe\"\n }\n }]\n};\nexport default theme;","import Prism from '../prism/index.js';\nexport { default as Prism } from '../prism/index.js';\nimport theme from '../themes/duotoneDark';\nimport { Component } from 'react';\nvar defaultProps = {\n // $FlowFixMe\n Prism: Prism,\n theme: theme\n};\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar newlineRe = /\\r\\n|\\r|\\n/; // Empty lines need to contain a single empty token, denoted with { empty: true }\n\nvar normalizeEmptyLines = function normalizeEmptyLines(line) {\n if (line.length === 0) {\n line.push({\n types: [\"plain\"],\n content: \"\",\n empty: true\n });\n } else if (line.length === 1 && line[0].content === \"\") {\n line[0].empty = true;\n }\n};\n\nvar appendTypes = function appendTypes(types, add) {\n var typesSize = types.length;\n\n if (typesSize > 0 && types[typesSize - 1] === add) {\n return types;\n }\n\n return types.concat(add);\n}; // Takes an array of Prism's tokens and groups them by line, turning plain\n// strings into tokens as well. Tokens can become recursive in some cases,\n// which means that their types are concatenated. Plain-string tokens however\n// are always of type \"plain\".\n// This is not recursive to avoid exceeding the call-stack limit, since it's unclear\n// how nested Prism's tokens can become\n\n\nvar normalizeTokens = function normalizeTokens(tokens) {\n var typeArrStack = [[]];\n var tokenArrStack = [tokens];\n var tokenArrIndexStack = [0];\n var tokenArrSizeStack = [tokens.length];\n var i = 0;\n var stackIndex = 0;\n var currentLine = [];\n var acc = [currentLine];\n\n while (stackIndex > -1) {\n while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) {\n var content = void 0;\n var types = typeArrStack[stackIndex];\n var tokenArr = tokenArrStack[stackIndex];\n var token = tokenArr[i]; // Determine content and append type to types if necessary\n\n if (typeof token === \"string\") {\n types = stackIndex > 0 ? types : [\"plain\"];\n content = token;\n } else {\n types = appendTypes(types, token.type);\n\n if (token.alias) {\n types = appendTypes(types, token.alias);\n }\n\n content = token.content;\n } // If token.content is an array, increase the stack depth and repeat this while-loop\n\n\n if (typeof content !== \"string\") {\n stackIndex++;\n typeArrStack.push(types);\n tokenArrStack.push(content);\n tokenArrIndexStack.push(0);\n tokenArrSizeStack.push(content.length);\n continue;\n } // Split by newlines\n\n\n var splitByNewlines = content.split(newlineRe);\n var newlineCount = splitByNewlines.length;\n currentLine.push({\n types: types,\n content: splitByNewlines[0]\n }); // Create a new line for each string on a new line\n\n for (var i$1 = 1; i$1 < newlineCount; i$1++) {\n normalizeEmptyLines(currentLine);\n acc.push(currentLine = []);\n currentLine.push({\n types: types,\n content: splitByNewlines[i$1]\n });\n }\n } // Decreate the stack depth\n\n\n stackIndex--;\n typeArrStack.pop();\n tokenArrStack.pop();\n tokenArrIndexStack.pop();\n tokenArrSizeStack.pop();\n }\n\n normalizeEmptyLines(currentLine);\n return acc;\n};\n\nvar themeToDict = function themeToDict(theme, language) {\n var plain = theme.plain; // $FlowFixMe\n\n var base = Object.create(null);\n var themeDict = theme.styles.reduce(function (acc, themeEntry) {\n var languages = themeEntry.languages;\n var style = themeEntry.style;\n\n if (languages && !languages.includes(language)) {\n return acc;\n }\n\n themeEntry.types.forEach(function (type) {\n // $FlowFixMe\n var accStyle = _extends({}, acc[type], style);\n\n acc[type] = accStyle;\n });\n return acc;\n }, base); // $FlowFixMe\n\n themeDict.root = plain; // $FlowFixMe\n\n themeDict.plain = _extends({}, plain, {\n backgroundColor: null\n });\n return themeDict;\n};\n\nfunction objectWithoutProperties(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar Highlight = /*@__PURE__*/function (Component) {\n function Highlight() {\n var this$1 = this;\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n Component.apply(this, args);\n\n _defineProperty(this, \"getThemeDict\", function (props) {\n if (this$1.themeDict !== undefined && props.theme === this$1.prevTheme && props.language === this$1.prevLanguage) {\n return this$1.themeDict;\n }\n\n this$1.prevTheme = props.theme;\n this$1.prevLanguage = props.language;\n var themeDict = props.theme ? themeToDict(props.theme, props.language) : undefined;\n return this$1.themeDict = themeDict;\n });\n\n _defineProperty(this, \"getLineProps\", function (ref) {\n var key = ref.key;\n var className = ref.className;\n var style = ref.style;\n var rest$1 = objectWithoutProperties(ref, [\"key\", \"className\", \"style\", \"line\"]);\n var rest = rest$1;\n\n var output = _extends({}, rest, {\n className: \"token-line\",\n style: undefined,\n key: undefined\n });\n\n var themeDict = this$1.getThemeDict(this$1.props);\n\n if (themeDict !== undefined) {\n output.style = themeDict.plain;\n }\n\n if (style !== undefined) {\n output.style = output.style !== undefined ? _extends({}, output.style, style) : style;\n }\n\n if (key !== undefined) {\n output.key = key;\n }\n\n if (className) {\n output.className += \" \" + className;\n }\n\n return output;\n });\n\n _defineProperty(this, \"getStyleForToken\", function (ref) {\n var types = ref.types;\n var empty = ref.empty;\n var typesSize = types.length;\n var themeDict = this$1.getThemeDict(this$1.props);\n\n if (themeDict === undefined) {\n return undefined;\n } else if (typesSize === 1 && types[0] === \"plain\") {\n return empty ? {\n display: \"inline-block\"\n } : undefined;\n } else if (typesSize === 1 && !empty) {\n return themeDict[types[0]];\n }\n\n var baseStyle = empty ? {\n display: \"inline-block\"\n } : {}; // $FlowFixMe\n\n var typeStyles = types.map(function (type) {\n return themeDict[type];\n });\n return Object.assign.apply(Object, [baseStyle].concat(typeStyles));\n });\n\n _defineProperty(this, \"getTokenProps\", function (ref) {\n var key = ref.key;\n var className = ref.className;\n var style = ref.style;\n var token = ref.token;\n var rest$1 = objectWithoutProperties(ref, [\"key\", \"className\", \"style\", \"token\"]);\n var rest = rest$1;\n\n var output = _extends({}, rest, {\n className: \"token \" + token.types.join(\" \"),\n children: token.content,\n style: this$1.getStyleForToken(token),\n key: undefined\n });\n\n if (style !== undefined) {\n output.style = output.style !== undefined ? _extends({}, output.style, style) : style;\n }\n\n if (key !== undefined) {\n output.key = key;\n }\n\n if (className) {\n output.className += \" \" + className;\n }\n\n return output;\n });\n }\n\n if (Component) Highlight.__proto__ = Component;\n Highlight.prototype = Object.create(Component && Component.prototype);\n Highlight.prototype.constructor = Highlight;\n\n Highlight.prototype.render = function render() {\n var ref = this.props;\n var Prism = ref.Prism;\n var language = ref.language;\n var code = ref.code;\n var children = ref.children;\n var themeDict = this.getThemeDict(this.props);\n var grammar = Prism.languages[language];\n var mixedTokens = grammar !== undefined ? Prism.tokenize(code, grammar, language) : [code];\n var tokens = normalizeTokens(mixedTokens);\n return children({\n tokens: tokens,\n className: \"prism-code language-\" + language,\n style: themeDict !== undefined ? themeDict.root : {},\n getLineProps: this.getLineProps,\n getTokenProps: this.getTokenProps\n });\n };\n\n return Highlight;\n}(Component);\n\nexport default Highlight;\nexport { defaultProps };","'use strict';\n\nmodule.exports = function getDefinitions(node) {\n var defs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return (node.children || []).reduce(function (definitions, child) {\n if (child.type === 'definition') {\n definitions[child.identifier] = {\n href: child.url,\n title: child.title\n };\n }\n\n return getDefinitions(child, definitions);\n }, defs);\n};","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n } // if the path is allowed to go above the root, restore leading ..s\n\n\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n} // path.resolve([from ...], to)\n// posix version\n\n\nexports.resolve = function () {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : process.cwd(); // Skip empty and invalid entries\n\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n } // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path\n\n\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}; // path.normalize(path)\n// posix version\n\n\nexports.normalize = function (path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/'; // Normalize the path\n\n path = normalizeArray(filter(path.split('/'), function (p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n}; // posix version\n\n\nexports.isAbsolute = function (path) {\n return path.charAt(0) === '/';\n}; // posix version\n\n\nexports.join = function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function (p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n\n return p;\n }).join('/'));\n}; // path.relative(from, to)\n// posix version\n\n\nexports.relative = function (from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47\n /*/*/\n ;\n var end = -1;\n var matchedSlash = true;\n\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n} // Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\n\n\nexports.basename = function (path, ext) {\n var f = basename(path);\n\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true; // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n\n var preDotState = 0;\n\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n\n continue;\n }\n\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n\n if (code === 46\n /*.*/\n ) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n\n return path.slice(startDot, end);\n};\n\nfunction filter(xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n\n return res;\n} // String.prototype.substr - negative index don't work in IE8\n\n\nvar substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) {\n return str.substr(start, len);\n} : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n};","/* eslint-disable react/prop-types, react/no-multi-comp */\n'use strict';\n\nvar xtend = require('xtend');\n\nvar React = require('react');\n\nvar supportsStringRender = parseInt((React.version || '16').slice(0, 2), 10) >= 16;\nvar createElement = React.createElement;\nmodule.exports = {\n break: 'br',\n paragraph: 'p',\n emphasis: 'em',\n strong: 'strong',\n thematicBreak: 'hr',\n blockquote: 'blockquote',\n delete: 'del',\n link: 'a',\n image: 'img',\n linkReference: 'a',\n imageReference: 'img',\n table: SimpleRenderer.bind(null, 'table'),\n tableHead: SimpleRenderer.bind(null, 'thead'),\n tableBody: SimpleRenderer.bind(null, 'tbody'),\n tableRow: SimpleRenderer.bind(null, 'tr'),\n tableCell: TableCell,\n root: Root,\n text: TextRenderer,\n list: List,\n listItem: ListItem,\n definition: NullRenderer,\n heading: Heading,\n inlineCode: InlineCode,\n code: CodeBlock,\n html: Html,\n virtualHtml: VirtualHtml,\n parsedHtml: ParsedHtml\n};\n\nfunction TextRenderer(props) {\n return supportsStringRender ? props.children : createElement('span', null, props.children);\n}\n\nfunction Root(props) {\n var useFragment = !props.className;\n var root = useFragment ? React.Fragment || 'div' : 'div';\n return createElement(root, useFragment ? null : props, props.children);\n}\n\nfunction SimpleRenderer(tag, props) {\n return createElement(tag, getCoreProps(props), props.children);\n}\n\nfunction TableCell(props) {\n var style = props.align ? {\n textAlign: props.align\n } : undefined;\n var coreProps = getCoreProps(props);\n return createElement(props.isHeader ? 'th' : 'td', style ? xtend({\n style: style\n }, coreProps) : coreProps, props.children);\n}\n\nfunction Heading(props) {\n return createElement(\"h\".concat(props.level), getCoreProps(props), props.children);\n}\n\nfunction List(props) {\n var attrs = getCoreProps(props);\n\n if (props.start !== null && props.start !== 1 && props.start !== undefined) {\n attrs.start = props.start.toString();\n }\n\n return createElement(props.ordered ? 'ol' : 'ul', attrs, props.children);\n}\n\nfunction ListItem(props) {\n var checkbox = null;\n\n if (props.checked !== null && props.checked !== undefined) {\n var checked = props.checked;\n checkbox = createElement('input', {\n type: 'checkbox',\n checked: checked,\n readOnly: true\n });\n }\n\n return createElement('li', getCoreProps(props), checkbox, props.children);\n}\n\nfunction CodeBlock(props) {\n var className = props.language && \"language-\".concat(props.language);\n var code = createElement('code', className ? {\n className: className\n } : null, props.value);\n return createElement('pre', getCoreProps(props), code);\n}\n\nfunction InlineCode(props) {\n return createElement('code', getCoreProps(props), props.children);\n}\n\nfunction Html(props) {\n if (props.skipHtml) {\n return null;\n }\n\n var tag = props.isBlock ? 'div' : 'span';\n\n if (props.escapeHtml) {\n var comp = React.Fragment || tag;\n return createElement(comp, null, props.value);\n }\n\n var nodeProps = {\n dangerouslySetInnerHTML: {\n __html: props.value\n }\n };\n return createElement(tag, nodeProps);\n}\n\nfunction ParsedHtml(props) {\n return props['data-sourcepos'] ? React.cloneElement(props.element, {\n 'data-sourcepos': props['data-sourcepos']\n }) : props.element;\n}\n\nfunction VirtualHtml(props) {\n return createElement(props.tag, getCoreProps(props), props.children);\n}\n\nfunction NullRenderer() {\n return null;\n}\n\nfunction getCoreProps(props) {\n return props['data-sourcepos'] ? {\n 'data-sourcepos': props['data-sourcepos']\n } : {};\n}","'use strict';\n\nvar React = require('react');\n\nvar xtend = require('xtend');\n\nvar ReactIs = require('react-is');\n\nvar defaultNodePosition = {\n start: {\n line: 1,\n column: 1,\n offset: 0\n },\n end: {\n line: 1,\n column: 1,\n offset: 0\n }\n};\n\nfunction astToReact(node, options) {\n var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var renderer = options.renderers[node.type]; // nodes generated by plugins may not have position data\n // much of the code after this point will attempt to access properties of the node.position\n // this will set the node position to the parent node's position to prevent errors\n\n if (node.position === undefined) {\n node.position = parent.node && parent.node.position || defaultNodePosition;\n }\n\n var pos = node.position.start;\n var key = [node.type, pos.line, pos.column, index].join('-');\n\n if (!ReactIs.isValidElementType(renderer)) {\n throw new Error(\"Renderer for type `\".concat(node.type, \"` not defined or is not renderable\"));\n }\n\n var nodeProps = getNodeProps(node, key, options, renderer, parent, index);\n return React.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || undefined);\n\n function resolveChildren() {\n return node.children && node.children.map(function (childNode, i) {\n return astToReact(childNode, options, {\n node: node,\n props: nodeProps\n }, i);\n });\n }\n} // eslint-disable-next-line max-params, complexity\n\n\nfunction getNodeProps(node, key, opts, renderer, parent, index) {\n var props = {\n key: key\n };\n var isTagRenderer = typeof renderer === 'string'; // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n\n if (opts.sourcePos && node.position) {\n props['data-sourcepos'] = flattenPosition(node.position);\n }\n\n if (opts.rawSourcePos && !isTagRenderer) {\n props.sourcePosition = node.position;\n } // If `includeNodeIndex` is true, pass node index info to all non-tag renderers\n\n\n if (opts.includeNodeIndex && parent.node && parent.node.children && !isTagRenderer) {\n props.index = parent.node.children.indexOf(node);\n props.parentChildCount = parent.node.children.length;\n }\n\n var ref = node.identifier !== null && node.identifier !== undefined ? opts.definitions[node.identifier] || {} : null;\n\n switch (node.type) {\n case 'root':\n assignDefined(props, {\n className: opts.className\n });\n break;\n\n case 'text':\n props.nodeKey = key;\n props.children = node.value;\n break;\n\n case 'heading':\n props.level = node.depth;\n break;\n\n case 'list':\n props.start = node.start;\n props.ordered = node.ordered;\n props.tight = !node.loose;\n props.depth = node.depth;\n break;\n\n case 'listItem':\n props.checked = node.checked;\n props.tight = !node.loose;\n props.ordered = node.ordered;\n props.index = node.index;\n props.children = getListItemChildren(node, parent).map(function (childNode, i) {\n return astToReact(childNode, opts, {\n node: node,\n props: props\n }, i);\n });\n break;\n\n case 'definition':\n assignDefined(props, {\n identifier: node.identifier,\n title: node.title,\n url: node.url\n });\n break;\n\n case 'code':\n assignDefined(props, {\n language: node.lang && node.lang.split(/\\s/, 1)[0]\n });\n break;\n\n case 'inlineCode':\n props.children = node.value;\n props.inline = true;\n break;\n\n case 'link':\n assignDefined(props, {\n title: node.title || undefined,\n target: typeof opts.linkTarget === 'function' ? opts.linkTarget(node.url, node.children, node.title) : opts.linkTarget,\n href: opts.transformLinkUri ? opts.transformLinkUri(node.url, node.children, node.title) : node.url\n });\n break;\n\n case 'image':\n assignDefined(props, {\n alt: node.alt || undefined,\n title: node.title || undefined,\n src: opts.transformImageUri ? opts.transformImageUri(node.url, node.children, node.title, node.alt) : node.url\n });\n break;\n\n case 'linkReference':\n assignDefined(props, xtend(ref, {\n href: opts.transformLinkUri ? opts.transformLinkUri(ref.href) : ref.href\n }));\n break;\n\n case 'imageReference':\n assignDefined(props, {\n src: opts.transformImageUri && ref.href ? opts.transformImageUri(ref.href, node.children, ref.title, node.alt) : ref.href,\n title: ref.title || undefined,\n alt: node.alt || undefined\n });\n break;\n\n case 'table':\n case 'tableHead':\n case 'tableBody':\n props.columnAlignment = node.align;\n break;\n\n case 'tableRow':\n props.isHeader = parent.node.type === 'tableHead';\n props.columnAlignment = parent.props.columnAlignment;\n break;\n\n case 'tableCell':\n assignDefined(props, {\n isHeader: parent.props.isHeader,\n align: parent.props.columnAlignment[index]\n });\n break;\n\n case 'virtualHtml':\n props.tag = node.tag;\n break;\n\n case 'html':\n // @todo find a better way than this\n props.isBlock = node.position.start.line !== node.position.end.line;\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n break;\n\n case 'parsedHtml':\n {\n var parsedChildren;\n\n if (node.children) {\n parsedChildren = node.children.map(function (child, i) {\n return astToReact(child, opts, {\n node: node,\n props: props\n }, i);\n });\n }\n\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n props.element = mergeNodeChildren(node, parsedChildren);\n break;\n }\n\n default:\n assignDefined(props, xtend(node, {\n type: undefined,\n position: undefined,\n children: undefined\n }));\n }\n\n if (!isTagRenderer && node.value) {\n props.value = node.value;\n }\n\n return props;\n}\n\nfunction assignDefined(target, attrs) {\n for (var key in attrs) {\n if (typeof attrs[key] !== 'undefined') {\n target[key] = attrs[key];\n }\n }\n}\n\nfunction mergeNodeChildren(node, parsedChildren) {\n var el = node.element;\n\n if (Array.isArray(el)) {\n var Fragment = React.Fragment || 'div';\n return React.createElement(Fragment, null, el);\n }\n\n if (el.props.children || parsedChildren) {\n var children = React.Children.toArray(el.props.children).concat(parsedChildren);\n return React.cloneElement(el, null, children);\n }\n\n return React.cloneElement(el, null);\n}\n\nfunction flattenPosition(pos) {\n return [pos.start.line, ':', pos.start.column, '-', pos.end.line, ':', pos.end.column].map(String).join('');\n}\n\nfunction getListItemChildren(node, parent) {\n if (node.loose) {\n return node.children;\n }\n\n if (parent.node && node.index > 0 && parent.node.children[node.index - 1].loose) {\n return node.children;\n }\n\n return unwrapParagraphs(node);\n}\n\nfunction unwrapParagraphs(node) {\n return node.children.reduce(function (array, child) {\n return array.concat(child.type === 'paragraph' ? child.children || [] : [child]);\n }, []);\n}\n\nmodule.exports = astToReact;","'use strict';\n\nvar xtend = require('xtend');\n\nvar removePosition = require('unist-util-remove-position');\n\nmodule.exports = parse;\nvar C_NEWLINE = '\\n';\nvar EXPRESSION_LINE_BREAKS = /\\r\\n|\\r/g;\n/* Parse the bound file. */\n\nfunction parse() {\n var self = this;\n var value = String(self.file);\n var start = {\n line: 1,\n column: 1,\n offset: 0\n };\n var content = xtend(start);\n var node;\n /* Clean non-unix newlines: `\\r\\n` and `\\r` are all\n * changed to `\\n`. This should not affect positional\n * information. */\n\n value = value.replace(EXPRESSION_LINE_BREAKS, C_NEWLINE);\n\n if (value.charCodeAt(0) === 0xFEFF) {\n value = value.slice(1);\n content.column++;\n content.offset++;\n }\n\n node = {\n type: 'root',\n children: self.tokenizeBlock(value, content),\n position: {\n start: start,\n end: self.eof || xtend(start)\n }\n };\n\n if (!self.options.position) {\n removePosition(node, true);\n }\n\n return node;\n}","'use strict';\n\nmodule.exports = visitParents;\n\nvar convert = require('unist-util-is/convert');\n\nvar CONTINUE = true;\nvar SKIP = 'skip';\nvar EXIT = false;\nvisitParents.CONTINUE = CONTINUE;\nvisitParents.SKIP = SKIP;\nvisitParents.EXIT = EXIT;\n\nfunction visitParents(tree, test, visitor, reverse) {\n var is;\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n\n is = convert(test);\n one(tree, null, []); // Visit a single node.\n\n function one(node, index, parents) {\n var result = [];\n var subresult;\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents));\n\n if (result[0] === EXIT) {\n return result;\n }\n }\n\n if (node.children && result[0] !== SKIP) {\n subresult = toResult(all(node.children, parents.concat(node)));\n return subresult[0] === EXIT ? subresult : result;\n }\n\n return result;\n } // Visit children in `parent`.\n\n\n function all(children, parents) {\n var min = -1;\n var step = reverse ? -1 : 1;\n var index = (reverse ? children.length : min) + step;\n var result;\n\n while (index > min && index < children.length) {\n result = one(children[index], index, parents);\n\n if (result[0] === EXIT) {\n return result;\n }\n\n index = typeof result[1] === 'number' ? result[1] : index + step;\n }\n }\n}\n\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value;\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value];\n }\n\n return [value];\n}","'use strict';\n\nmodule.exports = bail;\n\nfunction bail(err) {\n if (err) {\n throw err;\n }\n}","'use strict';\n\nvar alphabetical = require('is-alphabetical');\n\nvar decimal = require('is-decimal');\n\nmodule.exports = alphanumerical;\n/* Check if the given character code, or the character\n * code at the first character, is alphanumerical. */\n\nfunction alphanumerical(character) {\n return alphabetical(character) || decimal(character);\n}","\"use strict\";\n\nvar protocols = ['http', 'https', 'mailto', 'tel'];\n\nmodule.exports = function uriTransformer(uri) {\n var url = (uri || '').trim();\n var first = url.charAt(0);\n\n if (first === '#' || first === '/') {\n return url;\n }\n\n var colon = url.indexOf(':');\n\n if (colon === -1) {\n return url;\n }\n\n var length = protocols.length;\n var index = -1;\n\n while (++index < length) {\n var protocol = protocols[index];\n\n if (colon === protocol.length && url.slice(0, protocol.length).toLowerCase() === protocol) {\n return url;\n }\n }\n\n index = url.indexOf('?');\n\n if (index !== -1 && colon > index) {\n return url;\n }\n\n index = url.indexOf('#');\n\n if (index !== -1 && colon > index) {\n return url;\n } // eslint-disable-next-line no-script-url\n\n\n return 'javascript:void(0)';\n};","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var index = value.indexOf('\\n', fromIndex);\n\n while (index > fromIndex) {\n if (value.charAt(index - 1) !== ' ') {\n break;\n }\n\n index--;\n }\n\n return index;\n}","'use strict';\n\nmodule.exports = convert;\n\nfunction convert(test) {\n if (typeof test === 'string') {\n return typeFactory(test);\n }\n\n if (test === null || test === undefined) {\n return ok;\n }\n\n if (typeof test === 'object') {\n return ('length' in test ? anyFactory : matchesFactory)(test);\n }\n\n if (typeof test === 'function') {\n return test;\n }\n\n throw new Error('Expected function, string, or object as test');\n}\n\nfunction convertAll(tests) {\n var results = [];\n var length = tests.length;\n var index = -1;\n\n while (++index < length) {\n results[index] = convert(tests[index]);\n }\n\n return results;\n} // Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\n\n\nfunction matchesFactory(test) {\n return matches;\n\n function matches(node) {\n var key;\n\n for (key in test) {\n if (node[key] !== test[key]) {\n return false;\n }\n }\n\n return true;\n }\n}\n\nfunction anyFactory(tests) {\n var checks = convertAll(tests);\n var length = checks.length;\n return matches;\n\n function matches() {\n var index = -1;\n\n while (++index < length) {\n if (checks[index].apply(this, arguments)) {\n return true;\n }\n }\n\n return false;\n }\n} // Utility to convert a string into a function which checks a given node’s type\n// for said string.\n\n\nfunction typeFactory(test) {\n return type;\n\n function type(node) {\n return Boolean(node && node.type === test);\n }\n} // Utility to return true.\n\n\nfunction ok() {\n return true;\n}","'use strict';\n\nmodule.exports = interrupt;\n\nfunction interrupt(interruptors, tokenizers, ctx, params) {\n var bools = ['pedantic', 'commonmark'];\n var count = bools.length;\n var length = interruptors.length;\n var index = -1;\n var interruptor;\n var config;\n var fn;\n var offset;\n var bool;\n var ignore;\n\n while (++index < length) {\n interruptor = interruptors[index];\n config = interruptor[1] || {};\n fn = interruptor[0];\n offset = -1;\n ignore = false;\n\n while (++offset < count) {\n bool = bools[offset];\n\n if (config[bool] !== undefined && config[bool] !== ctx.options[bool]) {\n ignore = true;\n break;\n }\n }\n\n if (ignore) {\n continue;\n }\n\n if (tokenizers[fn].apply(ctx, params)) {\n return true;\n }\n }\n\n return false;\n}","'use strict';\n\nmodule.exports = trimTrailingLines;\nvar line = '\\n';\n/* Remove final newline characters from `value`. */\n\nfunction trimTrailingLines(value) {\n var val = String(value);\n var index = val.length;\n\n while (val.charAt(--index) === line) {\n /* Empty */\n }\n\n return val.slice(0, index + 1);\n}","'use strict';\n\nvar VMessage = require('vfile-message');\n\nvar VFile = require('./core.js');\n\nmodule.exports = VFile;\nvar proto = VFile.prototype;\nproto.message = message;\nproto.info = info;\nproto.fail = fail;\n/* Slight backwards compatibility. Remove in the future. */\n\nproto.warn = message;\n/* Create a message with `reason` at `position`.\n * When an error is passed in as `reason`, copies the stack. */\n\nfunction message(reason, position, origin) {\n var filePath = this.path;\n var message = new VMessage(reason, position, origin);\n\n if (filePath) {\n message.name = filePath + ':' + message.name;\n message.file = filePath;\n }\n\n message.fatal = false;\n this.messages.push(message);\n return message;\n}\n/* Fail. Creates a vmessage, associates it with the file,\n * and throws it. */\n\n\nfunction fail() {\n var message = this.message.apply(this, arguments);\n message.fatal = true;\n throw message;\n}\n/* Info. Creates a vmessage, associates it with the file,\n * and marks the fatality as null. */\n\n\nfunction info() {\n var message = this.message.apply(this, arguments);\n message.fatal = null;\n return message;\n}","'use strict';\n\nvar trim = require('trim');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/strong');\n\nmodule.exports = strong;\nstrong.locator = locate;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction strong(eat, value, silent) {\n var self = this;\n var index = 0;\n var character = value.charAt(index);\n var now;\n var pedantic;\n var marker;\n var queue;\n var subvalue;\n var length;\n var prev;\n\n if (character !== C_ASTERISK && character !== C_UNDERSCORE || value.charAt(++index) !== character) {\n return;\n }\n\n pedantic = self.options.pedantic;\n marker = character;\n subvalue = marker + marker;\n length = value.length;\n index++;\n queue = '';\n character = '';\n\n if (pedantic && whitespace(value.charAt(index))) {\n return;\n }\n\n while (index < length) {\n prev = character;\n character = value.charAt(index);\n\n if (character === marker && value.charAt(index + 1) === marker && (!pedantic || !whitespace(prev))) {\n character = value.charAt(index + 2);\n\n if (character !== marker) {\n if (!trim(queue)) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n now.column += 2;\n now.offset += 2;\n return eat(subvalue + queue + subvalue)({\n type: 'strong',\n children: self.tokenizeInline(queue, now)\n });\n }\n }\n\n if (!pedantic && character === '\\\\') {\n queue += character;\n character = value.charAt(++index);\n }\n\n queue += character;\n index++;\n }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('`', fromIndex);\n}","var toString = Object.prototype.toString;\nmodule.exports = isString;\n\nfunction isString(obj) {\n return toString.call(obj) === \"[object String]\";\n}","'use strict';\n\nvar attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar unquoted = \"[^\\\"'=<>`\\\\u0000-\\\\u0020]+\";\nvar singleQuoted = '\\'[^\\']*\\'';\nvar doubleQuoted = '\"[^\"]*\"';\nvar attributeValue = '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')';\nvar attribute = '(?:\\\\s+' + attributeName + '(?:\\\\s*=\\\\s*' + attributeValue + ')?)';\nvar openTag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\nvar closeTag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';\nvar processing = '<[?].*?[?]>';\nvar declaration = '<![A-Za-z]+\\\\s+[^>]*>';\nvar cdata = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>';\nexports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')');\nexports.tag = new RegExp('^(?:' + openTag + '|' + closeTag + '|' + comment + '|' + processing + '|' + declaration + '|' + cdata + ')');","'use strict';\n\nmodule.exports = {\n position: true,\n gfm: true,\n commonmark: false,\n footnotes: false,\n pedantic: false,\n blocks: require('./block-elements.json')\n};","'use strict';\n\nvar AlgoliaSearch = require('../../AlgoliaSearch.js');\n\nvar createAlgoliasearch = require('../createAlgoliasearch.js');\n\nmodule.exports = createAlgoliasearch(AlgoliaSearch, 'Browser');","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/code-inline');\n\nmodule.exports = inlineCode;\ninlineCode.locator = locate;\nvar C_TICK = '`';\n/* Tokenise inline code. */\n\nfunction inlineCode(eat, value, silent) {\n var length = value.length;\n var index = 0;\n var queue = '';\n var tickQueue = '';\n var contentQueue;\n var subqueue;\n var count;\n var openingCount;\n var subvalue;\n var character;\n var found;\n var next;\n\n while (index < length) {\n if (value.charAt(index) !== C_TICK) {\n break;\n }\n\n queue += C_TICK;\n index++;\n }\n\n if (!queue) {\n return;\n }\n\n subvalue = queue;\n openingCount = index;\n queue = '';\n next = value.charAt(index);\n count = 0;\n\n while (index < length) {\n character = next;\n next = value.charAt(index + 1);\n\n if (character === C_TICK) {\n count++;\n tickQueue += character;\n } else {\n count = 0;\n queue += character;\n }\n\n if (count && next !== C_TICK) {\n if (count === openingCount) {\n subvalue += queue + tickQueue;\n found = true;\n break;\n }\n\n queue += tickQueue;\n tickQueue = '';\n }\n\n index++;\n }\n\n if (!found) {\n if (openingCount % 2 !== 0) {\n return;\n }\n\n queue = '';\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n contentQueue = '';\n subqueue = '';\n length = queue.length;\n index = -1;\n\n while (++index < length) {\n character = queue.charAt(index);\n\n if (whitespace(character)) {\n subqueue += character;\n continue;\n }\n\n if (subqueue) {\n if (contentQueue) {\n contentQueue += subqueue;\n }\n\n subqueue = '';\n }\n\n contentQueue += character;\n }\n\n return eat(subvalue)({\n type: 'inlineCode',\n value: contentQueue\n });\n}","'use strict';\n\nmodule.exports = thematicBreak;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_DASH = '-';\nvar THEMATIC_BREAK_MARKER_COUNT = 3;\n\nfunction thematicBreak(eat, value, silent) {\n var index = -1;\n var length = value.length + 1;\n var subvalue = '';\n var character;\n var marker;\n var markerCount;\n var queue;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n subvalue += character;\n }\n\n if (character !== C_ASTERISK && character !== C_DASH && character !== C_UNDERSCORE) {\n return;\n }\n\n marker = character;\n subvalue += character;\n markerCount = 1;\n queue = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === marker) {\n markerCount++;\n subvalue += queue + marker;\n queue = '';\n } else if (character === C_SPACE) {\n queue += character;\n } else if (markerCount >= THEMATIC_BREAK_MARKER_COUNT && (!character || character === C_NEWLINE)) {\n subvalue += queue;\n\n if (silent) {\n return true;\n }\n\n return eat(subvalue)({\n type: 'thematicBreak'\n });\n } else {\n return;\n }\n }\n}","'use strict';\n\nvar path = require('path');\n\nvar replace = require('replace-ext');\n\nvar buffer = require('is-buffer');\n\nmodule.exports = VFile;\nvar own = {}.hasOwnProperty;\nvar proto = VFile.prototype;\nproto.toString = toString;\n/* Order of setting (least specific to most), we need this because\n * otherwise `{stem: 'a', path: '~/b.js'}` would throw, as a path\n * is needed before a stem can be set. */\n\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname'];\n/* Construct a new file. */\n\nfunction VFile(options) {\n var prop;\n var index;\n var length;\n\n if (!options) {\n options = {};\n } else if (typeof options === 'string' || buffer(options)) {\n options = {\n contents: options\n };\n } else if ('message' in options && 'messages' in options) {\n return options;\n }\n\n if (!(this instanceof VFile)) {\n return new VFile(options);\n }\n\n this.data = {};\n this.messages = [];\n this.history = [];\n this.cwd = process.cwd();\n /* Set path related properties in the correct order. */\n\n index = -1;\n length = order.length;\n\n while (++index < length) {\n prop = order[index];\n\n if (own.call(options, prop)) {\n this[prop] = options[prop];\n }\n }\n /* Set non-path related properties. */\n\n\n for (prop in options) {\n if (order.indexOf(prop) === -1) {\n this[prop] = options[prop];\n }\n }\n}\n/* Access full path (`~/index.min.js`). */\n\n\nObject.defineProperty(proto, 'path', {\n get: function get() {\n return this.history[this.history.length - 1];\n },\n set: function set(path) {\n assertNonEmpty(path, 'path');\n\n if (path !== this.path) {\n this.history.push(path);\n }\n }\n});\n/* Access parent path (`~`). */\n\nObject.defineProperty(proto, 'dirname', {\n get: function get() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined;\n },\n set: function set(dirname) {\n assertPath(this.path, 'dirname');\n this.path = path.join(dirname || '', this.basename);\n }\n});\n/* Access basename (`index.min.js`). */\n\nObject.defineProperty(proto, 'basename', {\n get: function get() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined;\n },\n set: function set(basename) {\n assertNonEmpty(basename, 'basename');\n assertPart(basename, 'basename');\n this.path = path.join(this.dirname || '', basename);\n }\n});\n/* Access extname (`.js`). */\n\nObject.defineProperty(proto, 'extname', {\n get: function get() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined;\n },\n set: function set(extname) {\n var ext = extname || '';\n assertPart(ext, 'extname');\n assertPath(this.path, 'extname');\n\n if (ext) {\n if (ext.charAt(0) !== '.') {\n throw new Error('`extname` must start with `.`');\n }\n\n if (ext.indexOf('.', 1) !== -1) {\n throw new Error('`extname` cannot contain multiple dots');\n }\n }\n\n this.path = replace(this.path, ext);\n }\n});\n/* Access stem (`index.min`). */\n\nObject.defineProperty(proto, 'stem', {\n get: function get() {\n return typeof this.path === 'string' ? path.basename(this.path, this.extname) : undefined;\n },\n set: function set(stem) {\n assertNonEmpty(stem, 'stem');\n assertPart(stem, 'stem');\n this.path = path.join(this.dirname || '', stem + (this.extname || ''));\n }\n});\n/* Get the value of the file. */\n\nfunction toString(encoding) {\n var value = this.contents || '';\n return buffer(value) ? value.toString(encoding) : String(value);\n}\n/* Assert that `part` is not a path (i.e., does\n * not contain `path.sep`). */\n\n\nfunction assertPart(part, name) {\n if (part.indexOf(path.sep) !== -1) {\n throw new Error('`' + name + '` cannot be a path: did not expect `' + path.sep + '`');\n }\n}\n/* Assert that `part` is not empty. */\n\n\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty');\n }\n}\n/* Assert `path` exists. */\n\n\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too');\n }\n}","export default `\n/*\n\nName: Base16 Atelier Sulphurpool Light\nAuthor: Bram de Haan (https://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool)\n\nPrism template by Bram de Haan (https://atelierbram.github.io/syntax-highlighting/prism/)\nOriginal Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)\n\n*/\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n font-family: Consolas, Menlo, Monaco, \"Andale Mono WT\", \"Andale Mono\",\n \"Lucida Console\", \"Lucida Sans Typewriter\", \"DejaVu Sans Mono\",\n \"Bitstream Vera Sans Mono\", \"Liberation Mono\", \"Nimbus Mono L\",\n \"Courier New\", Courier, monospace;\n font-size: 14px;\n line-height: 1.375;\n direction: ltr;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n background: #f5f7ff;\n color: #5e6687;\n}\n\npre[class*=\"language-\"]::-moz-selection,\npre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection,\ncode[class*=\"language-\"] ::-moz-selection {\n text-shadow: none;\n background: #dfe2f1;\n}\n\npre[class*=\"language-\"]::selection,\npre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection,\ncode[class*=\"language-\"] ::selection {\n text-shadow: none;\n background: #dfe2f1;\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n padding: 1em;\n margin: 0.5em 0;\n overflow: auto;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n padding: 0.1em;\n border-radius: 0.3em;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: #898ea4;\n}\n\n.token.punctuation {\n color: #5e6687;\n}\n\n.token.namespace {\n opacity: 0.7;\n}\n\n.token.operator,\n.token.boolean,\n.token.number {\n color: #c76b29;\n}\n\n.token.property {\n color: #c08b30;\n}\n\n.token.tag {\n color: #3d8fd1;\n}\n\n.token.string {\n color: #22a2c9;\n}\n\n.token.selector {\n color: #6679cc;\n}\n\n.token.attr-name {\n color: #c76b29;\n}\n\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n color: #22a2c9;\n}\n\n.token.attr-value,\n.token.keyword,\n.token.control,\n.token.directive,\n.token.unit {\n color: #ac9739;\n}\n\n.token.statement,\n.token.regex,\n.token.atrule {\n color: #22a2c9;\n}\n\n.token.placeholder,\n.token.variable {\n color: #3d8fd1;\n}\n\n.token.deleted {\n text-decoration: line-through;\n}\n\n.token.inserted {\n border-bottom: 1px dotted #202746;\n text-decoration: none;\n}\n\n.token.italic {\n font-style: italic;\n}\n\n.token.important,\n.token.bold {\n font-weight: bold;\n}\n\n.token.important {\n color: #c94922;\n}\n\n.token.entity {\n cursor: help;\n}\n\npre > code.highlight {\n outline: 0.4em solid #c94922;\n outline-offset: 0.4em;\n}\n\n/* overrides color-values for the Line Numbers plugin\n * http://prismjs.com/plugins/line-numbers/\n */\n.line-numbers .line-numbers-rows {\n border-right-color: #dfe2f1;\n}\n\n.line-numbers-rows > span:before {\n color: #979db4;\n}\n\n/* overrides color-values for the Line Highlight plugin\n * http://prismjs.com/plugins/line-highlight/\n */\n.line-highlight {\n background: rgba(107, 115, 148, 0.2);\n background: -webkit-linear-gradient(\n left,\n rgba(107, 115, 148, 0.2) 70%,\n rgba(107, 115, 148, 0)\n );\n background: linear-gradient(\n to right,\n rgba(107, 115, 148, 0.2) 70%,\n rgba(107, 115, 148, 0)\n );\n}\n`\n"],"sourceRoot":""}
|
|
1
|
+
{"version":3,"sources":["webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/emphasis.js","webpack:///./src/utils/is-official-package.ts","webpack:////Users/misiek/dev/v2-gatsby/node_modules/is-whitespace-character/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/collapse-white-space/index.js","webpack:///./src/components/gatsby-monogram.tsx","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/table.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/paragraph.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/url.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/unist-util-remove-position/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/vfile-location/index.js","webpack:///./src/utils/use-npm-data.tsx","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/newline.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/unist-util-visit/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/footnote-definition.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/util/get-indentation.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/vfile-message/node_modules/unist-util-stringify-position/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/state-toggle/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/parser.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/reference.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/algoliasearch/src/IndexBrowser.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/algoliasearch/src/Index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/list.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/is-word-character/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/link.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/is-hexadecimal/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-fenced.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/markdown-escapes/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/util/remove-indentation.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/unherit/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/unified/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/locate/link.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/repeat-string/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/set-options.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/trough/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/xtend/immutable.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/decode.js","webpack:///./src/pages/plugins.tsx","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/break.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/is-plain-obj/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/is-alphabetical/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/is-buffer/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/unist-util-remove-position/node_modules/unist-util-visit/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/locate/emphasis.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/algoliasearch/src/createAnalyticsClient.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/is-decimal/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/mdast-add-list-metadata/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/locate/url.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/replace-ext/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/lib/symbols.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/escape.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/parse-entities/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/lib/wrap-table-rows.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/heading-setext.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/locate/delete.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/vfile-message/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/lib/react-markdown.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/locate/strong.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/extend/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/trough/wrap.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/definition.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/lib/plugins/naive-html.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/auto-link.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/trim/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/locate/escape.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenizer.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/text.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/blockquote.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/lib/plugins/disallow-node.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/html-inline.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/delete.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/util/normalize.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-indented.js","webpack:///./src/github.svg","webpack:////Users/misiek/dev/v2-gatsby/node_modules/algoliasearch/src/AlgoliaSearch.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/mdast-add-list-metadata/node_modules/unist-util-visit-parents/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/html-block.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/locate/tag.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/unescape.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/@reach/tabs/dist/tabs.esm.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/heading-atx.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/prism-react-renderer/prism/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/prism-react-renderer/themes/duotoneDark/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/prism-react-renderer/dist/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/lib/get-definitions.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/path-browserify/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/lib/renderers.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/lib/ast-to-react.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/parse.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/unist-util-visit-parents/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/bail/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/is-alphanumerical/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/lib/uri-transformer.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/locate/break.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/unist-util-visit-parents/node_modules/unist-util-is/convert.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/util/interrupt.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/trim-trailing-lines/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/vfile/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/strong.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/locate/code-inline.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/x-is-string/index.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/util/html.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/defaults.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/algoliasearch/src/browser/builds/algoliasearch.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/code-inline.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/remark-parse/lib/tokenize/thematic-break.js","webpack:////Users/misiek/dev/v2-gatsby/node_modules/react-markdown/node_modules/vfile/core.js","webpack:///./src/prism-theme.tsx"],"names":["trim","word","whitespace","locate","module","exports","emphasis","locator","eat","value","silent","now","pedantic","marker","queue","subvalue","length","prev","index","character","charAt","this","options","column","offset","type","children","tokenizeInline","isOfficialPackage","pkg","repository","name","startsWith","url","re","test","fromCode","String","fromCharCode","replace","Monogram","fill","xmlns","viewBox","focusable","height","width","d","alignments","alignment","row","lines","hasDash","align","cell","preamble","count","opening","position","lineCount","line","rows","table","lineIndex","pipeIndex","first","gfm","indexOf","push","slice","join","splice","reset","decimal","trimTrailingLines","interrupt","size","settings","commonmark","tokenizers","blockTokenizers","interruptors","interruptParagraph","list","call","inList","left","decode","notInLink","PROTOCOLS","PROTOCOLS_LENGTH","content","protocol","match","parenCount","nextCharacter","exit","toLowerCase","substr","enterLink","title","nonTerminated","visit","hard","node","soft","undefined","force","offsetToPositionFactory","indices","positionToOffsetFactory","isNaN","file","contents","result","toPosition","toOffset","searchIndex","algoliasearch","algoliaConfig","APPLICATION_ID","API_KEY","initIndex","useNpmPackageData","React","useState","fetching","setFetching","error","setError","data","setData","useEffect","getObject","then","object","readme","fetch","res","text","catch","err","visitParents","CONTINUE","SKIP","EXIT","tree","visitor","reverse","parents","parent","normalize","footnoteDefinition","notInList","notInBlock","EXPRESSION_INITIAL_TAB","currentLine","subqueue","identifier","add","offsets","footnotes","C_BRACKET_OPEN","enterBlock","tokenizeBlock","indent","stops","characters","Math","floor","own","hasOwnProperty","point","pos","start","end","key","state","ctx","context","current","xtend","toggle","vfileLocation","unescape","tokenizer","Parser","doc","setOptions","inBlock","inLink","atStart","proto","prototype","keys","parse","exitStart","enterList","interruptList","interruptBlockquote","newline","indentedCode","fencedCode","blockquote","atxHeading","thematicBreak","setextHeading","html","footnote","definition","paragraph","inlineTokenizers","escape","autoLink","link","reference","strong","deletion","code","break","blockMethods","inlineMethods","tokenizeFactory","bracketed","depth","intro","referenceType","alt","raw","IndexBrowser","inherits","EventEmitter","stop","_stopped","_clean","_end","emit","_error","_result","removeAllListeners","IndexCore","deprecate","deprecatedMessage","exitPromise","errors","deprecateForwardToSlaves","Index","apply","arguments","exportData","method","_hitsPerPage","callback","search","page","_previous","hitsPerPage","previous","hits","nbHits","map","s","_highlightResult","synonyms","concat","addObject","objectID","indexObj","as","_jsonRequest","encodeURIComponent","indexName","body","hostType","addObjects","objects","isArray","Error","postObj","requests","i","request","action","partialUpdateObject","partialObject","createIfNotExists","partialUpdateObjects","usage","saveObject","saveObjects","deleteObject","AlgoliaSearchError","_promise","reject","deleteObjects","objectIDs","deleteByQuery","query","params","clone","client","attributesToRetrieve","distinct","clearCache","promise","stopOrDelete","searchContent","waitTask","doDeleteByQuery","deleteObjectsContent","taskID","success","_setTimeout","setTimeout","failure","deleteBy","_getSearchParams","browseAll","queryParameters","merge","browser","browseLoop","cursor","browseCallback","ttAdapter","self","syncCb","asyncCb","cb","loop","retryLoop","delay","status","clearIndex","getSettings","opts","advanced","searchSynonyms","exportSynonyms","bind","saveSynonym","synonym","forwardToSlaves","forwardToReplicas","getSynonym","deleteSynonym","clearSynonyms","batchSynonyms","replaceExistingSynonyms","searchRules","exportRules","saveRule","rule","getRule","deleteRule","clearRules","batchRules","rules","clearExistingRules","exists","statusCode","findObject","findCallback","requestOptions","paginate","that","paginateLoop","hit","nbPages","ObjectNotFound","getObjectPosition","setSettings","listUserKeys","listApiKeys","getUserKeyACL","getApiKey","deleteUserKey","deleteApiKey","addUserKey","acls","addApiKey","acl","validity","maxQueriesPerIPPerHour","maxHitsPerQuery","description","referers","addUserKeyWithValidity","updateUserKey","updateApiKey","putObj","repeat","getIndent","removeIndent","markers","ordered","nextIndex","startIndex","prefixed","currentMarker","prevEmpty","empty","items","allLines","emptyLines","item","enterTop","exitBlockquote","isLoose","indented","interuptors","LIST_ORDERED_COMMONMARK_MARKERS","LIST_ORDERED_MARKERS","LIST_UNORDERED_MARKERS","parseInt","TAB_SIZE","trail","loose","listItem","EXPRESSION_LOOSE_LIST_ITEM","EXPRESSION_TASK_ITEM","EXPRESSION_BULLET","EXPRESSION_PEDANTIC_BULLET","EXPRESSION_INITIAL_INDENT","task","fn","pedanticListItem","normalListItem","checked","replacer","$0","max","bullet","rest","trimmedLines","$1","$2","$3","$4","Number","split","LINK_MARKERS","COMMONMARK_LINK_MARKERS","closed","beforeURL","beforeTitle","hasMarker","isImage","charCodeAt","fenceCount","flag","exdentedContent","closing","exdentedClosing","lang","escapes","defaults","default","unherit","Local","maximum","indentation","padding","values","minIndent","Infinity","matrix","unshift","shift","Super","Of","From","parameters","extend","bail","vfile","trough","string","plain","unified","attachers","transformers","namespace","frozen","freezeIndex","processor","assertUnfrozen","freeze","use","addPlugin","addList","addPreset","plugins","plugin","entry","find","assertParser","newable","stringify","Compiler","assertCompiler","assertNode","compile","run","runSync","complete","assertDone","process","processSync","destination","transformer","Promise","executor","resolve","pipeline","p","next","asyncName","fromIndex","image","cache","str","num","TypeError","wrap","fns","middleware","input","done","target","source","Object","entities","decoder","warning","handleWarning","reason","message","handler","textContext","referenceContext","markdownRenderers","props","sx","color","heading","level","inlineCode","fontFamily","defaultProps","theme","language","className","style","tokens","getLineProps","getTokenProps","fontSize","token","PluginView","pluginName","useQuery","variables","id","fetchingNpmData","npmData","useMutation","updatingGatsbyPlugin","updateGatsbyPlugin","deletingGatsbyPlugin","deleteGatsbyPlugin","installingGatsbyPlugin","installGatsbyPlugin","validationError","setValidationError","isInstalled","gatsbyPlugin","isOfficial","JSON","telemetry","useTelemetry","errMsg","networkError","Array","graphQLErrors","e","styles","prismThemeCss","gap","flexDirection","alignItems","whiteSpace","humanDownloadsLast30Days","justifyContent","variant","href","src","gitHubIcon","tone","loading","onClick","evt","preventDefault","window","confirm","trackEvent","navigate","renderers","RegExp","onSubmit","json","js","eval","borderRadius","backgroundColor","borderColor","borderWidth","borderStyle","minHeight","onChange","disabled","hardBreak","toString","x","getPrototypeOf","isBuffer","obj","constructor","readFloatLE","isSlowBuffer","_isBuffer","asterisk","underscore","appId","apiKey","analytics","hosts","getABTests","_params","limit","forceAuthHeaders","getABTest","abTestID","addABTest","abTest","stopABTest","deleteABTest","visitWithParents","ast","listNode","n","child","min","path","npath","ext","nFileName","basename","extname","dirname","HtmlParser","Symbol","characterEntities","legacy","invalid","hexadecimal","alphanumerical","option","entityCharacters","terminated","following","output","entity","begin","diff","additional","handleText","handleReference","warningContext","MESSAGES","noop","at","flush","TESTS","attribute","BASE","disallowed","Function","SETEXT_MARKERS","VMessagePrototype","VMessage","origin","parts","range","location","parseOrigin","stack","ruleId","fatal","_toConsumableArray","arr","arr2","_arrayWithoutHoles","iter","iterator","from","_iterableToArray","_nonIterableSpread","PropTypes","addListMetadata","naiveHtml","disallowNode","astToReact","wrapTableRows","getDefinitions","uriTransformer","defaultRenderers","symbols","allTypes","ReactMarkdown","parserOptions","allowedTypes","disallowedTypes","parser","reduce","applyParserPlugin","rawAst","renderProps","definitions","astPlugins","filter","removalMethod","unwrapDisallowed","ofType","allowNode","ifNotMatch","renderHtml","escapeHtml","skipHtml","hasHtmlParser","some","identity","determineAstPlugins","transformedAst","sourcePos","rawSourcePos","transformLinkUri","propTypes","bool","func","arrayOf","oneOf","oneOfType","linkTarget","transformImageUri","array","types","hasOwn","toStr","defineProperty","gOPD","getOwnPropertyDescriptor","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","setProperty","enumerable","configurable","newValue","writable","getProperty","copy","copyIsArray","deep","invoked","isEnclosedURLCharacter","delimiter","isUnclosedURLCharacter","selfClosingRe","simpleTagRe","open","currentParent","selfClosing","getSelfClosing","tag","getSimpleTag","matching","matchingTag","findAndPull","fromNode","toNode","toIndex","virtual","MAILTO_LENGTH","hasAtCharacter","right","matched","valueLength","methods","updatePosition","onlyAtStart","fail","eof","lastIndex","Position","before","last","getOffset","combined","l","substring","validateEat","MERGEABLE_NODES","mergeable","indents","untangle","mode","args","forEach","disallow","alphabetical","inlineHTML","EXPRESSION_HTML_LINK_OPEN","EXPRESSION_HTML_LINK_CLOSE","strikethrough","preceding","collapseWhiteSpace","blankQueue","subvalueQueue","contentQueue","CODE_INDENT","AlgoliaSearch","AlgoliaSearchCore","notImplemented","deleteIndex","moveIndex","srcIndexName","dstIndexName","operation","copyIndex","scopeOrCallback","_callback","scope","getLogs","listIndexes","initAnalytics","createAnalyticsClient","applicationID","restoreApiKey","indexes","startQueriesBatch","_batch","addQueryInBatch","sendQueriesBatch","batch","operations","assignUserID","userID","cluster","headers","assignUserIDs","userIDs","users","getTopUserID","getUserID","debugData","listClusters","listUserIDs","removeUserID","searchUserIDs","setPersonalizationStrategy","getPersonalizationStrategy","destroy","enableRateLimitForward","disableRateLimitForward","useSecuredAPIKey","disableSecuredAPIKey","generateSecuredApiKey","getSecuredApiKeyRemainingValidity","one","pop","all","openCloseTag","sequence","blocks","sequences","TabsKeyboardActivation","TabsOrientation","uniqueId","_","Token","Prism","util","encode","alias","o","objId","visited","v","languages","redef","insertBefore","inside","insert","root","grammar","newToken","ret","DFS","highlight","env","tokenize","matchGrammar","strarr","startPos","oneshot","patterns","j","pattern","lookbehind","greedy","lookbehindLength","global","flags","exec","to","k","len","delNum","after","wrapped","hooks","matchedStr","element","classes","attributes","aliases","markup","tagName","includedCdataInside","def","xml","mathml","svg","envVars","insideString","bash","variable","toBeCopied","shell","clike","punctuation","c","cpp","css","addInlined","selector","javascript","jsx","stringifyToken","walkTokens","openedTags","notTagNorBrace","openedBraces","plainText","javaDocLike","javadoclike","docLanguage","docCommentSupport","addSupport","keywords","java","function","getPlaceholder","toUpperCase","defineProperties","buildPlaceholders","placeholderPattern","replaceFilter","tokenStack","placeholder","tokenizePlaceholders","t","middle","replacement","php","string_interpolation","parameterPrefix","jsdoc","actionscript","comment","interpolation","coffeescript","coffee","maybeClassNameTokens","flow","keyword","n4js","n4jsd","typescript","ts","templateString","templateLiteralPattern","interpolationObject","interpolationPunctuationObject","interpolationPattern","createTemplate","counter","tokenizeWithHooks","tokenizeInterpolationExpression","expression","tempGrammar","tokenizeEmbedded","_tokens","placeholderCounter","placeholderMap","embeddedTokens","interpolationExpression","placeholders","afterTokens","Boolean","supportedLanguages","stringContent","findTemplateStrings","embedded","graphql","inner","createInline","starAlternative","tableCell","tableRow","tableLine","markdown","codeLang","codeBlock","cls","autoloader","Date","valueOf","random","loadLanguages","ele","document","getElementById","innerHTML","textContent","md","PREFIXES","prefix","git","go","handlebars","less","makefile","objectivec","ocaml","python","py","sass","atrule","operator","important","property","scss","sql","stylus","tsx","wasm","yaml","yml","opacity","textDecorationLine","fontStyle","fontWeight","_defineProperty","_extends","assign","newlineRe","normalizeEmptyLines","appendTypes","typesSize","themeToDict","base","create","themeDict","acc","themeEntry","includes","accStyle","objectWithoutProperties","exclude","Highlight","Component","this$1","prevTheme","prevLanguage","ref","getThemeDict","display","baseStyle","typeStyles","getStyleForToken","__proto__","render","typeArrStack","tokenArrStack","tokenArrIndexStack","tokenArrSizeStack","stackIndex","splitByNewlines","newlineCount","i$1","normalizeTokens","defs","normalizeArray","allowAboveRoot","up","xs","f","resolvedPath","resolvedAbsolute","cwd","isAbsolute","trailingSlash","paths","relative","fromParts","toParts","samePartsLength","outputParts","sep","hasRoot","matchedSlash","startDot","startPart","preDotState","supportsStringRender","version","createElement","SimpleRenderer","getCoreProps","delete","linkReference","imageReference","tableHead","tableBody","textAlign","coreProps","isHeader","useFragment","Fragment","attrs","checkbox","readOnly","isBlock","comp","nodeProps","dangerouslySetInnerHTML","__html","virtualHtml","parsedHtml","cloneElement","ReactIs","defaultNodePosition","renderer","isValidElementType","getNodeProps","resolveChildren","childNode","isTagRenderer","sourcePosition","includeNodeIndex","parentChildCount","assignDefined","nodeKey","tight","unwrapParagraphs","getListItemChildren","inline","columnAlignment","parsedChildren","el","Children","toArray","mergeNodeChildren","removePosition","EXPRESSION_LINE_BREAKS","convert","is","subresult","toResult","step","protocols","uri","colon","typeFactory","ok","anyFactory","matchesFactory","tests","checks","results","convertAll","interruptor","config","ignore","bools","val","VFile","filePath","messages","info","warn","openTag","closeTag","createAlgoliasearch","openingCount","found","tickQueue","markerCount","buffer","encoding","order","prop","history","assertPart","part","assertNonEmpty","assertPath","get","set","stem"],"mappings":"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","file":"component---src-pages-plugins-tsx-c6700b48ed9ac88a9768.js","sourcesContent":["'use strict';\n\nvar trim = require('trim');\n\nvar word = require('is-word-character');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/emphasis');\n\nmodule.exports = emphasis;\nemphasis.locator = locate;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction emphasis(eat, value, silent) {\n var self = this;\n var index = 0;\n var character = value.charAt(index);\n var now;\n var pedantic;\n var marker;\n var queue;\n var subvalue;\n var length;\n var prev;\n\n if (character !== C_ASTERISK && character !== C_UNDERSCORE) {\n return;\n }\n\n pedantic = self.options.pedantic;\n subvalue = character;\n marker = character;\n length = value.length;\n index++;\n queue = '';\n character = '';\n\n if (pedantic && whitespace(value.charAt(index))) {\n return;\n }\n\n while (index < length) {\n prev = character;\n character = value.charAt(index);\n\n if (character === marker && (!pedantic || !whitespace(prev))) {\n character = value.charAt(++index);\n\n if (character !== marker) {\n if (!trim(queue) || prev === marker) {\n return;\n }\n\n if (!pedantic && marker === C_UNDERSCORE && word(character)) {\n queue += marker;\n continue;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n now.column++;\n now.offset++;\n return eat(subvalue + queue + marker)({\n type: 'emphasis',\n children: self.tokenizeInline(queue, now)\n });\n }\n\n queue += marker;\n }\n\n if (!pedantic && character === '\\\\') {\n queue += character;\n character = value.charAt(++index);\n }\n\n queue += character;\n index++;\n }\n}","// Checks whether the package from an Algolia NPM search hit is an official Gatsby package\nexport default function isOfficialPackage(pkg: Record<string, any>): boolean {\n return (\n pkg.repository &&\n !pkg.name.startsWith(`@`) &&\n // if the repo url is the Gatsby monorepo\n (pkg.repository.url === `https://github.com/gatsbyjs/gatsby` ||\n // or the repo url is a specific package in the monorepo\n pkg.repository.url.startsWith(\n `https://github.com/gatsbyjs/gatsby/tree/master/packages/`\n ))\n )\n}\n","'use strict';\n\nmodule.exports = whitespace;\nvar fromCode = String.fromCharCode;\nvar re = /\\s/;\n/* Check if the given character code, or the character\n * code at the first character, is a whitespace character. */\n\nfunction whitespace(character) {\n return re.test(typeof character === 'number' ? fromCode(character) : character.charAt(0));\n}","'use strict';\n\nmodule.exports = collapse; // `collapse(' \\t\\nbar \\nbaz\\t') // ' bar baz '`\n\nfunction collapse(value) {\n return String(value).replace(/\\s+/g, ' ');\n}","import React from \"react\"\n\nfunction Monogram(): JSX.Element {\n return (\n <svg\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 1200 1200\"\n focusable=\"false\"\n height=\"1em\"\n width=\"1em\"\n >\n <path d=\"M600 0C268.6 0 0 268.6 0 600s268.6 600 600 600 600-268.6 600-600S931.4 0 600 0zM266.6 933.3C176.1 842.8 131 724.6 129.6 606L594 1070.4c-118.6-1.4-236.8-46.5-327.4-137.1zm437.7 126.1L140.6 495.7c47.5-210.1 235-367.1 459.4-367.1 156.9 0 295.5 77 381.2 194.9L915.6 379C845.8 279.5 730.5 214.3 600 214.3c-167.7 0-310.3 107.7-363.3 257.5l491.6 491.6c123.4-43.7 218-148.2 247.6-277.6H771.4V600h300c0 224.5-157 411.9-367.1 459.4z\" />\n </svg>\n )\n}\n\nexport default Monogram\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = table;\nvar C_BACKSLASH = '\\\\';\nvar C_TICK = '`';\nvar C_DASH = '-';\nvar C_PIPE = '|';\nvar C_COLON = ':';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar MIN_TABLE_COLUMNS = 1;\nvar MIN_TABLE_ROWS = 2;\nvar TABLE_ALIGN_LEFT = 'left';\nvar TABLE_ALIGN_CENTER = 'center';\nvar TABLE_ALIGN_RIGHT = 'right';\nvar TABLE_ALIGN_NONE = null;\n\nfunction table(eat, value, silent) {\n var self = this;\n var index;\n var alignments;\n var alignment;\n var subvalue;\n var row;\n var length;\n var lines;\n var queue;\n var character;\n var hasDash;\n var align;\n var cell;\n var preamble;\n var count;\n var opening;\n var now;\n var position;\n var lineCount;\n var line;\n var rows;\n var table;\n var lineIndex;\n var pipeIndex;\n var first;\n /* Exit when not in gfm-mode. */\n\n if (!self.options.gfm) {\n return;\n }\n /* Get the rows.\n * Detecting tables soon is hard, so there are some\n * checks for performance here, such as the minimum\n * number of rows, and allowed characters in the\n * alignment row. */\n\n\n index = 0;\n lineCount = 0;\n length = value.length + 1;\n lines = [];\n\n while (index < length) {\n lineIndex = value.indexOf(C_NEWLINE, index);\n pipeIndex = value.indexOf(C_PIPE, index + 1);\n\n if (lineIndex === -1) {\n lineIndex = value.length;\n }\n\n if (pipeIndex === -1 || pipeIndex > lineIndex) {\n if (lineCount < MIN_TABLE_ROWS) {\n return;\n }\n\n break;\n }\n\n lines.push(value.slice(index, lineIndex));\n lineCount++;\n index = lineIndex + 1;\n }\n /* Parse the alignment row. */\n\n\n subvalue = lines.join(C_NEWLINE);\n alignments = lines.splice(1, 1)[0] || [];\n index = 0;\n length = alignments.length;\n lineCount--;\n alignment = false;\n align = [];\n\n while (index < length) {\n character = alignments.charAt(index);\n\n if (character === C_PIPE) {\n hasDash = null;\n\n if (alignment === false) {\n if (first === false) {\n return;\n }\n } else {\n align.push(alignment);\n alignment = false;\n }\n\n first = false;\n } else if (character === C_DASH) {\n hasDash = true;\n alignment = alignment || TABLE_ALIGN_NONE;\n } else if (character === C_COLON) {\n if (alignment === TABLE_ALIGN_LEFT) {\n alignment = TABLE_ALIGN_CENTER;\n } else if (hasDash && alignment === TABLE_ALIGN_NONE) {\n alignment = TABLE_ALIGN_RIGHT;\n } else {\n alignment = TABLE_ALIGN_LEFT;\n }\n } else if (!whitespace(character)) {\n return;\n }\n\n index++;\n }\n\n if (alignment !== false) {\n align.push(alignment);\n }\n /* Exit when without enough columns. */\n\n\n if (align.length < MIN_TABLE_COLUMNS) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n /* Parse the rows. */\n\n\n position = -1;\n rows = [];\n table = eat(subvalue).reset({\n type: 'table',\n align: align,\n children: rows\n });\n\n while (++position < lineCount) {\n line = lines[position];\n row = {\n type: 'tableRow',\n children: []\n };\n /* Eat a newline character when this is not the\n * first row. */\n\n if (position) {\n eat(C_NEWLINE);\n }\n /* Eat the row. */\n\n\n eat(line).reset(row, table);\n length = line.length + 1;\n index = 0;\n queue = '';\n cell = '';\n preamble = true;\n count = null;\n opening = null;\n\n while (index < length) {\n character = line.charAt(index);\n\n if (character === C_TAB || character === C_SPACE) {\n if (cell) {\n queue += character;\n } else {\n eat(character);\n }\n\n index++;\n continue;\n }\n\n if (character === '' || character === C_PIPE) {\n if (preamble) {\n eat(character);\n } else {\n if (character && opening) {\n queue += character;\n index++;\n continue;\n }\n\n if ((cell || character) && !preamble) {\n subvalue = cell;\n\n if (queue.length > 1) {\n if (character) {\n subvalue += queue.slice(0, queue.length - 1);\n queue = queue.charAt(queue.length - 1);\n } else {\n subvalue += queue;\n queue = '';\n }\n }\n\n now = eat.now();\n eat(subvalue)({\n type: 'tableCell',\n children: self.tokenizeInline(cell, now)\n }, row);\n }\n\n eat(queue + character);\n queue = '';\n cell = '';\n }\n } else {\n if (queue) {\n cell += queue;\n queue = '';\n }\n\n cell += character;\n\n if (character === C_BACKSLASH && index !== length - 2) {\n cell += line.charAt(index + 1);\n index++;\n }\n\n if (character === C_TICK) {\n count = 1;\n\n while (line.charAt(index + 1) === character) {\n cell += character;\n index++;\n count++;\n }\n\n if (!opening) {\n opening = count;\n } else if (count >= opening) {\n opening = 0;\n }\n }\n }\n\n preamble = false;\n index++;\n }\n /* Eat the alignment row. */\n\n\n if (!position) {\n eat(C_NEWLINE + alignments);\n }\n }\n\n return table;\n}","'use strict';\n\nvar trim = require('trim');\n\nvar decimal = require('is-decimal');\n\nvar trimTrailingLines = require('trim-trailing-lines');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = paragraph;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar TAB_SIZE = 4;\n/* Tokenise paragraph. */\n\nfunction paragraph(eat, value, silent) {\n var self = this;\n var settings = self.options;\n var commonmark = settings.commonmark;\n var gfm = settings.gfm;\n var tokenizers = self.blockTokenizers;\n var interruptors = self.interruptParagraph;\n var index = value.indexOf(C_NEWLINE);\n var length = value.length;\n var position;\n var subvalue;\n var character;\n var size;\n var now;\n\n while (index < length) {\n /* Eat everything if there’s no following newline. */\n if (index === -1) {\n index = length;\n break;\n }\n /* Stop if the next character is NEWLINE. */\n\n\n if (value.charAt(index + 1) === C_NEWLINE) {\n break;\n }\n /* In commonmark-mode, following indented lines\n * are part of the paragraph. */\n\n\n if (commonmark) {\n size = 0;\n position = index + 1;\n\n while (position < length) {\n character = value.charAt(position);\n\n if (character === C_TAB) {\n size = TAB_SIZE;\n break;\n } else if (character === C_SPACE) {\n size++;\n } else {\n break;\n }\n\n position++;\n }\n\n if (size >= TAB_SIZE) {\n index = value.indexOf(C_NEWLINE, index + 1);\n continue;\n }\n }\n\n subvalue = value.slice(index + 1);\n /* Check if the following code contains a possible\n * block. */\n\n if (interrupt(interruptors, tokenizers, self, [eat, subvalue, true])) {\n break;\n }\n /* Break if the following line starts a list, when\n * already in a list, or when in commonmark, or when\n * in gfm mode and the bullet is *not* numeric. */\n\n\n if (tokenizers.list.call(self, eat, subvalue, true) && (self.inList || commonmark || gfm && !decimal(trim.left(subvalue).charAt(0)))) {\n break;\n }\n\n position = index;\n index = value.indexOf(C_NEWLINE, index + 1);\n\n if (index !== -1 && trim(value.slice(position, index)) === '') {\n index = position;\n break;\n }\n }\n\n subvalue = value.slice(0, index);\n\n if (trim(subvalue) === '') {\n eat(subvalue);\n return null;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n subvalue = trimTrailingLines(subvalue);\n return eat(subvalue)({\n type: 'paragraph',\n children: self.tokenizeInline(subvalue, now)\n });\n}","'use strict';\n\nvar decode = require('parse-entities');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/url');\n\nmodule.exports = url;\nurl.locator = locate;\nurl.notInLink = true;\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_AT_SIGN = '@';\nvar HTTP_PROTOCOL = 'http://';\nvar HTTPS_PROTOCOL = 'https://';\nvar MAILTO_PROTOCOL = 'mailto:';\nvar PROTOCOLS = [HTTP_PROTOCOL, HTTPS_PROTOCOL, MAILTO_PROTOCOL];\nvar PROTOCOLS_LENGTH = PROTOCOLS.length;\n\nfunction url(eat, value, silent) {\n var self = this;\n var subvalue;\n var content;\n var character;\n var index;\n var position;\n var protocol;\n var match;\n var length;\n var queue;\n var parenCount;\n var nextCharacter;\n var exit;\n\n if (!self.options.gfm) {\n return;\n }\n\n subvalue = '';\n index = -1;\n length = PROTOCOLS_LENGTH;\n\n while (++index < length) {\n protocol = PROTOCOLS[index];\n match = value.slice(0, protocol.length);\n\n if (match.toLowerCase() === protocol) {\n subvalue = match;\n break;\n }\n }\n\n if (!subvalue) {\n return;\n }\n\n index = subvalue.length;\n length = value.length;\n queue = '';\n parenCount = 0;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (whitespace(character) || character === C_LT) {\n break;\n }\n\n if (character === '.' || character === ',' || character === ':' || character === ';' || character === '\"' || character === '\\'' || character === ')' || character === ']') {\n nextCharacter = value.charAt(index + 1);\n\n if (!nextCharacter || whitespace(nextCharacter)) {\n break;\n }\n }\n\n if (character === C_PAREN_OPEN || character === C_BRACKET_OPEN) {\n parenCount++;\n }\n\n if (character === C_PAREN_CLOSE || character === C_BRACKET_CLOSE) {\n parenCount--;\n\n if (parenCount < 0) {\n break;\n }\n }\n\n queue += character;\n index++;\n }\n\n if (!queue) {\n return;\n }\n\n subvalue += queue;\n content = subvalue;\n\n if (protocol === MAILTO_PROTOCOL) {\n position = queue.indexOf(C_AT_SIGN);\n\n if (position === -1 || position === length - 1) {\n return;\n }\n\n content = content.substr(MAILTO_PROTOCOL.length);\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n exit = self.enterLink();\n content = self.tokenizeInline(content, eat.now());\n exit();\n return eat(subvalue)({\n type: 'link',\n title: null,\n url: decode(subvalue, {\n nonTerminated: false\n }),\n children: content\n });\n}","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = removePosition;\n\nfunction removePosition(node, force) {\n visit(node, force ? hard : soft);\n return node;\n}\n\nfunction hard(node) {\n delete node.position;\n}\n\nfunction soft(node) {\n node.position = undefined;\n}","'use strict';\n/* Expose. */\n\nmodule.exports = factory;\n/* Factory. */\n\nfunction factory(file) {\n var contents = indices(String(file));\n return {\n toPosition: offsetToPositionFactory(contents),\n toOffset: positionToOffsetFactory(contents)\n };\n}\n/* Factory to get the line and column-based `position` for\n * `offset` in the bound indices. */\n\n\nfunction offsetToPositionFactory(indices) {\n return offsetToPosition;\n /* Get the line and column-based `position` for\n * `offset` in the bound indices. */\n\n function offsetToPosition(offset) {\n var index = -1;\n var length = indices.length;\n\n if (offset < 0) {\n return {};\n }\n\n while (++index < length) {\n if (indices[index] > offset) {\n return {\n line: index + 1,\n column: offset - (indices[index - 1] || 0) + 1,\n offset: offset\n };\n }\n }\n\n return {};\n }\n}\n/* Factory to get the `offset` for a line and column-based\n * `position` in the bound indices. */\n\n\nfunction positionToOffsetFactory(indices) {\n return positionToOffset;\n /* Get the `offset` for a line and column-based\n * `position` in the bound indices. */\n\n function positionToOffset(position) {\n var line = position && position.line;\n var column = position && position.column;\n\n if (!isNaN(line) && !isNaN(column) && line - 1 in indices) {\n return (indices[line - 2] || 0) + column - 1 || 0;\n }\n\n return -1;\n }\n}\n/* Get indices of line-breaks in `value`. */\n\n\nfunction indices(value) {\n var result = [];\n var index = value.indexOf('\\n');\n\n while (index !== -1) {\n result.push(index + 1);\n index = value.indexOf('\\n', index + 1);\n }\n\n result.push(value.length + 1);\n return result;\n}","import React from \"react\"\nimport algoliasearch from \"algoliasearch\"\nimport algoliaConfig from \"./algolia-config\"\n\nconst client = algoliasearch(\n algoliaConfig.APPLICATION_ID,\n algoliaConfig.API_KEY\n)\nconst searchIndex = client.initIndex(`npm-search`)\n\ninterface IUseNpmPackageDataResult {\n data: Record<string, any> | null\n error: Error | null\n fetching: boolean\n}\n\nexport default function useNpmPackageData(\n name: string\n): IUseNpmPackageDataResult {\n const [fetching, setFetching] = React.useState(true)\n const [error, setError] = React.useState<Error | null>(null)\n const [data, setData] = React.useState<{} | null>(null)\n\n React.useEffect(() => {\n setFetching(true)\n setError(null)\n setData(null)\n searchIndex\n .getObject(name)\n .then(object => {\n // TODO(@mxstbr): properly type this method and result\n // @ts-ignore\n if (object.readme) {\n setFetching(false)\n setError(null)\n setData(object)\n } else {\n // Fallback for missing readme\n fetch(`https://unpkg.com/${name}/README.md`)\n .then(res => res.text())\n .then(readme => {\n setFetching(false)\n setError(null)\n setData({\n ...object,\n readme,\n })\n })\n .catch(() => null)\n }\n })\n .catch(err => {\n setFetching(false)\n setError(err)\n setData(null)\n })\n }, [name])\n\n return { fetching, error, data }\n}\n","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nmodule.exports = newline;\n/* Tokenise newline. */\n\nfunction newline(eat, value, silent) {\n var character = value.charAt(0);\n var length;\n var subvalue;\n var queue;\n var index;\n\n if (character !== '\\n') {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n index = 1;\n length = value.length;\n subvalue = character;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n queue += character;\n\n if (character === '\\n') {\n subvalue += queue;\n queue = '';\n }\n\n index++;\n }\n\n eat(subvalue);\n}","'use strict';\n\nmodule.exports = visit;\n\nvar visitParents = require('unist-util-visit-parents');\n\nvar CONTINUE = visitParents.CONTINUE;\nvar SKIP = visitParents.SKIP;\nvar EXIT = visitParents.EXIT;\nvisit.CONTINUE = CONTINUE;\nvisit.SKIP = SKIP;\nvisit.EXIT = EXIT;\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n\n visitParents(tree, test, overload, reverse);\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1];\n var index = parent ? parent.children.indexOf(node) : null;\n return visitor(node, index, parent);\n }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = footnoteDefinition;\nfootnoteDefinition.notInList = true;\nfootnoteDefinition.notInBlock = true;\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_CARET = '^';\nvar C_COLON = ':';\nvar EXPRESSION_INITIAL_TAB = /^( {4}|\\t)?/gm;\n\nfunction footnoteDefinition(eat, value, silent) {\n var self = this;\n var offsets = self.offset;\n var index;\n var length;\n var subvalue;\n var now;\n var currentLine;\n var content;\n var queue;\n var subqueue;\n var character;\n var identifier;\n var add;\n var exit;\n\n if (!self.options.footnotes) {\n return;\n }\n\n index = 0;\n length = value.length;\n subvalue = '';\n now = eat.now();\n currentLine = now.line;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n if (value.charAt(index) !== C_BRACKET_OPEN || value.charAt(index + 1) !== C_CARET) {\n return;\n }\n\n subvalue += C_BRACKET_OPEN + C_CARET;\n index = subvalue.length;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_CLOSE) {\n break;\n } else if (character === C_BACKSLASH) {\n queue += character;\n index++;\n character = value.charAt(index);\n }\n\n queue += character;\n index++;\n }\n\n if (!queue || value.charAt(index) !== C_BRACKET_CLOSE || value.charAt(index + 1) !== C_COLON) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n identifier = normalize(queue);\n subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n index = subvalue.length;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n now.column += subvalue.length;\n now.offset += subvalue.length;\n queue = '';\n content = '';\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_NEWLINE) {\n subqueue = character;\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_NEWLINE) {\n break;\n }\n\n subqueue += character;\n index++;\n }\n\n queue += subqueue;\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE) {\n break;\n }\n\n subqueue += character;\n index++;\n }\n\n if (subqueue.length === 0) {\n break;\n }\n\n queue += subqueue;\n }\n\n if (queue) {\n content += queue;\n queue = '';\n }\n\n content += character;\n index++;\n }\n\n subvalue += content;\n content = content.replace(EXPRESSION_INITIAL_TAB, function (line) {\n offsets[currentLine] = (offsets[currentLine] || 0) + line.length;\n currentLine++;\n return '';\n });\n add = eat(subvalue);\n exit = self.enterBlock();\n content = self.tokenizeBlock(content, now);\n exit();\n return add({\n type: 'footnoteDefinition',\n identifier: identifier,\n children: content\n });\n}","'use strict';\n\nmodule.exports = indentation;\n/* Map of characters, and their column length,\n * which can be used as indentation. */\n\nvar characters = {\n ' ': 1,\n '\\t': 4\n};\n/* Gets indentation information for a line. */\n\nfunction indentation(value) {\n var index = 0;\n var indent = 0;\n var character = value.charAt(index);\n var stops = {};\n var size;\n\n while (character in characters) {\n size = characters[character];\n indent += size;\n\n if (size > 1) {\n indent = Math.floor(indent / size) * size;\n }\n\n stops[indent] = index;\n character = value.charAt(++index);\n }\n\n return {\n indent: indent,\n stops: stops\n };\n}","'use strict';\n\nvar own = {}.hasOwnProperty;\nmodule.exports = stringify;\n\nfunction stringify(value) {\n /* Nothing. */\n if (!value || typeof value !== 'object') {\n return null;\n }\n /* Node. */\n\n\n if (own.call(value, 'position') || own.call(value, 'type')) {\n return position(value.position);\n }\n /* Position. */\n\n\n if (own.call(value, 'start') || own.call(value, 'end')) {\n return position(value);\n }\n /* Point. */\n\n\n if (own.call(value, 'line') || own.call(value, 'column')) {\n return point(value);\n }\n /* ? */\n\n\n return null;\n}\n\nfunction point(point) {\n if (!point || typeof point !== 'object') {\n point = {};\n }\n\n return index(point.line) + ':' + index(point.column);\n}\n\nfunction position(pos) {\n if (!pos || typeof pos !== 'object') {\n pos = {};\n }\n\n return point(pos.start) + '-' + point(pos.end);\n}\n\nfunction index(value) {\n return value && typeof value === 'number' ? value : 1;\n}","'use strict';\n\nmodule.exports = factory;\n/* Construct a state `toggler`: a function which inverses\n * `property` in context based on its current value.\n * The by `toggler` returned function restores that value. */\n\nfunction factory(key, state, ctx) {\n return enter;\n\n function enter() {\n var context = ctx || this;\n var current = context[key];\n context[key] = !state;\n return exit;\n\n function exit() {\n context[key] = current;\n }\n }\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar toggle = require('state-toggle');\n\nvar vfileLocation = require('vfile-location');\n\nvar unescape = require('./unescape');\n\nvar decode = require('./decode');\n\nvar tokenizer = require('./tokenizer');\n\nmodule.exports = Parser;\n\nfunction Parser(doc, file) {\n this.file = file;\n this.offset = {};\n this.options = xtend(this.options);\n this.setOptions({});\n this.inList = false;\n this.inBlock = false;\n this.inLink = false;\n this.atStart = true;\n this.toOffset = vfileLocation(file).toOffset;\n this.unescape = unescape(this, 'escape');\n this.decode = decode(this);\n}\n\nvar proto = Parser.prototype;\n/* Expose core. */\n\nproto.setOptions = require('./set-options');\nproto.parse = require('./parse');\n/* Expose `defaults`. */\n\nproto.options = require('./defaults');\n/* Enter and exit helpers. */\n\nproto.exitStart = toggle('atStart', true);\nproto.enterList = toggle('inList', false);\nproto.enterLink = toggle('inLink', false);\nproto.enterBlock = toggle('inBlock', false);\n/* Nodes that can interupt a paragraph:\n *\n * ```markdown\n * A paragraph, followed by a thematic break.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the paragraph. */\n\nproto.interruptParagraph = [['thematicBreak'], ['atxHeading'], ['fencedCode'], ['blockquote'], ['html'], ['setextHeading', {\n commonmark: false\n}], ['definition', {\n commonmark: false\n}], ['footnote', {\n commonmark: false\n}]];\n/* Nodes that can interupt a list:\n *\n * ```markdown\n * - One\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the list. */\n\nproto.interruptList = [['atxHeading', {\n pedantic: false\n}], ['fencedCode', {\n pedantic: false\n}], ['thematicBreak', {\n pedantic: false\n}], ['definition', {\n commonmark: false\n}], ['footnote', {\n commonmark: false\n}]];\n/* Nodes that can interupt a blockquote:\n *\n * ```markdown\n * > A paragraph.\n * ___\n * ```\n *\n * In the above example, the thematic break “interupts”\n * the blockquote. */\n\nproto.interruptBlockquote = [['indentedCode', {\n commonmark: true\n}], ['fencedCode', {\n commonmark: true\n}], ['atxHeading', {\n commonmark: true\n}], ['setextHeading', {\n commonmark: true\n}], ['thematicBreak', {\n commonmark: true\n}], ['html', {\n commonmark: true\n}], ['list', {\n commonmark: true\n}], ['definition', {\n commonmark: false\n}], ['footnote', {\n commonmark: false\n}]];\n/* Handlers. */\n\nproto.blockTokenizers = {\n newline: require('./tokenize/newline'),\n indentedCode: require('./tokenize/code-indented'),\n fencedCode: require('./tokenize/code-fenced'),\n blockquote: require('./tokenize/blockquote'),\n atxHeading: require('./tokenize/heading-atx'),\n thematicBreak: require('./tokenize/thematic-break'),\n list: require('./tokenize/list'),\n setextHeading: require('./tokenize/heading-setext'),\n html: require('./tokenize/html-block'),\n footnote: require('./tokenize/footnote-definition'),\n definition: require('./tokenize/definition'),\n table: require('./tokenize/table'),\n paragraph: require('./tokenize/paragraph')\n};\nproto.inlineTokenizers = {\n escape: require('./tokenize/escape'),\n autoLink: require('./tokenize/auto-link'),\n url: require('./tokenize/url'),\n html: require('./tokenize/html-inline'),\n link: require('./tokenize/link'),\n reference: require('./tokenize/reference'),\n strong: require('./tokenize/strong'),\n emphasis: require('./tokenize/emphasis'),\n deletion: require('./tokenize/delete'),\n code: require('./tokenize/code-inline'),\n break: require('./tokenize/break'),\n text: require('./tokenize/text')\n};\n/* Expose precedence. */\n\nproto.blockMethods = keys(proto.blockTokenizers);\nproto.inlineMethods = keys(proto.inlineTokenizers);\n/* Tokenizers. */\n\nproto.tokenizeBlock = tokenizer('block');\nproto.tokenizeInline = tokenizer('inline');\nproto.tokenizeFactory = tokenizer;\n/* Get all keys in `value`. */\n\nfunction keys(value) {\n var result = [];\n var key;\n\n for (key in value) {\n result.push(key);\n }\n\n return result;\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/link');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = reference;\nreference.locator = locate;\nvar T_LINK = 'link';\nvar T_IMAGE = 'image';\nvar T_FOOTNOTE = 'footnote';\nvar REFERENCE_TYPE_SHORTCUT = 'shortcut';\nvar REFERENCE_TYPE_COLLAPSED = 'collapsed';\nvar REFERENCE_TYPE_FULL = 'full';\nvar C_CARET = '^';\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\n\nfunction reference(eat, value, silent) {\n var self = this;\n var character = value.charAt(0);\n var index = 0;\n var length = value.length;\n var subvalue = '';\n var intro = '';\n var type = T_LINK;\n var referenceType = REFERENCE_TYPE_SHORTCUT;\n var content;\n var identifier;\n var now;\n var node;\n var exit;\n var queue;\n var bracketed;\n var depth;\n /* Check whether we’re eating an image. */\n\n if (character === '!') {\n type = T_IMAGE;\n intro = character;\n character = value.charAt(++index);\n }\n\n if (character !== C_BRACKET_OPEN) {\n return;\n }\n\n index++;\n intro += character;\n queue = '';\n /* Check whether we’re eating a footnote. */\n\n if (self.options.footnotes && value.charAt(index) === C_CARET) {\n /* Exit if `![^` is found, so the `!` will be seen as text after this,\n * and we’ll enter this function again when `[^` is found. */\n if (type === T_IMAGE) {\n return;\n }\n\n intro += C_CARET;\n index++;\n type = T_FOOTNOTE;\n }\n /* Eat the text. */\n\n\n depth = 0;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_OPEN) {\n bracketed = true;\n depth++;\n } else if (character === C_BRACKET_CLOSE) {\n if (!depth) {\n break;\n }\n\n depth--;\n }\n\n if (character === C_BACKSLASH) {\n queue += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n queue += character;\n index++;\n }\n\n subvalue = queue;\n content = queue;\n character = value.charAt(index);\n\n if (character !== C_BRACKET_CLOSE) {\n return;\n }\n\n index++;\n subvalue += character;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n /* Inline footnotes cannot have an identifier. */\n\n if (type !== T_FOOTNOTE && character === C_BRACKET_OPEN) {\n identifier = '';\n queue += character;\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_OPEN || character === C_BRACKET_CLOSE) {\n break;\n }\n\n if (character === C_BACKSLASH) {\n identifier += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n identifier += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character === C_BRACKET_CLOSE) {\n referenceType = identifier ? REFERENCE_TYPE_FULL : REFERENCE_TYPE_COLLAPSED;\n queue += identifier + character;\n index++;\n } else {\n identifier = '';\n }\n\n subvalue += queue;\n queue = '';\n } else {\n if (!content) {\n return;\n }\n\n identifier = content;\n }\n /* Brackets cannot be inside the identifier. */\n\n\n if (referenceType !== REFERENCE_TYPE_FULL && bracketed) {\n return;\n }\n\n subvalue = intro + subvalue;\n\n if (type === T_LINK && self.inLink) {\n return null;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n if (type === T_FOOTNOTE && content.indexOf(' ') !== -1) {\n return eat(subvalue)({\n type: 'footnote',\n children: this.tokenizeInline(content, eat.now())\n });\n }\n\n now = eat.now();\n now.column += intro.length;\n now.offset += intro.length;\n identifier = referenceType === REFERENCE_TYPE_FULL ? identifier : content;\n node = {\n type: type + 'Reference',\n identifier: normalize(identifier)\n };\n\n if (type === T_LINK || type === T_IMAGE) {\n node.referenceType = referenceType;\n }\n\n if (type === T_LINK) {\n exit = self.enterLink();\n node.children = self.tokenizeInline(content, now);\n exit();\n } else if (type === T_IMAGE) {\n node.alt = self.decode.raw(self.unescape(content), now) || null;\n }\n\n return eat(subvalue)(node);\n}","'use strict'; // This is the object returned by the `index.browseAll()` method\n\nmodule.exports = IndexBrowser;\n\nvar inherits = require('inherits');\n\nvar EventEmitter = require('events').EventEmitter;\n\nfunction IndexBrowser() {}\n\ninherits(IndexBrowser, EventEmitter);\n\nIndexBrowser.prototype.stop = function () {\n this._stopped = true;\n\n this._clean();\n};\n\nIndexBrowser.prototype._end = function () {\n this.emit('end');\n\n this._clean();\n};\n\nIndexBrowser.prototype._error = function (err) {\n this.emit('error', err);\n\n this._clean();\n};\n\nIndexBrowser.prototype._result = function (content) {\n this.emit('result', content);\n};\n\nIndexBrowser.prototype._clean = function () {\n this.removeAllListeners('stop');\n this.removeAllListeners('end');\n this.removeAllListeners('error');\n this.removeAllListeners('result');\n};","var inherits = require('inherits');\n\nvar IndexCore = require('./IndexCore.js');\n\nvar deprecate = require('./deprecate.js');\n\nvar deprecatedMessage = require('./deprecatedMessage.js');\n\nvar exitPromise = require('./exitPromise.js');\n\nvar errors = require('./errors');\n\nvar deprecateForwardToSlaves = deprecate(function () {}, deprecatedMessage('forwardToSlaves', 'forwardToReplicas'));\nmodule.exports = Index;\n\nfunction Index() {\n IndexCore.apply(this, arguments);\n}\n\ninherits(Index, IndexCore);\n/*\n* Add an object in this index\n*\n* @param content contains the javascript object to add inside the index\n* @param objectID (optional) an objectID you want to attribute to this object\n* (if the attribute already exist the old object will be overwrite)\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that contains 3 elements: createAt, taskId and objectID\n*/\n\nIndex.prototype.addObject = function (content, objectID, callback) {\n var indexObj = this;\n\n if (arguments.length === 1 || typeof objectID === 'function') {\n callback = objectID;\n objectID = undefined;\n }\n\n return this.as._jsonRequest({\n method: objectID !== undefined ? 'PUT' : // update or create\n 'POST',\n // create (API generates an objectID)\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + ( // create\n objectID !== undefined ? '/' + encodeURIComponent(objectID) : ''),\n // update or create\n body: content,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Add several objects\n*\n* @param objects contains an array of objects to add\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that updateAt and taskID\n*/\n\n\nIndex.prototype.addObjects = function (objects, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: index.addObjects(arrayOfObjects[, callback])';\n\n if (!isArray(objects)) {\n throw new Error(usage);\n }\n\n var indexObj = this;\n var postObj = {\n requests: []\n };\n\n for (var i = 0; i < objects.length; ++i) {\n var request = {\n action: 'addObject',\n body: objects[i]\n };\n postObj.requests.push(request);\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/batch',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Update partially an object (only update attributes passed in argument)\n*\n* @param partialObject contains the javascript attributes to override, the\n* object must contains an objectID attribute\n* @param createIfNotExists (optional) if false, avoid an automatic creation of the object\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that contains 3 elements: createAt, taskId and objectID\n*/\n\n\nIndex.prototype.partialUpdateObject = function (partialObject, createIfNotExists, callback) {\n if (arguments.length === 1 || typeof createIfNotExists === 'function') {\n callback = createIfNotExists;\n createIfNotExists = undefined;\n }\n\n var indexObj = this;\n var url = '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/' + encodeURIComponent(partialObject.objectID) + '/partial';\n\n if (createIfNotExists === false) {\n url += '?createIfNotExists=false';\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: url,\n body: partialObject,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Partially Override the content of several objects\n*\n* @param objects contains an array of objects to update (each object must contains a objectID attribute)\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that updateAt and taskID\n*/\n\n\nIndex.prototype.partialUpdateObjects = function (objects, createIfNotExists, callback) {\n if (arguments.length === 1 || typeof createIfNotExists === 'function') {\n callback = createIfNotExists;\n createIfNotExists = true;\n }\n\n var isArray = require('isarray');\n\n var usage = 'Usage: index.partialUpdateObjects(arrayOfObjects[, callback])';\n\n if (!isArray(objects)) {\n throw new Error(usage);\n }\n\n var indexObj = this;\n var postObj = {\n requests: []\n };\n\n for (var i = 0; i < objects.length; ++i) {\n var request = {\n action: createIfNotExists === true ? 'partialUpdateObject' : 'partialUpdateObjectNoCreate',\n objectID: objects[i].objectID,\n body: objects[i]\n };\n postObj.requests.push(request);\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/batch',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Override the content of object\n*\n* @param object contains the javascript object to save, the object must contains an objectID attribute\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that updateAt and taskID\n*/\n\n\nIndex.prototype.saveObject = function (object, callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'PUT',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/' + encodeURIComponent(object.objectID),\n body: object,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Override the content of several objects\n*\n* @param objects contains an array of objects to update (each object must contains a objectID attribute)\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that updateAt and taskID\n*/\n\n\nIndex.prototype.saveObjects = function (objects, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: index.saveObjects(arrayOfObjects[, callback])';\n\n if (!isArray(objects)) {\n throw new Error(usage);\n }\n\n var indexObj = this;\n var postObj = {\n requests: []\n };\n\n for (var i = 0; i < objects.length; ++i) {\n var request = {\n action: 'updateObject',\n objectID: objects[i].objectID,\n body: objects[i]\n };\n postObj.requests.push(request);\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/batch',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Delete an object from the index\n*\n* @param objectID the unique identifier of object to delete\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that contains 3 elements: createAt, taskId and objectID\n*/\n\n\nIndex.prototype.deleteObject = function (objectID, callback) {\n if (typeof objectID === 'function' || typeof objectID !== 'string' && typeof objectID !== 'number') {\n var err = new errors.AlgoliaSearchError(objectID && typeof objectID !== 'function' ? 'ObjectID must be a string' : 'Cannot delete an object without an objectID');\n callback = objectID;\n\n if (typeof callback === 'function') {\n return callback(err);\n }\n\n return this.as._promise.reject(err);\n }\n\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'DELETE',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/' + encodeURIComponent(objectID),\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Delete several objects from an index\n*\n* @param objectIDs contains an array of objectID to delete\n* @param callback (optional) the result callback called with two arguments:\n* error: null or Error('message')\n* content: the server answer that contains 3 elements: createAt, taskId and objectID\n*/\n\n\nIndex.prototype.deleteObjects = function (objectIDs, callback) {\n var isArray = require('isarray');\n\n var map = require('./map.js');\n\n var usage = 'Usage: index.deleteObjects(arrayOfObjectIDs[, callback])';\n\n if (!isArray(objectIDs)) {\n throw new Error(usage);\n }\n\n var indexObj = this;\n var postObj = {\n requests: map(objectIDs, function prepareRequest(objectID) {\n return {\n action: 'deleteObject',\n objectID: objectID,\n body: {\n objectID: objectID\n }\n };\n })\n };\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/batch',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Delete all objects matching a query\n*\n* @param query the query string\n* @param params the optional query parameters\n* @param callback (optional) the result callback called with one argument\n* error: null or Error('message')\n* @deprecated see index.deleteBy\n*/\n\n\nIndex.prototype.deleteByQuery = deprecate(function (query, params, callback) {\n var clone = require('./clone.js');\n\n var map = require('./map.js');\n\n var indexObj = this;\n var client = indexObj.as;\n\n if (arguments.length === 1 || typeof params === 'function') {\n callback = params;\n params = {};\n } else {\n params = clone(params);\n }\n\n params.attributesToRetrieve = 'objectID';\n params.hitsPerPage = 1000;\n params.distinct = false; // when deleting, we should never use cache to get the\n // search results\n\n this.clearCache(); // there's a problem in how we use the promise chain,\n // see how waitTask is done\n\n var promise = this.search(query, params).then(stopOrDelete);\n\n function stopOrDelete(searchContent) {\n // stop here\n if (searchContent.nbHits === 0) {\n // return indexObj.as._request.resolve();\n return searchContent;\n } // continue and do a recursive call\n\n\n var objectIDs = map(searchContent.hits, function getObjectID(object) {\n return object.objectID;\n });\n return indexObj.deleteObjects(objectIDs).then(waitTask).then(doDeleteByQuery);\n }\n\n function waitTask(deleteObjectsContent) {\n return indexObj.waitTask(deleteObjectsContent.taskID);\n }\n\n function doDeleteByQuery() {\n return indexObj.deleteByQuery(query, params);\n }\n\n if (!callback) {\n return promise;\n }\n\n promise.then(success, failure);\n\n function success() {\n exitPromise(function exit() {\n callback(null);\n }, client._setTimeout || setTimeout);\n }\n\n function failure(err) {\n exitPromise(function exit() {\n callback(err);\n }, client._setTimeout || setTimeout);\n }\n}, deprecatedMessage('index.deleteByQuery()', 'index.deleteBy()'));\n/**\n* Delete all objects matching a query\n*\n* the query parameters that can be used are:\n* - filters (numeric, facet, tag)\n* - geo\n*\n* you can not send an empty query or filters\n*\n* @param params the optional query parameters\n* @param callback (optional) the result callback called with one argument\n* error: null or Error('message')\n*/\n\nIndex.prototype.deleteBy = function (params, callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/deleteByQuery',\n body: {\n params: indexObj.as._getSearchParams(params, '')\n },\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Browse all content from an index using events. Basically this will do\n* .browse() -> .browseFrom -> .browseFrom -> .. until all the results are returned\n*\n* @param {string} query - The full text query\n* @param {Object} [queryParameters] - Any search query parameter\n* @return {EventEmitter}\n* @example\n* var browser = index.browseAll('cool songs', {\n* tagFilters: 'public,comments',\n* hitsPerPage: 500\n* });\n*\n* browser.on('result', function resultCallback(content) {\n* console.log(content.hits);\n* });\n*\n* // if any error occurs, you get it\n* browser.on('error', function(err) {\n* throw err;\n* });\n*\n* // when you have browsed the whole index, you get this event\n* browser.on('end', function() {\n* console.log('finished');\n* });\n*\n* // at any point if you want to stop the browsing process, you can stop it manually\n* // otherwise it will go on and on\n* browser.stop();\n*\n* @see {@link https://www.algolia.com/doc/rest_api#Browse|Algolia REST API Documentation}\n*/\n\n\nIndex.prototype.browseAll = function (query, queryParameters) {\n if (typeof query === 'object') {\n queryParameters = query;\n query = undefined;\n }\n\n var merge = require('./merge.js');\n\n var IndexBrowser = require('./IndexBrowser');\n\n var browser = new IndexBrowser();\n var client = this.as;\n var index = this;\n\n var params = client._getSearchParams(merge({}, queryParameters || {}, {\n query: query\n }), ''); // start browsing\n\n\n browseLoop();\n\n function browseLoop(cursor) {\n if (browser._stopped) {\n return;\n }\n\n var body;\n\n if (cursor !== undefined) {\n body = {\n cursor: cursor\n };\n } else {\n body = {\n params: params\n };\n }\n\n client._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(index.indexName) + '/browse',\n hostType: 'read',\n body: body,\n callback: browseCallback\n });\n }\n\n function browseCallback(err, content) {\n if (browser._stopped) {\n return;\n }\n\n if (err) {\n browser._error(err);\n\n return;\n }\n\n browser._result(content); // no cursor means we are finished browsing\n\n\n if (content.cursor === undefined) {\n browser._end();\n\n return;\n }\n\n browseLoop(content.cursor);\n }\n\n return browser;\n};\n/*\n* Get a Typeahead.js adapter\n* @param searchParams contains an object with query parameters (see search for details)\n*/\n\n\nIndex.prototype.ttAdapter = deprecate(function (params) {\n var self = this;\n return function ttAdapter(query, syncCb, asyncCb) {\n var cb;\n\n if (typeof asyncCb === 'function') {\n // typeahead 0.11\n cb = asyncCb;\n } else {\n // pre typeahead 0.11\n cb = syncCb;\n }\n\n self.search(query, params, function searchDone(err, content) {\n if (err) {\n cb(err);\n return;\n }\n\n cb(content.hits);\n });\n };\n}, 'ttAdapter is not necessary anymore and will be removed in the next version,\\n' + 'have a look at autocomplete.js (https://github.com/algolia/autocomplete.js)');\n/*\n* Wait the publication of a task on the server.\n* All server task are asynchronous and you can check with this method that the task is published.\n*\n* @param taskID the id of the task returned by server\n* @param callback the result callback with with two arguments:\n* error: null or Error('message')\n* content: the server answer that contains the list of results\n*/\n\nIndex.prototype.waitTask = function (taskID, callback) {\n // wait minimum 100ms before retrying\n var baseDelay = 100; // wait maximum 5s before retrying\n\n var maxDelay = 5000;\n var loop = 0; // waitTask() must be handled differently from other methods,\n // it's a recursive method using a timeout\n\n var indexObj = this;\n var client = indexObj.as;\n var promise = retryLoop();\n\n function retryLoop() {\n return client._jsonRequest({\n method: 'GET',\n hostType: 'read',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/task/' + taskID\n }).then(function success(content) {\n loop++;\n var delay = baseDelay * loop * loop;\n\n if (delay > maxDelay) {\n delay = maxDelay;\n }\n\n if (content.status !== 'published') {\n return client._promise.delay(delay).then(retryLoop);\n }\n\n return content;\n });\n }\n\n if (!callback) {\n return promise;\n }\n\n promise.then(successCb, failureCb);\n\n function successCb(content) {\n exitPromise(function exit() {\n callback(null, content);\n }, client._setTimeout || setTimeout);\n }\n\n function failureCb(err) {\n exitPromise(function exit() {\n callback(err);\n }, client._setTimeout || setTimeout);\n }\n};\n/*\n* This function deletes the index content. Settings and index specific API keys are kept untouched.\n*\n* @param callback (optional) the result callback called with two arguments\n* error: null or Error('message')\n* content: the settings object or the error message if a failure occurred\n*/\n\n\nIndex.prototype.clearIndex = function (callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/clear',\n hostType: 'write',\n callback: callback\n });\n};\n/*\n* Get settings of this index\n*\n* @param opts an object of options to add\n* @param opts.advanced get more settings like nbShards (useful for Enterprise)\n* @param callback (optional) the result callback called with two arguments\n* error: null or Error('message')\n* content: the settings object or the error message if a failure occurred\n*/\n\n\nIndex.prototype.getSettings = function (opts, callback) {\n if (arguments.length === 1 && typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n opts = opts || {};\n var indexName = encodeURIComponent(this.indexName);\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + indexName + '/settings?getVersion=2' + (opts.advanced ? '&advanced=' + opts.advanced : ''),\n hostType: 'read',\n callback: callback\n });\n};\n\nIndex.prototype.searchSynonyms = function (params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = {};\n } else if (params === undefined) {\n params = {};\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/search',\n body: params,\n hostType: 'read',\n callback: callback\n });\n};\n\nfunction exportData(method, _hitsPerPage, callback) {\n function search(page, _previous) {\n var options = {\n page: page || 0,\n hitsPerPage: _hitsPerPage || 100\n };\n var previous = _previous || [];\n return method(options).then(function (result) {\n var hits = result.hits;\n var nbHits = result.nbHits;\n var current = hits.map(function (s) {\n delete s._highlightResult;\n return s;\n });\n var synonyms = previous.concat(current);\n\n if (synonyms.length < nbHits) {\n return search(options.page + 1, synonyms);\n }\n\n return synonyms;\n });\n }\n\n return search().then(function (data) {\n if (typeof callback === 'function') {\n callback(data);\n return undefined;\n }\n\n return data;\n });\n}\n/**\n * Retrieve all the synonyms in an index\n * @param [number=100] hitsPerPage The amount of synonyms to retrieve per batch\n * @param [function] callback will be called after all synonyms are retrieved\n */\n\n\nIndex.prototype.exportSynonyms = function (hitsPerPage, callback) {\n return exportData(this.searchSynonyms.bind(this), hitsPerPage, callback);\n};\n\nIndex.prototype.saveSynonym = function (synonym, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n if (opts.forwardToSlaves !== undefined) deprecateForwardToSlaves();\n var forwardToReplicas = opts.forwardToSlaves || opts.forwardToReplicas ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'PUT',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/' + encodeURIComponent(synonym.objectID) + '?forwardToReplicas=' + forwardToReplicas,\n body: synonym,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.getSynonym = function (objectID, callback) {\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/' + encodeURIComponent(objectID),\n hostType: 'read',\n callback: callback\n });\n};\n\nIndex.prototype.deleteSynonym = function (objectID, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n if (opts.forwardToSlaves !== undefined) deprecateForwardToSlaves();\n var forwardToReplicas = opts.forwardToSlaves || opts.forwardToReplicas ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'DELETE',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/' + encodeURIComponent(objectID) + '?forwardToReplicas=' + forwardToReplicas,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.clearSynonyms = function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n if (opts.forwardToSlaves !== undefined) deprecateForwardToSlaves();\n var forwardToReplicas = opts.forwardToSlaves || opts.forwardToReplicas ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/clear' + '?forwardToReplicas=' + forwardToReplicas,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.batchSynonyms = function (synonyms, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n if (opts.forwardToSlaves !== undefined) deprecateForwardToSlaves();\n var forwardToReplicas = opts.forwardToSlaves || opts.forwardToReplicas ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/synonyms/batch' + '?forwardToReplicas=' + forwardToReplicas + '&replaceExistingSynonyms=' + (opts.replaceExistingSynonyms ? 'true' : 'false'),\n hostType: 'write',\n body: synonyms,\n callback: callback\n });\n};\n\nIndex.prototype.searchRules = function (params, callback) {\n if (typeof params === 'function') {\n callback = params;\n params = {};\n } else if (params === undefined) {\n params = {};\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/search',\n body: params,\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * Retrieve all the query rules in an index\n * @param [number=100] hitsPerPage The amount of query rules to retrieve per batch\n * @param [function] callback will be called after all query rules are retrieved\n * error: null or Error('message')\n */\n\n\nIndex.prototype.exportRules = function (hitsPerPage, callback) {\n return exportData(this.searchRules.bind(this), hitsPerPage, callback);\n};\n\nIndex.prototype.saveRule = function (rule, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n if (!rule.objectID) {\n throw new errors.AlgoliaSearchError('Missing or empty objectID field for rule');\n }\n\n var forwardToReplicas = opts.forwardToReplicas === true ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'PUT',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/' + encodeURIComponent(rule.objectID) + '?forwardToReplicas=' + forwardToReplicas,\n body: rule,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.getRule = function (objectID, callback) {\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/' + encodeURIComponent(objectID),\n hostType: 'read',\n callback: callback\n });\n};\n\nIndex.prototype.deleteRule = function (objectID, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n var forwardToReplicas = opts.forwardToReplicas === true ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'DELETE',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/' + encodeURIComponent(objectID) + '?forwardToReplicas=' + forwardToReplicas,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.clearRules = function (opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n var forwardToReplicas = opts.forwardToReplicas === true ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/clear' + '?forwardToReplicas=' + forwardToReplicas,\n hostType: 'write',\n callback: callback\n });\n};\n\nIndex.prototype.batchRules = function (rules, opts, callback) {\n if (typeof opts === 'function') {\n callback = opts;\n opts = {};\n } else if (opts === undefined) {\n opts = {};\n }\n\n var forwardToReplicas = opts.forwardToReplicas === true ? 'true' : 'false';\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/rules/batch' + '?forwardToReplicas=' + forwardToReplicas + '&clearExistingRules=' + (opts.clearExistingRules === true ? 'true' : 'false'),\n hostType: 'write',\n body: rules,\n callback: callback\n });\n};\n\nIndex.prototype.exists = function (callback) {\n var result = this.getSettings().then(function () {\n return true;\n }).catch(function (err) {\n if (err instanceof errors.AlgoliaSearchError && err.statusCode === 404) {\n return false;\n }\n\n throw err;\n });\n\n if (typeof callback !== 'function') {\n return result;\n }\n\n result.then(function (res) {\n callback(null, res);\n }).catch(function (err) {\n callback(err);\n });\n};\n\nIndex.prototype.findObject = function (findCallback, requestOptions, callback) {\n requestOptions = requestOptions === undefined ? {} : requestOptions;\n var paginate = requestOptions.paginate !== undefined ? requestOptions.paginate : true;\n var query = requestOptions.query !== undefined ? requestOptions.query : '';\n var that = this;\n var page = 0;\n\n var paginateLoop = function paginateLoop() {\n requestOptions.page = page;\n return that.search(query, requestOptions).then(function (result) {\n var hits = result.hits;\n\n for (var position = 0; position < hits.length; position++) {\n var hit = hits[position];\n\n if (findCallback(hit)) {\n return {\n object: hit,\n position: position,\n page: page\n };\n }\n }\n\n page += 1; // paginate if option was set and has next page\n\n if (!paginate || page >= result.nbPages) {\n throw new errors.ObjectNotFound('Object not found');\n }\n\n return paginateLoop();\n });\n };\n\n var promise = paginateLoop(page);\n\n if (callback === undefined) {\n return promise;\n }\n\n promise.then(function (res) {\n callback(null, res);\n }).catch(function (err) {\n callback(err);\n });\n};\n\nIndex.prototype.getObjectPosition = function (result, objectID) {\n var hits = result.hits;\n\n for (var position = 0; position < hits.length; position++) {\n if (hits[position].objectID === objectID) {\n return position;\n }\n }\n\n return -1;\n};\n/*\n* Set settings for this index\n*\n* @param settings the settings object that can contains :\n* - minWordSizefor1Typo: (integer) the minimum number of characters to accept one typo (default = 3).\n* - minWordSizefor2Typos: (integer) the minimum number of characters to accept two typos (default = 7).\n* - hitsPerPage: (integer) the number of hits per page (default = 10).\n* - attributesToRetrieve: (array of strings) default list of attributes to retrieve in objects.\n* If set to null, all attributes are retrieved.\n* - attributesToHighlight: (array of strings) default list of attributes to highlight.\n* If set to null, all indexed attributes are highlighted.\n* - attributesToSnippet**: (array of strings) default list of attributes to snippet alongside the number\n* of words to return (syntax is attributeName:nbWords).\n* By default no snippet is computed. If set to null, no snippet is computed.\n* - attributesToIndex: (array of strings) the list of fields you want to index.\n* If set to null, all textual and numerical attributes of your objects are indexed,\n* but you should update it to get optimal results.\n* This parameter has two important uses:\n* - Limit the attributes to index: For example if you store a binary image in base64,\n* you want to store it and be able to\n* retrieve it but you don't want to search in the base64 string.\n* - Control part of the ranking*: (see the ranking parameter for full explanation)\n* Matches in attributes at the beginning of\n* the list will be considered more important than matches in attributes further down the list.\n* In one attribute, matching text at the beginning of the attribute will be\n* considered more important than text after, you can disable\n* this behavior if you add your attribute inside `unordered(AttributeName)`,\n* for example attributesToIndex: [\"title\", \"unordered(text)\"].\n* - attributesForFaceting: (array of strings) The list of fields you want to use for faceting.\n* All strings in the attribute selected for faceting are extracted and added as a facet.\n* If set to null, no attribute is used for faceting.\n* - attributeForDistinct: (string) The attribute name used for the Distinct feature.\n* This feature is similar to the SQL \"distinct\" keyword: when enabled\n* in query with the distinct=1 parameter, all hits containing a duplicate\n* value for this attribute are removed from results.\n* For example, if the chosen attribute is show_name and several hits have\n* the same value for show_name, then only the best one is kept and others are removed.\n* - ranking: (array of strings) controls the way results are sorted.\n* We have six available criteria:\n* - typo: sort according to number of typos,\n* - geo: sort according to decreassing distance when performing a geo-location based search,\n* - proximity: sort according to the proximity of query words in hits,\n* - attribute: sort according to the order of attributes defined by attributesToIndex,\n* - exact:\n* - if the user query contains one word: sort objects having an attribute\n* that is exactly the query word before others.\n* For example if you search for the \"V\" TV show, you want to find it\n* with the \"V\" query and avoid to have all popular TV\n* show starting by the v letter before it.\n* - if the user query contains multiple words: sort according to the\n* number of words that matched exactly (and not as a prefix).\n* - custom: sort according to a user defined formula set in **customRanking** attribute.\n* The standard order is [\"typo\", \"geo\", \"proximity\", \"attribute\", \"exact\", \"custom\"]\n* - customRanking: (array of strings) lets you specify part of the ranking.\n* The syntax of this condition is an array of strings containing attributes\n* prefixed by asc (ascending order) or desc (descending order) operator.\n* For example `\"customRanking\" => [\"desc(population)\", \"asc(name)\"]`\n* - queryType: Select how the query words are interpreted, it can be one of the following value:\n* - prefixAll: all query words are interpreted as prefixes,\n* - prefixLast: only the last word is interpreted as a prefix (default behavior),\n* - prefixNone: no query word is interpreted as a prefix. This option is not recommended.\n* - highlightPreTag: (string) Specify the string that is inserted before\n* the highlighted parts in the query result (default to \"<em>\").\n* - highlightPostTag: (string) Specify the string that is inserted after\n* the highlighted parts in the query result (default to \"</em>\").\n* - optionalWords: (array of strings) Specify a list of words that should\n* be considered as optional when found in the query.\n* @param callback (optional) the result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer or the error message if a failure occurred\n*/\n\n\nIndex.prototype.setSettings = function (settings, opts, callback) {\n if (arguments.length === 1 || typeof opts === 'function') {\n callback = opts;\n opts = {};\n }\n\n if (opts.forwardToSlaves !== undefined) deprecateForwardToSlaves();\n var forwardToReplicas = opts.forwardToSlaves || opts.forwardToReplicas ? 'true' : 'false';\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'PUT',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/settings?forwardToReplicas=' + forwardToReplicas,\n hostType: 'write',\n body: settings,\n callback: callback\n });\n};\n/*\n* @deprecated see client.listApiKeys()\n*/\n\n\nIndex.prototype.listUserKeys = deprecate(function (callback) {\n return this.listApiKeys(callback);\n}, deprecatedMessage('index.listUserKeys()', 'client.listApiKeys()'));\n/*\n* List all existing API keys to this index\n*\n* @param callback the result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with API keys belonging to the index\n*\n* @deprecated see client.listApiKeys()\n*/\n\nIndex.prototype.listApiKeys = deprecate(function (callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/keys',\n hostType: 'read',\n callback: callback\n });\n}, deprecatedMessage('index.listApiKeys()', 'client.listApiKeys()'));\n/*\n* @deprecated see client.getApiKey()\n*/\n\nIndex.prototype.getUserKeyACL = deprecate(function (key, callback) {\n return this.getApiKey(key, callback);\n}, deprecatedMessage('index.getUserKeyACL()', 'client.getApiKey()'));\n/*\n* Get an API key from this index\n*\n* @param key\n* @param callback the result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with the right API key\n*\n* @deprecated see client.getApiKey()\n*/\n\nIndex.prototype.getApiKey = deprecate(function (key, callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'GET',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/keys/' + key,\n hostType: 'read',\n callback: callback\n });\n}, deprecatedMessage('index.getApiKey()', 'client.getApiKey()'));\n/*\n* @deprecated see client.deleteApiKey()\n*/\n\nIndex.prototype.deleteUserKey = deprecate(function (key, callback) {\n return this.deleteApiKey(key, callback);\n}, deprecatedMessage('index.deleteUserKey()', 'client.deleteApiKey()'));\n/*\n* Delete an existing API key associated to this index\n*\n* @param key\n* @param callback the result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with the deletion date\n*\n* @deprecated see client.deleteApiKey()\n*/\n\nIndex.prototype.deleteApiKey = deprecate(function (key, callback) {\n var indexObj = this;\n return this.as._jsonRequest({\n method: 'DELETE',\n url: '/1/indexes/' + encodeURIComponent(indexObj.indexName) + '/keys/' + key,\n hostType: 'write',\n callback: callback\n });\n}, deprecatedMessage('index.deleteApiKey()', 'client.deleteApiKey()'));\n/*\n* @deprecated see client.addApiKey()\n*/\n\nIndex.prototype.addUserKey = deprecate(function (acls, params, callback) {\n return this.addApiKey(acls, params, callback);\n}, deprecatedMessage('index.addUserKey()', 'client.addApiKey()'));\n/*\n* Add a new API key to this index\n*\n* @param {string[]} acls - The list of ACL for this key. Defined by an array of strings that\n* can contains the following values:\n* - search: allow to search (https and http)\n* - addObject: allows to add/update an object in the index (https only)\n* - deleteObject : allows to delete an existing object (https only)\n* - deleteIndex : allows to delete index content (https only)\n* - settings : allows to get index settings (https only)\n* - editSettings : allows to change index settings (https only)\n* @param {Object} [params] - Optionnal parameters to set for the key\n* @param {number} params.validity - Number of seconds after which the key will\n* be automatically removed (0 means no time limit for this key)\n* @param {number} params.maxQueriesPerIPPerHour - Number of API calls allowed from an IP address per hour\n* @param {number} params.maxHitsPerQuery - Number of hits this API key can retrieve in one call\n* @param {string} params.description - A description for your key\n* @param {string[]} params.referers - A list of authorized referers\n* @param {Object} params.queryParameters - Force the key to use specific query parameters\n* @param {Function} callback - The result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with the added API key\n* @return {Promise|undefined} Returns a promise if no callback given\n* @example\n* index.addUserKey(['search'], {\n* validity: 300,\n* maxQueriesPerIPPerHour: 2000,\n* maxHitsPerQuery: 3,\n* description: 'Eat three fruits',\n* referers: ['*.algolia.com'],\n* queryParameters: {\n* tagFilters: ['public'],\n* }\n* })\n* @see {@link https://www.algolia.com/doc/rest_api#AddIndexKey|Algolia REST API Documentation}\n*\n* @deprecated see client.addApiKey()\n*/\n\nIndex.prototype.addApiKey = deprecate(function (acls, params, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: index.addApiKey(arrayOfAcls[, params, callback])';\n\n if (!isArray(acls)) {\n throw new Error(usage);\n }\n\n if (arguments.length === 1 || typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n var postObj = {\n acl: acls\n };\n\n if (params) {\n postObj.validity = params.validity;\n postObj.maxQueriesPerIPPerHour = params.maxQueriesPerIPPerHour;\n postObj.maxHitsPerQuery = params.maxHitsPerQuery;\n postObj.description = params.description;\n\n if (params.queryParameters) {\n postObj.queryParameters = this.as._getSearchParams(params.queryParameters, '');\n }\n\n postObj.referers = params.referers;\n }\n\n return this.as._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/keys',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n}, deprecatedMessage('index.addApiKey()', 'client.addApiKey()'));\n/**\n* @deprecated use client.addApiKey()\n*/\n\nIndex.prototype.addUserKeyWithValidity = deprecate(function deprecatedAddUserKeyWithValidity(acls, params, callback) {\n return this.addApiKey(acls, params, callback);\n}, deprecatedMessage('index.addUserKeyWithValidity()', 'client.addApiKey()'));\n/*\n* @deprecated see client.updateApiKey()\n*/\n\nIndex.prototype.updateUserKey = deprecate(function (key, acls, params, callback) {\n return this.updateApiKey(key, acls, params, callback);\n}, deprecatedMessage('index.updateUserKey()', 'client.updateApiKey()'));\n/**\n* Update an existing API key of this index\n* @param {string} key - The key to update\n* @param {string[]} acls - The list of ACL for this key. Defined by an array of strings that\n* can contains the following values:\n* - search: allow to search (https and http)\n* - addObject: allows to add/update an object in the index (https only)\n* - deleteObject : allows to delete an existing object (https only)\n* - deleteIndex : allows to delete index content (https only)\n* - settings : allows to get index settings (https only)\n* - editSettings : allows to change index settings (https only)\n* @param {Object} [params] - Optionnal parameters to set for the key\n* @param {number} params.validity - Number of seconds after which the key will\n* be automatically removed (0 means no time limit for this key)\n* @param {number} params.maxQueriesPerIPPerHour - Number of API calls allowed from an IP address per hour\n* @param {number} params.maxHitsPerQuery - Number of hits this API key can retrieve in one call\n* @param {string} params.description - A description for your key\n* @param {string[]} params.referers - A list of authorized referers\n* @param {Object} params.queryParameters - Force the key to use specific query parameters\n* @param {Function} callback - The result callback called with two arguments\n* error: null or Error('message')\n* content: the server answer with user keys list\n* @return {Promise|undefined} Returns a promise if no callback given\n* @example\n* index.updateApiKey('APIKEY', ['search'], {\n* validity: 300,\n* maxQueriesPerIPPerHour: 2000,\n* maxHitsPerQuery: 3,\n* description: 'Eat three fruits',\n* referers: ['*.algolia.com'],\n* queryParameters: {\n* tagFilters: ['public'],\n* }\n* })\n* @see {@link https://www.algolia.com/doc/rest_api#UpdateIndexKey|Algolia REST API Documentation}\n*\n* @deprecated see client.updateApiKey()\n*/\n\nIndex.prototype.updateApiKey = deprecate(function (key, acls, params, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: index.updateApiKey(key, arrayOfAcls[, params, callback])';\n\n if (!isArray(acls)) {\n throw new Error(usage);\n }\n\n if (arguments.length === 2 || typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n var putObj = {\n acl: acls\n };\n\n if (params) {\n putObj.validity = params.validity;\n putObj.maxQueriesPerIPPerHour = params.maxQueriesPerIPPerHour;\n putObj.maxHitsPerQuery = params.maxHitsPerQuery;\n putObj.description = params.description;\n\n if (params.queryParameters) {\n putObj.queryParameters = this.as._getSearchParams(params.queryParameters, '');\n }\n\n putObj.referers = params.referers;\n }\n\n return this.as._jsonRequest({\n method: 'PUT',\n url: '/1/indexes/' + encodeURIComponent(this.indexName) + '/keys/' + key,\n body: putObj,\n hostType: 'write',\n callback: callback\n });\n}, deprecatedMessage('index.updateApiKey()', 'client.updateApiKey()'));","'use strict';\n/* eslint-disable max-params */\n\nvar trim = require('trim');\n\nvar repeat = require('repeat-string');\n\nvar decimal = require('is-decimal');\n\nvar getIndent = require('../util/get-indentation');\n\nvar removeIndent = require('../util/remove-indentation');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = list;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_PLUS = '+';\nvar C_DASH = '-';\nvar C_DOT = '.';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_PAREN_CLOSE = ')';\nvar C_X_LOWER = 'x';\nvar TAB_SIZE = 4;\nvar EXPRESSION_LOOSE_LIST_ITEM = /\\n\\n(?!\\s*$)/;\nvar EXPRESSION_TASK_ITEM = /^\\[([ \\t]|x|X)][ \\t]/;\nvar EXPRESSION_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])( {1,4}(?! )| |\\t|$|(?=\\n))([^\\n]*)/;\nvar EXPRESSION_PEDANTIC_BULLET = /^([ \\t]*)([*+-]|\\d+[.)])([ \\t]+)/;\nvar EXPRESSION_INITIAL_INDENT = /^( {1,4}|\\t)?/gm;\n/* Map of characters which can be used to mark\n * list-items. */\n\nvar LIST_UNORDERED_MARKERS = {};\nLIST_UNORDERED_MARKERS[C_ASTERISK] = true;\nLIST_UNORDERED_MARKERS[C_PLUS] = true;\nLIST_UNORDERED_MARKERS[C_DASH] = true;\n/* Map of characters which can be used to mark\n * list-items after a digit. */\n\nvar LIST_ORDERED_MARKERS = {};\nLIST_ORDERED_MARKERS[C_DOT] = true;\n/* Map of characters which can be used to mark\n * list-items after a digit. */\n\nvar LIST_ORDERED_COMMONMARK_MARKERS = {};\nLIST_ORDERED_COMMONMARK_MARKERS[C_DOT] = true;\nLIST_ORDERED_COMMONMARK_MARKERS[C_PAREN_CLOSE] = true;\n\nfunction list(eat, value, silent) {\n var self = this;\n var commonmark = self.options.commonmark;\n var pedantic = self.options.pedantic;\n var tokenizers = self.blockTokenizers;\n var interuptors = self.interruptList;\n var markers;\n var index = 0;\n var length = value.length;\n var start = null;\n var size = 0;\n var queue;\n var ordered;\n var character;\n var marker;\n var nextIndex;\n var startIndex;\n var prefixed;\n var currentMarker;\n var content;\n var line;\n var prevEmpty;\n var empty;\n var items;\n var allLines;\n var emptyLines;\n var item;\n var enterTop;\n var exitBlockquote;\n var isLoose;\n var node;\n var now;\n var end;\n var indented;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_TAB) {\n size += TAB_SIZE - size % TAB_SIZE;\n } else if (character === C_SPACE) {\n size++;\n } else {\n break;\n }\n\n index++;\n }\n\n if (size >= TAB_SIZE) {\n return;\n }\n\n character = value.charAt(index);\n markers = commonmark ? LIST_ORDERED_COMMONMARK_MARKERS : LIST_ORDERED_MARKERS;\n\n if (LIST_UNORDERED_MARKERS[character] === true) {\n marker = character;\n ordered = false;\n } else {\n ordered = true;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!decimal(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (!queue || markers[character] !== true) {\n return;\n }\n\n start = parseInt(queue, 10);\n marker = character;\n }\n\n character = value.charAt(++index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n index = 0;\n items = [];\n allLines = [];\n emptyLines = [];\n\n while (index < length) {\n nextIndex = value.indexOf(C_NEWLINE, index);\n startIndex = index;\n prefixed = false;\n indented = false;\n\n if (nextIndex === -1) {\n nextIndex = length;\n }\n\n end = index + TAB_SIZE;\n size = 0;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_TAB) {\n size += TAB_SIZE - size % TAB_SIZE;\n } else if (character === C_SPACE) {\n size++;\n } else {\n break;\n }\n\n index++;\n }\n\n if (size >= TAB_SIZE) {\n indented = true;\n }\n\n if (item && size >= item.indent) {\n indented = true;\n }\n\n character = value.charAt(index);\n currentMarker = null;\n\n if (!indented) {\n if (LIST_UNORDERED_MARKERS[character] === true) {\n currentMarker = character;\n index++;\n size++;\n } else {\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!decimal(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n index++;\n\n if (queue && markers[character] === true) {\n currentMarker = character;\n size += queue.length + 1;\n }\n }\n\n if (currentMarker) {\n character = value.charAt(index);\n\n if (character === C_TAB) {\n size += TAB_SIZE - size % TAB_SIZE;\n index++;\n } else if (character === C_SPACE) {\n end = index + TAB_SIZE;\n\n while (index < end) {\n if (value.charAt(index) !== C_SPACE) {\n break;\n }\n\n index++;\n size++;\n }\n\n if (index === end && value.charAt(index) === C_SPACE) {\n index -= TAB_SIZE - 1;\n size -= TAB_SIZE - 1;\n }\n } else if (character !== C_NEWLINE && character !== '') {\n currentMarker = null;\n }\n }\n }\n\n if (currentMarker) {\n if (!pedantic && marker !== currentMarker) {\n break;\n }\n\n prefixed = true;\n } else {\n if (!commonmark && !indented && value.charAt(startIndex) === C_SPACE) {\n indented = true;\n } else if (commonmark && item) {\n indented = size >= item.indent || size > TAB_SIZE;\n }\n\n prefixed = false;\n index = startIndex;\n }\n\n line = value.slice(startIndex, nextIndex);\n content = startIndex === index ? line : value.slice(index, nextIndex);\n\n if (currentMarker === C_ASTERISK || currentMarker === C_UNDERSCORE || currentMarker === C_DASH) {\n if (tokenizers.thematicBreak.call(self, eat, line, true)) {\n break;\n }\n }\n\n prevEmpty = empty;\n empty = !trim(content).length;\n\n if (indented && item) {\n item.value = item.value.concat(emptyLines, line);\n allLines = allLines.concat(emptyLines, line);\n emptyLines = [];\n } else if (prefixed) {\n if (emptyLines.length !== 0) {\n item.value.push('');\n item.trail = emptyLines.concat();\n }\n\n item = {\n value: [line],\n indent: size,\n trail: []\n };\n items.push(item);\n allLines = allLines.concat(emptyLines, line);\n emptyLines = [];\n } else if (empty) {\n if (prevEmpty) {\n break;\n }\n\n emptyLines.push(line);\n } else {\n if (prevEmpty) {\n break;\n }\n\n if (interrupt(interuptors, tokenizers, self, [eat, line, true])) {\n break;\n }\n\n item.value = item.value.concat(emptyLines, line);\n allLines = allLines.concat(emptyLines, line);\n emptyLines = [];\n }\n\n index = nextIndex + 1;\n }\n\n node = eat(allLines.join(C_NEWLINE)).reset({\n type: 'list',\n ordered: ordered,\n start: start,\n loose: null,\n children: []\n });\n enterTop = self.enterList();\n exitBlockquote = self.enterBlock();\n isLoose = false;\n index = -1;\n length = items.length;\n\n while (++index < length) {\n item = items[index].value.join(C_NEWLINE);\n now = eat.now();\n item = eat(item)(listItem(self, item, now), node);\n\n if (item.loose) {\n isLoose = true;\n }\n\n item = items[index].trail.join(C_NEWLINE);\n\n if (index !== length - 1) {\n item += C_NEWLINE;\n }\n\n eat(item);\n }\n\n enterTop();\n exitBlockquote();\n node.loose = isLoose;\n return node;\n}\n\nfunction listItem(ctx, value, position) {\n var offsets = ctx.offset;\n var fn = ctx.options.pedantic ? pedanticListItem : normalListItem;\n var checked = null;\n var task;\n var indent;\n value = fn.apply(null, arguments);\n\n if (ctx.options.gfm) {\n task = value.match(EXPRESSION_TASK_ITEM);\n\n if (task) {\n indent = task[0].length;\n checked = task[1].toLowerCase() === C_X_LOWER;\n offsets[position.line] += indent;\n value = value.slice(indent);\n }\n }\n\n return {\n type: 'listItem',\n loose: EXPRESSION_LOOSE_LIST_ITEM.test(value) || value.charAt(value.length - 1) === C_NEWLINE,\n checked: checked,\n children: ctx.tokenizeBlock(value, position)\n };\n}\n/* Create a list-item using overly simple mechanics. */\n\n\nfunction pedanticListItem(ctx, value, position) {\n var offsets = ctx.offset;\n var line = position.line;\n /* Remove the list-item’s bullet. */\n\n value = value.replace(EXPRESSION_PEDANTIC_BULLET, replacer);\n /* The initial line was also matched by the below, so\n * we reset the `line`. */\n\n line = position.line;\n return value.replace(EXPRESSION_INITIAL_INDENT, replacer);\n /* A simple replacer which removed all matches,\n * and adds their length to `offset`. */\n\n function replacer($0) {\n offsets[line] = (offsets[line] || 0) + $0.length;\n line++;\n return '';\n }\n}\n/* Create a list-item using sane mechanics. */\n\n\nfunction normalListItem(ctx, value, position) {\n var offsets = ctx.offset;\n var line = position.line;\n var max;\n var bullet;\n var rest;\n var lines;\n var trimmedLines;\n var index;\n var length;\n /* Remove the list-item’s bullet. */\n\n value = value.replace(EXPRESSION_BULLET, replacer);\n lines = value.split(C_NEWLINE);\n trimmedLines = removeIndent(value, getIndent(max).indent).split(C_NEWLINE);\n /* We replaced the initial bullet with something\n * else above, which was used to trick\n * `removeIndentation` into removing some more\n * characters when possible. However, that could\n * result in the initial line to be stripped more\n * than it should be. */\n\n trimmedLines[0] = rest;\n offsets[line] = (offsets[line] || 0) + bullet.length;\n line++;\n index = 0;\n length = lines.length;\n\n while (++index < length) {\n offsets[line] = (offsets[line] || 0) + lines[index].length - trimmedLines[index].length;\n line++;\n }\n\n return trimmedLines.join(C_NEWLINE);\n\n function replacer($0, $1, $2, $3, $4) {\n bullet = $1 + $2 + $3;\n rest = $4;\n /* Make sure that the first nine numbered list items\n * can indent with an extra space. That is, when\n * the bullet did not receive an extra final space. */\n\n if (Number($2) < 10 && bullet.length % 2 === 1) {\n $2 = C_SPACE + $2;\n }\n\n max = $1 + repeat(C_SPACE, $2.length) + $3;\n return max + rest;\n }\n}","'use strict';\n\nmodule.exports = wordCharacter;\nvar fromCode = String.fromCharCode;\nvar re = /\\w/;\n/* Check if the given character code, or the character\n * code at the first character, is a word character. */\n\nfunction wordCharacter(character) {\n return re.test(typeof character === 'number' ? fromCode(character) : character.charAt(0));\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/link');\n\nmodule.exports = link;\nlink.locator = locate;\nvar own = {}.hasOwnProperty;\nvar C_BACKSLASH = '\\\\';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_TICK = '`';\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\n/* Map of characters, which can be used to mark link\n * and image titles. */\n\nvar LINK_MARKERS = {};\nLINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nLINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\n/* Map of characters, which can be used to mark link\n * and image titles in commonmark-mode. */\n\nvar COMMONMARK_LINK_MARKERS = {};\nCOMMONMARK_LINK_MARKERS[C_DOUBLE_QUOTE] = C_DOUBLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_SINGLE_QUOTE] = C_SINGLE_QUOTE;\nCOMMONMARK_LINK_MARKERS[C_PAREN_OPEN] = C_PAREN_CLOSE;\n\nfunction link(eat, value, silent) {\n var self = this;\n var subvalue = '';\n var index = 0;\n var character = value.charAt(0);\n var pedantic = self.options.pedantic;\n var commonmark = self.options.commonmark;\n var gfm = self.options.gfm;\n var closed;\n var count;\n var opening;\n var beforeURL;\n var beforeTitle;\n var subqueue;\n var hasMarker;\n var markers;\n var isImage;\n var content;\n var marker;\n var length;\n var title;\n var depth;\n var queue;\n var url;\n var now;\n var exit;\n var node;\n /* Detect whether this is an image. */\n\n if (character === '!') {\n isImage = true;\n subvalue = character;\n character = value.charAt(++index);\n }\n /* Eat the opening. */\n\n\n if (character !== C_BRACKET_OPEN) {\n return;\n }\n /* Exit when this is a link and we’re already inside\n * a link. */\n\n\n if (!isImage && self.inLink) {\n return;\n }\n\n subvalue += character;\n queue = '';\n index++;\n /* Eat the content. */\n\n length = value.length;\n now = eat.now();\n depth = 0;\n now.column += index;\n now.offset += index;\n\n while (index < length) {\n character = value.charAt(index);\n subqueue = character;\n\n if (character === C_TICK) {\n /* Inline-code in link content. */\n count = 1;\n\n while (value.charAt(index + 1) === C_TICK) {\n subqueue += character;\n index++;\n count++;\n }\n\n if (!opening) {\n opening = count;\n } else if (count >= opening) {\n opening = 0;\n }\n } else if (character === C_BACKSLASH) {\n /* Allow brackets to be escaped. */\n index++;\n subqueue += value.charAt(index);\n /* In GFM mode, brackets in code still count.\n * In all other modes, they don’t. This empty\n * block prevents the next statements are\n * entered. */\n } else if ((!opening || gfm) && character === C_BRACKET_OPEN) {\n depth++;\n } else if ((!opening || gfm) && character === C_BRACKET_CLOSE) {\n if (depth) {\n depth--;\n } else {\n /* Allow white-space between content and\n * url in GFM mode. */\n if (!pedantic) {\n while (index < length) {\n character = value.charAt(index + 1);\n\n if (!whitespace(character)) {\n break;\n }\n\n subqueue += character;\n index++;\n }\n }\n\n if (value.charAt(index + 1) !== C_PAREN_OPEN) {\n return;\n }\n\n subqueue += C_PAREN_OPEN;\n closed = true;\n index++;\n break;\n }\n }\n\n queue += subqueue;\n subqueue = '';\n index++;\n }\n /* Eat the content closing. */\n\n\n if (!closed) {\n return;\n }\n\n content = queue;\n subvalue += queue + subqueue;\n index++;\n /* Eat white-space. */\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n /* Eat the URL. */\n\n\n character = value.charAt(index);\n markers = commonmark ? COMMONMARK_LINK_MARKERS : LINK_MARKERS;\n queue = '';\n beforeURL = subvalue;\n\n if (character === C_LT) {\n index++;\n beforeURL += C_LT;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_GT) {\n break;\n }\n\n if (commonmark && character === '\\n') {\n return;\n }\n\n queue += character;\n index++;\n }\n\n if (value.charAt(index) !== C_GT) {\n return;\n }\n\n subvalue += C_LT + queue + C_GT;\n url = queue;\n index++;\n } else {\n character = null;\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (subqueue && own.call(markers, character)) {\n break;\n }\n\n if (whitespace(character)) {\n if (!pedantic) {\n break;\n }\n\n subqueue += character;\n } else {\n if (character === C_PAREN_OPEN) {\n depth++;\n } else if (character === C_PAREN_CLOSE) {\n if (depth === 0) {\n break;\n }\n\n depth--;\n }\n\n queue += subqueue;\n subqueue = '';\n\n if (character === C_BACKSLASH) {\n queue += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n queue += character;\n }\n\n index++;\n }\n\n subvalue += queue;\n url = queue;\n index = subvalue.length;\n }\n /* Eat white-space. */\n\n\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n subvalue += queue;\n /* Eat the title. */\n\n if (queue && own.call(markers, character)) {\n index++;\n subvalue += character;\n queue = '';\n marker = markers[character];\n beforeTitle = subvalue;\n /* In commonmark-mode, things are pretty easy: the\n * marker cannot occur inside the title.\n *\n * Non-commonmark does, however, support nested\n * delimiters. */\n\n if (commonmark) {\n while (index < length) {\n character = value.charAt(index);\n\n if (character === marker) {\n break;\n }\n\n if (character === C_BACKSLASH) {\n queue += C_BACKSLASH;\n character = value.charAt(++index);\n }\n\n index++;\n queue += character;\n }\n\n character = value.charAt(index);\n\n if (character !== marker) {\n return;\n }\n\n title = queue;\n subvalue += queue + character;\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!whitespace(character)) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n } else {\n subqueue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === marker) {\n if (hasMarker) {\n queue += marker + subqueue;\n subqueue = '';\n }\n\n hasMarker = true;\n } else if (!hasMarker) {\n queue += character;\n } else if (character === C_PAREN_CLOSE) {\n subvalue += queue + marker + subqueue;\n title = queue;\n break;\n } else if (whitespace(character)) {\n subqueue += character;\n } else {\n queue += marker + subqueue + character;\n subqueue = '';\n hasMarker = false;\n }\n\n index++;\n }\n }\n }\n\n if (value.charAt(index) !== C_PAREN_CLOSE) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n subvalue += C_PAREN_CLOSE;\n url = self.decode.raw(self.unescape(url), eat(beforeURL).test().end, {\n nonTerminated: false\n });\n\n if (title) {\n beforeTitle = eat(beforeTitle).test().end;\n title = self.decode.raw(self.unescape(title), beforeTitle);\n }\n\n node = {\n type: isImage ? 'image' : 'link',\n title: title || null,\n url: url\n };\n\n if (isImage) {\n node.alt = self.decode.raw(self.unescape(content), now) || null;\n } else {\n exit = self.enterLink();\n node.children = self.tokenizeInline(content, now);\n exit();\n }\n\n return eat(subvalue)(node);\n}","'use strict';\n\nmodule.exports = hexadecimal;\n/* Check if the given character code, or the character\n * code at the first character, is hexadecimal. */\n\nfunction hexadecimal(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n return code >= 97\n /* a */\n && code <= 102 ||\n /* z */\n code >= 65\n /* A */\n && code <= 70\n /* Z */\n || code >= 48\n /* A */\n && code <= 57\n /* Z */\n ;\n}","'use strict';\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = fencedCode;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_TILDE = '~';\nvar C_TICK = '`';\nvar MIN_FENCE_COUNT = 3;\nvar CODE_INDENT_COUNT = 4;\n\nfunction fencedCode(eat, value, silent) {\n var self = this;\n var settings = self.options;\n var length = value.length + 1;\n var index = 0;\n var subvalue = '';\n var fenceCount;\n var marker;\n var character;\n var flag;\n var queue;\n var content;\n var exdentedContent;\n var closing;\n var exdentedClosing;\n var indent;\n var now;\n\n if (!settings.gfm) {\n return;\n }\n /* Eat initial spacing. */\n\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n indent = index;\n /* Eat the fence. */\n\n character = value.charAt(index);\n\n if (character !== C_TILDE && character !== C_TICK) {\n return;\n }\n\n index++;\n marker = character;\n fenceCount = 1;\n subvalue += character;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== marker) {\n break;\n }\n\n subvalue += character;\n fenceCount++;\n index++;\n }\n\n if (fenceCount < MIN_FENCE_COUNT) {\n return;\n }\n /* Eat spacing before flag. */\n\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n /* Eat flag. */\n\n\n flag = '';\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_NEWLINE || character === C_TILDE || character === C_TICK) {\n break;\n }\n\n if (character === C_SPACE || character === C_TAB) {\n queue += character;\n } else {\n flag += queue + character;\n queue = '';\n }\n\n index++;\n }\n\n character = value.charAt(index);\n\n if (character && character !== C_NEWLINE) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n now.column += subvalue.length;\n now.offset += subvalue.length;\n subvalue += flag;\n flag = self.decode.raw(self.unescape(flag), now);\n\n if (queue) {\n subvalue += queue;\n }\n\n queue = '';\n closing = '';\n exdentedClosing = '';\n content = '';\n exdentedContent = '';\n /* Eat content. */\n\n while (index < length) {\n character = value.charAt(index);\n content += closing;\n exdentedContent += exdentedClosing;\n closing = '';\n exdentedClosing = '';\n\n if (character !== C_NEWLINE) {\n content += character;\n exdentedClosing += character;\n index++;\n continue;\n }\n /* Add the newline to `subvalue` if its the first\n * character. Otherwise, add it to the `closing`\n * queue. */\n\n\n if (content) {\n closing += character;\n exdentedClosing += character;\n } else {\n subvalue += character;\n }\n\n queue = '';\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n closing += queue;\n exdentedClosing += queue.slice(indent);\n\n if (queue.length >= CODE_INDENT_COUNT) {\n continue;\n }\n\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== marker) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n closing += queue;\n exdentedClosing += queue;\n\n if (queue.length < fenceCount) {\n continue;\n }\n\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n closing += character;\n exdentedClosing += character;\n index++;\n }\n\n if (!character || character === C_NEWLINE) {\n break;\n }\n }\n\n subvalue += content + closing;\n return eat(subvalue)({\n type: 'code',\n lang: flag || null,\n value: trim(exdentedContent)\n });\n}","'use strict';\n\nmodule.exports = escapes;\nvar defaults = ['\\\\', '`', '*', '{', '}', '[', ']', '(', ')', '#', '+', '-', '.', '!', '_', '>'];\nvar gfm = defaults.concat(['~', '|']);\nvar commonmark = gfm.concat(['\\n', '\"', '$', '%', '&', \"'\", ',', '/', ':', ';', '<', '=', '?', '@', '^']);\nescapes.default = defaults;\nescapes.gfm = gfm;\nescapes.commonmark = commonmark;\n/* Get markdown escapes. */\n\nfunction escapes(options) {\n var settings = options || {};\n\n if (settings.commonmark) {\n return commonmark;\n }\n\n return settings.gfm ? gfm : defaults;\n}","'use strict';\n\nvar unherit = require('unherit');\n\nvar xtend = require('xtend');\n\nvar Parser = require('./lib/parser.js');\n\nmodule.exports = parse;\nparse.Parser = Parser;\n\nfunction parse(options) {\n var Local = unherit(Parser);\n Local.prototype.options = xtend(Local.prototype.options, this.data('settings'), options);\n this.Parser = Local;\n}","'use strict';\n\nvar trim = require('trim');\n\nvar repeat = require('repeat-string');\n\nvar getIndent = require('./get-indentation');\n\nmodule.exports = indentation;\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\n/* Remove the minimum indent from every line in `value`.\n * Supports both tab, spaced, and mixed indentation (as\n * well as possible). */\n\nfunction indentation(value, maximum) {\n var values = value.split(C_NEWLINE);\n var position = values.length + 1;\n var minIndent = Infinity;\n var matrix = [];\n var index;\n var indentation;\n var stops;\n var padding;\n values.unshift(repeat(C_SPACE, maximum) + '!');\n\n while (position--) {\n indentation = getIndent(values[position]);\n matrix[position] = indentation.stops;\n\n if (trim(values[position]).length === 0) {\n continue;\n }\n\n if (indentation.indent) {\n if (indentation.indent > 0 && indentation.indent < minIndent) {\n minIndent = indentation.indent;\n }\n } else {\n minIndent = Infinity;\n break;\n }\n }\n\n if (minIndent !== Infinity) {\n position = values.length;\n\n while (position--) {\n stops = matrix[position];\n index = minIndent;\n\n while (index && !(index in stops)) {\n index--;\n }\n\n if (trim(values[position]).length !== 0 && minIndent && index !== minIndent) {\n padding = C_TAB;\n } else {\n padding = '';\n }\n\n values[position] = padding + values[position].slice(index in stops ? stops[index] + 1 : 0);\n }\n }\n\n values.shift();\n return values.join(C_NEWLINE);\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar inherits = require('inherits');\n\nmodule.exports = unherit;\n/* Create a custom constructor which can be modified\n * without affecting the original class. */\n\nfunction unherit(Super) {\n var result;\n var key;\n var value;\n inherits(Of, Super);\n inherits(From, Of);\n /* Clone values. */\n\n result = Of.prototype;\n\n for (key in result) {\n value = result[key];\n\n if (value && typeof value === 'object') {\n result[key] = 'concat' in value ? value.concat() : xtend(value);\n }\n }\n\n return Of;\n /* Constructor accepting a single argument,\n * which itself is an `arguments` object. */\n\n function From(parameters) {\n return Super.apply(this, parameters);\n }\n /* Constructor accepting variadic arguments. */\n\n\n function Of() {\n if (!(this instanceof Of)) {\n return new From(arguments);\n }\n\n return Super.apply(this, arguments);\n }\n}","'use strict';\n/* Dependencies. */\n\nvar extend = require('extend');\n\nvar bail = require('bail');\n\nvar vfile = require('vfile');\n\nvar trough = require('trough');\n\nvar string = require('x-is-string');\n\nvar plain = require('is-plain-obj');\n/* Expose a frozen processor. */\n\n\nmodule.exports = unified().freeze();\nvar slice = [].slice;\nvar own = {}.hasOwnProperty;\n/* Process pipeline. */\n\nvar pipeline = trough().use(pipelineParse).use(pipelineRun).use(pipelineStringify);\n\nfunction pipelineParse(p, ctx) {\n ctx.tree = p.parse(ctx.file);\n}\n\nfunction pipelineRun(p, ctx, next) {\n p.run(ctx.tree, ctx.file, done);\n\n function done(err, tree, file) {\n if (err) {\n next(err);\n } else {\n ctx.tree = tree;\n ctx.file = file;\n next();\n }\n }\n}\n\nfunction pipelineStringify(p, ctx) {\n ctx.file.contents = p.stringify(ctx.tree, ctx.file);\n}\n/* Function to create the first processor. */\n\n\nfunction unified() {\n var attachers = [];\n var transformers = trough();\n var namespace = {};\n var frozen = false;\n var freezeIndex = -1;\n /* Data management. */\n\n processor.data = data;\n /* Lock. */\n\n processor.freeze = freeze;\n /* Plug-ins. */\n\n processor.attachers = attachers;\n processor.use = use;\n /* API. */\n\n processor.parse = parse;\n processor.stringify = stringify;\n processor.run = run;\n processor.runSync = runSync;\n processor.process = process;\n processor.processSync = processSync;\n /* Expose. */\n\n return processor;\n /* Create a new processor based on the processor\n * in the current scope. */\n\n function processor() {\n var destination = unified();\n var length = attachers.length;\n var index = -1;\n\n while (++index < length) {\n destination.use.apply(null, attachers[index]);\n }\n\n destination.data(extend(true, {}, namespace));\n return destination;\n }\n /* Freeze: used to signal a processor that has finished\n * configuration.\n *\n * For example, take unified itself. It’s frozen.\n * Plug-ins should not be added to it. Rather, it should\n * be extended, by invoking it, before modifying it.\n *\n * In essence, always invoke this when exporting a\n * processor. */\n\n\n function freeze() {\n var values;\n var plugin;\n var options;\n var transformer;\n\n if (frozen) {\n return processor;\n }\n\n while (++freezeIndex < attachers.length) {\n values = attachers[freezeIndex];\n plugin = values[0];\n options = values[1];\n transformer = null;\n\n if (options === false) {\n continue;\n }\n\n if (options === true) {\n values[1] = undefined;\n }\n\n transformer = plugin.apply(processor, values.slice(1));\n\n if (typeof transformer === 'function') {\n transformers.use(transformer);\n }\n }\n\n frozen = true;\n freezeIndex = Infinity;\n return processor;\n }\n /* Data management.\n * Getter / setter for processor-specific informtion. */\n\n\n function data(key, value) {\n if (string(key)) {\n /* Set `key`. */\n if (arguments.length === 2) {\n assertUnfrozen('data', frozen);\n namespace[key] = value;\n return processor;\n }\n /* Get `key`. */\n\n\n return own.call(namespace, key) && namespace[key] || null;\n }\n /* Set space. */\n\n\n if (key) {\n assertUnfrozen('data', frozen);\n namespace = key;\n return processor;\n }\n /* Get space. */\n\n\n return namespace;\n }\n /* Plug-in management.\n *\n * Pass it:\n * * an attacher and options,\n * * a preset,\n * * a list of presets, attachers, and arguments (list\n * of attachers and options). */\n\n\n function use(value) {\n var settings;\n assertUnfrozen('use', frozen);\n\n if (value === null || value === undefined) {\n /* Empty */\n } else if (typeof value === 'function') {\n addPlugin.apply(null, arguments);\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addList(value);\n } else {\n addPreset(value);\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`');\n }\n\n if (settings) {\n namespace.settings = extend(namespace.settings || {}, settings);\n }\n\n return processor;\n\n function addPreset(result) {\n addList(result.plugins);\n\n if (result.settings) {\n settings = extend(settings || {}, result.settings);\n }\n }\n\n function add(value) {\n if (typeof value === 'function') {\n addPlugin(value);\n } else if (typeof value === 'object') {\n if ('length' in value) {\n addPlugin.apply(null, value);\n } else {\n addPreset(value);\n }\n } else {\n throw new Error('Expected usable value, not `' + value + '`');\n }\n }\n\n function addList(plugins) {\n var length;\n var index;\n\n if (plugins === null || plugins === undefined) {\n /* Empty */\n } else if (typeof plugins === 'object' && 'length' in plugins) {\n length = plugins.length;\n index = -1;\n\n while (++index < length) {\n add(plugins[index]);\n }\n } else {\n throw new Error('Expected a list of plugins, not `' + plugins + '`');\n }\n }\n\n function addPlugin(plugin, value) {\n var entry = find(plugin);\n\n if (entry) {\n if (plain(entry[1]) && plain(value)) {\n value = extend(entry[1], value);\n }\n\n entry[1] = value;\n } else {\n attachers.push(slice.call(arguments));\n }\n }\n }\n\n function find(plugin) {\n var length = attachers.length;\n var index = -1;\n var entry;\n\n while (++index < length) {\n entry = attachers[index];\n\n if (entry[0] === plugin) {\n return entry;\n }\n }\n }\n /* Parse a file (in string or VFile representation)\n * into a Unist node using the `Parser` on the\n * processor. */\n\n\n function parse(doc) {\n var file = vfile(doc);\n var Parser;\n freeze();\n Parser = processor.Parser;\n assertParser('parse', Parser);\n\n if (newable(Parser)) {\n return new Parser(String(file), file).parse();\n }\n\n return Parser(String(file), file); // eslint-disable-line new-cap\n }\n /* Run transforms on a Unist node representation of a file\n * (in string or VFile representation), async. */\n\n\n function run(node, file, cb) {\n assertNode(node);\n freeze();\n\n if (!cb && typeof file === 'function') {\n cb = file;\n file = null;\n }\n\n if (!cb) {\n return new Promise(executor);\n }\n\n executor(null, cb);\n\n function executor(resolve, reject) {\n transformers.run(node, vfile(file), done);\n\n function done(err, tree, file) {\n tree = tree || node;\n\n if (err) {\n reject(err);\n } else if (resolve) {\n resolve(tree);\n } else {\n cb(null, tree, file);\n }\n }\n }\n }\n /* Run transforms on a Unist node representation of a file\n * (in string or VFile representation), sync. */\n\n\n function runSync(node, file) {\n var complete = false;\n var result;\n run(node, file, done);\n assertDone('runSync', 'run', complete);\n return result;\n\n function done(err, tree) {\n complete = true;\n bail(err);\n result = tree;\n }\n }\n /* Stringify a Unist node representation of a file\n * (in string or VFile representation) into a string\n * using the `Compiler` on the processor. */\n\n\n function stringify(node, doc) {\n var file = vfile(doc);\n var Compiler;\n freeze();\n Compiler = processor.Compiler;\n assertCompiler('stringify', Compiler);\n assertNode(node);\n\n if (newable(Compiler)) {\n return new Compiler(node, file).compile();\n }\n\n return Compiler(node, file); // eslint-disable-line new-cap\n }\n /* Parse a file (in string or VFile representation)\n * into a Unist node using the `Parser` on the processor,\n * then run transforms on that node, and compile the\n * resulting node using the `Compiler` on the processor,\n * and store that result on the VFile. */\n\n\n function process(doc, cb) {\n freeze();\n assertParser('process', processor.Parser);\n assertCompiler('process', processor.Compiler);\n\n if (!cb) {\n return new Promise(executor);\n }\n\n executor(null, cb);\n\n function executor(resolve, reject) {\n var file = vfile(doc);\n pipeline.run(processor, {\n file: file\n }, done);\n\n function done(err) {\n if (err) {\n reject(err);\n } else if (resolve) {\n resolve(file);\n } else {\n cb(null, file);\n }\n }\n }\n }\n /* Process the given document (in string or VFile\n * representation), sync. */\n\n\n function processSync(doc) {\n var complete = false;\n var file;\n freeze();\n assertParser('processSync', processor.Parser);\n assertCompiler('processSync', processor.Compiler);\n file = vfile(doc);\n process(file, done);\n assertDone('processSync', 'process', complete);\n return file;\n\n function done(err) {\n complete = true;\n bail(err);\n }\n }\n}\n/* Check if `func` is a constructor. */\n\n\nfunction newable(value) {\n return typeof value === 'function' && keys(value.prototype);\n}\n/* Check if `value` is an object with keys. */\n\n\nfunction keys(value) {\n var key;\n\n for (key in value) {\n return true;\n }\n\n return false;\n}\n/* Assert a parser is available. */\n\n\nfunction assertParser(name, Parser) {\n if (typeof Parser !== 'function') {\n throw new Error('Cannot `' + name + '` without `Parser`');\n }\n}\n/* Assert a compiler is available. */\n\n\nfunction assertCompiler(name, Compiler) {\n if (typeof Compiler !== 'function') {\n throw new Error('Cannot `' + name + '` without `Compiler`');\n }\n}\n/* Assert the processor is not frozen. */\n\n\nfunction assertUnfrozen(name, frozen) {\n if (frozen) {\n throw new Error(['Cannot invoke `' + name + '` on a frozen processor.\\nCreate a new ', 'processor first, by invoking it: use `processor()` instead of ', '`processor`.'].join(''));\n }\n}\n/* Assert `node` is a Unist node. */\n\n\nfunction assertNode(node) {\n if (!node || !string(node.type)) {\n throw new Error('Expected node, got `' + node + '`');\n }\n}\n/* Assert that `complete` is `true`. */\n\n\nfunction assertDone(name, asyncName, complete) {\n if (!complete) {\n throw new Error('`' + name + '` finished async. Use `' + asyncName + '` instead');\n }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var link = value.indexOf('[', fromIndex);\n var image = value.indexOf('![', fromIndex);\n\n if (image === -1) {\n return link;\n }\n /* Link can never be `-1` if an image is found, so we don’t need\n * to check for that :) */\n\n\n return link < image ? link : image;\n}","/*!\n * repeat-string <https://github.com/jonschlinkert/repeat-string>\n *\n * Copyright (c) 2014-2015, Jon Schlinkert.\n * Licensed under the MIT License.\n */\n'use strict';\n/**\n * Results cache\n */\n\nvar res = '';\nvar cache;\n/**\n * Expose `repeat`\n */\n\nmodule.exports = repeat;\n/**\n * Repeat the given `string` the specified `number`\n * of times.\n *\n * **Example:**\n *\n * ```js\n * var repeat = require('repeat-string');\n * repeat('A', 5);\n * //=> AAAAA\n * ```\n *\n * @param {String} `string` The string to repeat\n * @param {Number} `number` The number of times to repeat the string\n * @return {String} Repeated string\n * @api public\n */\n\nfunction repeat(str, num) {\n if (typeof str !== 'string') {\n throw new TypeError('expected a string');\n } // cover common, quick use cases\n\n\n if (num === 1) return str;\n if (num === 2) return str + str;\n var max = str.length * num;\n\n if (cache !== str || typeof cache === 'undefined') {\n cache = str;\n res = '';\n } else if (res.length >= max) {\n return res.substr(0, max);\n }\n\n while (max > res.length && num > 1) {\n if (num & 1) {\n res += str;\n }\n\n num >>= 1;\n str += str;\n }\n\n res += str;\n res = res.substr(0, max);\n return res;\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar escapes = require('markdown-escapes');\n\nvar defaults = require('./defaults');\n\nmodule.exports = setOptions;\n\nfunction setOptions(options) {\n var self = this;\n var current = self.options;\n var key;\n var value;\n\n if (options == null) {\n options = {};\n } else if (typeof options === 'object') {\n options = xtend(options);\n } else {\n throw new Error('Invalid value `' + options + '` ' + 'for setting `options`');\n }\n\n for (key in defaults) {\n value = options[key];\n\n if (value == null) {\n value = current[key];\n }\n\n if (key !== 'blocks' && typeof value !== 'boolean' || key === 'blocks' && typeof value !== 'object') {\n throw new Error('Invalid value `' + value + '` for setting `options.' + key + '`');\n }\n\n options[key] = value;\n }\n\n self.options = options;\n self.escape = escapes(options);\n return self;\n}","'use strict';\n\nvar wrap = require('./wrap.js');\n\nmodule.exports = trough;\ntrough.wrap = wrap;\nvar slice = [].slice;\n/* Create new middleware. */\n\nfunction trough() {\n var fns = [];\n var middleware = {};\n middleware.run = run;\n middleware.use = use;\n return middleware;\n /* Run `fns`. Last argument must be\n * a completion handler. */\n\n function run() {\n var index = -1;\n var input = slice.call(arguments, 0, -1);\n var done = arguments[arguments.length - 1];\n\n if (typeof done !== 'function') {\n throw new Error('Expected function as last argument, not ' + done);\n }\n\n next.apply(null, [null].concat(input));\n /* Run the next `fn`, if any. */\n\n function next(err) {\n var fn = fns[++index];\n var params = slice.call(arguments, 0);\n var values = params.slice(1);\n var length = input.length;\n var pos = -1;\n\n if (err) {\n done(err);\n return;\n }\n /* Copy non-nully input into values. */\n\n\n while (++pos < length) {\n if (values[pos] === null || values[pos] === undefined) {\n values[pos] = input[pos];\n }\n }\n\n input = values;\n /* Next or done. */\n\n if (fn) {\n wrap(fn, next).apply(null, input);\n } else {\n done.apply(null, [null].concat(input));\n }\n }\n }\n /* Add `fn` to the list. */\n\n\n function use(fn) {\n if (typeof fn !== 'function') {\n throw new Error('Expected `fn` to be a function, not ' + fn);\n }\n\n fns.push(fn);\n return middleware;\n }\n}","module.exports = extend;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction extend() {\n var target = {};\n\n for (var i = 0; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n}","'use strict';\n\nvar xtend = require('xtend');\n\nvar entities = require('parse-entities');\n\nmodule.exports = factory;\n/* Factory to create an entity decoder. */\n\nfunction factory(ctx) {\n decoder.raw = decodeRaw;\n return decoder;\n /* Normalize `position` to add an `indent`. */\n\n function normalize(position) {\n var offsets = ctx.offset;\n var line = position.line;\n var result = [];\n\n while (++line) {\n if (!(line in offsets)) {\n break;\n }\n\n result.push((offsets[line] || 0) + 1);\n }\n\n return {\n start: position,\n indent: result\n };\n }\n /* Handle a warning.\n * See https://github.com/wooorm/parse-entities\n * for the warnings. */\n\n\n function handleWarning(reason, position, code) {\n if (code === 3) {\n return;\n }\n\n ctx.file.message(reason, position);\n }\n /* Decode `value` (at `position`) into text-nodes. */\n\n\n function decoder(value, position, handler) {\n entities(value, {\n position: normalize(position),\n warning: handleWarning,\n text: handler,\n reference: handler,\n textContext: ctx,\n referenceContext: ctx\n });\n }\n /* Decode `value` (at `position`) into a string. */\n\n\n function decodeRaw(value, position, options) {\n return entities(value, xtend(options, {\n position: normalize(position),\n warning: handleWarning\n }));\n }\n}","/* @jsx jsx */\nimport { jsx, Flex } from \"strict-ui\"\nimport { PageProps } from \"gatsby\"\nimport { useQuery } from \"urql\"\nimport { Spinner } from \"theme-ui\"\nimport { Global } from \"@emotion/react\"\nimport { useMutation } from \"urql\"\nimport { useState, Fragment, useEffect } from \"react\"\nimport {\n AnchorButton,\n Button,\n TextAreaField,\n TextAreaFieldControl,\n Text,\n Heading,\n Spacer,\n} from \"gatsby-interface\"\nimport { navigate } from \"gatsby-link\"\nimport { FaUsers as CommunityIcon } from \"react-icons/fa\"\nimport { MdArrowDownward as ArrowDownwardIcon } from \"react-icons/md\"\nimport ReactMarkdown from \"react-markdown\"\nimport Highlight, { defaultProps } from \"prism-react-renderer\"\nimport useNpmPackageData from \"../utils/use-npm-data\"\nimport prismThemeCss from \"../prism-theme\"\nimport gitHubIcon from \"../github.svg\"\nimport isOfficialPackage from \"../utils/is-official-package\"\nimport GatsbyIcon from \"../components/gatsby-monogram\"\nimport { useTelemetry } from \"../utils/use-telemetry\"\n\nconst markdownRenderers = {\n paragraph: (props: any): JSX.Element => (\n <Text as=\"p\" {...props} sx={{ color: `text.primary` }} />\n ),\n heading: (props: any): JSX.Element => (\n <Heading as={`h${props.level}`} {...props} />\n ),\n inlineCode: (props: any): JSX.Element => (\n <Text\n // @ts-ignore\n as=\"code\"\n sx={{\n fontFamily: `monospace`,\n }}\n {...props}\n />\n ),\n code: (props: any): JSX.Element => (\n <Highlight\n {...defaultProps}\n // The theme is provided via CSS, not prism-react-renderer's custom theming system\n theme={undefined}\n code={props.value}\n language={props.language}\n >\n {({\n className,\n style,\n tokens,\n getLineProps,\n getTokenProps,\n }): JSX.Element => (\n <Text\n // @ts-ignore\n as=\"pre\"\n sx={{\n fontFamily: `monospace`,\n fontSize: 0,\n }}\n className={className}\n style={style}\n >\n {tokens.map((line, i) => (\n <div {...getLineProps({ line, key: i })}>\n {line.map((token, key) => (\n <span {...getTokenProps({ token, key })} />\n ))}\n </div>\n ))}\n </Text>\n )}\n </Highlight>\n ),\n}\n\nexport default function PluginView(\n props: PageProps & {\n // This is the subpath, gatsby-plugin-create-client-paths is configured to match /plugins/*\n \"*\": string\n }\n): JSX.Element {\n const pluginName = props[`*`]\n\n const [{ data, fetching, error }] = useQuery({\n query: `\n query GetGatsbyPlugin($id: String!) {\n gatsbyPlugin(id: $id) {\n name\n description\n options\n }\n }\n `,\n variables: {\n id: pluginName,\n },\n })\n\n const { fetching: fetchingNpmData, data: npmData } = useNpmPackageData(\n pluginName\n )\n\n const [{ fetching: updatingGatsbyPlugin }, updateGatsbyPlugin] = useMutation(`\n mutation updateGatsbyPlugin(\n $name: String!\n $options: JSONObject) {\n updateGatsbyPlugin(gatsbyPlugin: {\n name: $name,\n id: $name,\n options: $options\n }) {\n id\n name\n options\n }\n }\n `)\n\n const [{ fetching: deletingGatsbyPlugin }, deleteGatsbyPlugin] = useMutation(`\n mutation destroyGatsbyPlugin($name: String!) {\n destroyNpmPackage(npmPackage: {\n name: $name,\n id: $name,\n dependencyType: \"production\"\n }) {\n id\n name\n }\n destroyGatsbyPlugin(gatsbyPlugin: {\n name: $name,\n id: $name\n }) {\n id\n name\n }\n }\n `)\n\n const [\n { fetching: installingGatsbyPlugin },\n installGatsbyPlugin,\n ] = useMutation(`\n mutation installGatsbyPlugin($name: String!) {\n createNpmPackage(npmPackage: {\n name: $name,\n dependencyType: \"production\"\n }) {\n id\n name\n }\n\n createGatsbyPlugin(gatsbyPlugin: {\n name: $name\n }) {\n id\n name\n description\n options\n readme\n }\n }\n `)\n\n const [options, setOptions] = useState<string | null>(null)\n const [validationError, setValidationError] = useState<Error | null>(null)\n const isInstalled = !fetching && !!data?.gatsbyPlugin?.name\n const isOfficial = !fetchingNpmData && npmData && isOfficialPackage(npmData)\n\n useEffect(() => {\n if (fetching) return\n\n setOptions(\n JSON.stringify(data?.gatsbyPlugin?.options || {}, null, 2).replace(\n `{}`,\n `{\\n \\n}`\n )\n )\n }, [fetching])\n\n const telemetry = useTelemetry()\n\n if (error) {\n const errMsg =\n (error.networkError && error.networkError.message) ||\n (Array.isArray(error.graphQLErrors) &&\n error.graphQLErrors.map(e => e.message).join(` | `))\n\n return <p>Error: {errMsg}</p>\n }\n\n return (\n <Fragment>\n <Spacer size={15} />\n <Global styles={prismThemeCss} />\n <Flex gap={9} flexDirection=\"column\" alignItems=\"flex-start\">\n <Flex flexDirection=\"column\" gap={2} sx={{ width: `100%` }}>\n <Flex gap={5}>\n <Text\n sx={{ color: `grey.60`, fontSize: 1, whiteSpace: `pre-wrap` }}\n >\n {fetchingNpmData ? (\n ``\n ) : isOfficial ? (\n <span>\n <GatsbyIcon /> Official\n </span>\n ) : (\n <span>\n <CommunityIcon /> Community\n </span>\n )}\n {` `}\n Gatsby plugin\n </Text>\n {}\n <Text\n sx={{ color: `grey.60`, fontSize: 1, whiteSpace: `pre-wrap` }}\n >\n <ArrowDownwardIcon /> {npmData?.humanDownloadsLast30Days || `...`}\n {` `}\n downloads\n </Text>\n </Flex>\n <Flex\n sx={{ width: `100%` }}\n justifyContent=\"space-between\"\n alignItems=\"center\"\n >\n <Heading as=\"h1\">{pluginName}</Heading>\n <Flex gap={3}>\n <AnchorButton\n variant=\"SECONDARY\"\n size=\"M\"\n target=\"_blank\"\n // Fall back to https://github.com/nice-registry/ghub.io, which redirects to the\n // package.json repository url automatically\n href={\n npmData?.repository?.url || `https://ghub.io/${pluginName}`\n }\n sx={{\n // Render the space between the text and the <img> icon\n whiteSpace: `pre`,\n }}\n >\n View on GitHub <img src={gitHubIcon} alt=\"\" />\n </AnchorButton>\n {fetching ? (\n <Spinner />\n ) : isInstalled ? (\n <Button\n variant=\"GHOST\"\n tone=\"DANGER\"\n size=\"M\"\n loading={deletingGatsbyPlugin}\n onClick={(evt): void => {\n evt.preventDefault()\n if (\n window.confirm(\n `Are you sure you want to uninstall ${pluginName}?`\n )\n ) {\n telemetry.trackEvent(`PLUGIN_UNINSTALL`, {\n pluginName,\n })\n deleteGatsbyPlugin({ name: pluginName }).then(() =>\n navigate(`/`)\n )\n }\n }}\n >\n Uninstall\n </Button>\n ) : (\n <Button\n size=\"M\"\n loading={installingGatsbyPlugin}\n onClick={(evt): void => {\n evt.preventDefault()\n installGatsbyPlugin({ name: pluginName })\n telemetry.trackEvent(`PLUGIN_INSTALL`, {\n pluginName,\n })\n }}\n >\n Install\n </Button>\n )}\n </Flex>\n </Flex>\n </Flex>\n <Flex gap={12} sx={{ width: `100%` }} alignItems=\"flex-start\">\n <div sx={{ width: `70%` }}>\n {fetchingNpmData ? (\n <Spinner />\n ) : npmData?.readme ? (\n <Flex gap={5} flexDirection=\"column\">\n <ReactMarkdown\n renderers={markdownRenderers}\n source={npmData.readme.replace(\n // Remove the first heading with the plugin name since we render that manually\n new RegExp(`(?:#+|^)\\\\s*${pluginName}$`, `m`),\n ``\n )}\n />\n </Flex>\n ) : (\n `No readme found.`\n )}\n </div>\n <Flex\n as=\"form\"\n // @ts-ignore\n onSubmit={(evt: React.FormEvent): void => {\n evt.preventDefault()\n setValidationError(null)\n let json\n try {\n // NOTE(@mxstbr): I use eval() to support JS object notation (`{ bla: true }`) and\n // not just strict JSON (`{ \"bla\": true }`)\n const js = eval(`(${options})`)\n // Validate that options isn't any JavaScript but an object\n json = JSON.parse(JSON.stringify(js))\n } catch (err) {\n setValidationError(err)\n return\n }\n telemetry.trackEvent(`PLUGIN_CONFIGURE`, {\n pluginName,\n })\n updateGatsbyPlugin({\n name: props[`*`],\n options: json,\n }).catch(err => {\n setValidationError(err)\n })\n }}\n gap={5}\n alignItems=\"flex-start\"\n flexDirection=\"column\"\n sx={{\n borderRadius: 3,\n backgroundColor: `white`,\n borderColor: `grey.30`,\n borderWidth: 1,\n borderStyle: `solid`,\n padding: 7,\n width: `30%`,\n }}\n >\n <TextAreaField id=\"plugin-options\">\n <Flex sx={{ width: `100%` }} gap={3} flexDirection=\"column\">\n <Flex sx={{ width: `100%` }} gap={5} flexDirection=\"column\">\n <Flex gap={2} flexDirection=\"column\">\n <Heading as=\"h3\" sx={{ fontSize: 2 }}>\n Configuration options\n </Heading>\n <Text sx={{ color: `grey.60`, fontSize: 1 }}>\n After installing this plugin, you can configure it here.\n Changes made here are applied to the gatsby-config.js\n file.\n </Text>\n </Flex>\n {options === null ? (\n <Spinner />\n ) : (\n <TextAreaFieldControl\n sx={{\n fontFamily: `monospace`,\n backgroundColor: `grey.70`,\n color: `white`,\n p: 5,\n borderRadius: 3,\n minHeight: `10em`,\n ...(validationError !== null\n ? {\n borderWidth: 1,\n borderStyle: `solid`,\n borderColor: `red.40`,\n }\n : {}),\n }}\n value={options}\n onChange={(evt): void => setOptions(evt.target.value)}\n />\n )}\n </Flex>\n {validationError !== null && (\n <Text sx={{ color: `red.60`, fontSize: 0 }}>\n Invalid JSON: {validationError.message}\n </Text>\n )}\n </Flex>\n </TextAreaField>\n <Flex alignItems=\"center\" gap={3}>\n <Button\n variant=\"PRIMARY\"\n tone=\"BRAND\"\n type=\"submit\"\n size=\"M\"\n loading={updatingGatsbyPlugin}\n disabled={!isInstalled}\n >\n Save\n </Button>\n {!isInstalled && (\n <Text sx={{ fontSize: 0, color: `grey.50` }}>\n Install this plugin in order to save\n </Text>\n )}\n </Flex>\n </Flex>\n </Flex>\n </Flex>\n </Fragment>\n )\n}\n","'use strict';\n\nvar locate = require('../locate/break');\n\nmodule.exports = hardBreak;\nhardBreak.locator = locate;\nvar MIN_BREAK_LENGTH = 2;\n\nfunction hardBreak(eat, value, silent) {\n var length = value.length;\n var index = -1;\n var queue = '';\n var character;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === '\\n') {\n if (index < MIN_BREAK_LENGTH) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n queue += character;\n return eat(queue)({\n type: 'break'\n });\n }\n\n if (character !== ' ') {\n return;\n }\n\n queue += character;\n }\n}","'use strict';\n\nvar toString = Object.prototype.toString;\n\nmodule.exports = function (x) {\n var prototype;\n return toString.call(x) === '[object Object]' && (prototype = Object.getPrototypeOf(x), prototype === null || prototype === Object.getPrototypeOf({}));\n};","'use strict';\n\nmodule.exports = alphabetical; // Check if the given character code, or the character code at the first\n// character, is alphabetical.\n\nfunction alphabetical(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n return code >= 97 && code <= 122 ||\n /* a-z */\n code >= 65 && code <= 90\n /* A-Z */\n ;\n}","/*!\n * Determine if an object is a Buffer\n *\n * @author Feross Aboukhadijeh <https://feross.org>\n * @license MIT\n */\n// The _isBuffer check is for Safari 5-7 support, because it's missing\n// Object.prototype.constructor. Remove this eventually\nmodule.exports = function (obj) {\n return obj != null && (isBuffer(obj) || isSlowBuffer(obj) || !!obj._isBuffer);\n};\n\nfunction isBuffer(obj) {\n return !!obj.constructor && typeof obj.constructor.isBuffer === 'function' && obj.constructor.isBuffer(obj);\n} // For Node v0.10 support. Remove this eventually.\n\n\nfunction isSlowBuffer(obj) {\n return typeof obj.readFloatLE === 'function' && typeof obj.slice === 'function' && isBuffer(obj.slice(0, 0));\n}","'use strict';\n\nmodule.exports = visit;\n\nvar visitParents = require('unist-util-visit-parents');\n\nvar CONTINUE = visitParents.CONTINUE;\nvar SKIP = visitParents.SKIP;\nvar EXIT = visitParents.EXIT;\nvisit.CONTINUE = CONTINUE;\nvisit.SKIP = SKIP;\nvisit.EXIT = EXIT;\n\nfunction visit(tree, test, visitor, reverse) {\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n\n visitParents(tree, test, overload, reverse);\n\n function overload(node, parents) {\n var parent = parents[parents.length - 1];\n var index = parent ? parent.children.indexOf(node) : null;\n return visitor(node, index, parent);\n }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var asterisk = value.indexOf('*', fromIndex);\n var underscore = value.indexOf('_', fromIndex);\n\n if (underscore === -1) {\n return asterisk;\n }\n\n if (asterisk === -1) {\n return underscore;\n }\n\n return underscore < asterisk ? underscore : asterisk;\n}","module.exports = createAnalyticsClient;\n\nvar algoliasearch = require('../index.js');\n\nfunction createAnalyticsClient(appId, apiKey, opts) {\n var analytics = {};\n opts = opts || {}; // there need to be 4 hosts, like on the client, since if requests fail,\n // the counter goes up by 1, so we need to have the same amount of hosts\n // 4 because: -dsn, -1, -2, -3\n // This is done because the APPID used for search will be the same for the analytics client created,\n // and since the state of available hosts is shared by APPID globally for the module, we had issues\n // where the hostIndex would be 1 while the array was only one entry (you got an empty host)\n\n opts.hosts = opts.hosts || ['analytics.algolia.com', 'analytics.algolia.com', 'analytics.algolia.com', 'analytics.algolia.com'];\n opts.protocol = opts.protocol || 'https:';\n analytics.as = algoliasearch(appId, apiKey, opts);\n\n analytics.getABTests = function (_params, callback) {\n var params = params || {};\n var offset = params.offset || 0;\n var limit = params.limit || 10;\n return this.as._jsonRequest({\n method: 'GET',\n url: '/2/abtests?offset=' + encodeURIComponent(offset) + '&limit=' + encodeURIComponent(limit),\n hostType: 'read',\n forceAuthHeaders: true,\n callback: callback\n });\n };\n\n analytics.getABTest = function (abTestID, callback) {\n return this.as._jsonRequest({\n method: 'GET',\n url: '/2/abtests/' + encodeURIComponent(abTestID),\n hostType: 'read',\n forceAuthHeaders: true,\n callback: callback\n });\n };\n\n analytics.addABTest = function (abTest, callback) {\n return this.as._jsonRequest({\n method: 'POST',\n url: '/2/abtests',\n body: abTest,\n hostType: 'read',\n forceAuthHeaders: true,\n callback: callback\n });\n };\n\n analytics.stopABTest = function (abTestID, callback) {\n return this.as._jsonRequest({\n method: 'POST',\n url: '/2/abtests/' + encodeURIComponent(abTestID) + '/stop',\n hostType: 'read',\n forceAuthHeaders: true,\n callback: callback\n });\n };\n\n analytics.deleteABTest = function (abTestID, callback) {\n return this.as._jsonRequest({\n method: 'DELETE',\n url: '/2/abtests/' + encodeURIComponent(abTestID),\n hostType: 'write',\n forceAuthHeaders: true,\n callback: callback\n });\n };\n\n analytics.waitTask = function (indexName, taskID, callback) {\n return this.as.initIndex(indexName).waitTask(taskID, callback);\n };\n\n return analytics;\n}","'use strict';\n\nmodule.exports = decimal; // Check if the given character code, or the character code at the first\n// character, is decimal.\n\nfunction decimal(character) {\n var code = typeof character === 'string' ? character.charCodeAt(0) : character;\n return code >= 48 && code <= 57;\n /* 0-9 */\n}","var visitWithParents = require('unist-util-visit-parents');\n\nfunction addListMetadata() {\n return function (ast) {\n visitWithParents(ast, 'list', function (listNode, parents) {\n var depth = 0,\n i,\n n;\n\n for (i = 0, n = parents.length; i < n; i++) {\n if (parents[i].type === 'list') depth += 1;\n }\n\n for (i = 0, n = listNode.children.length; i < n; i++) {\n var child = listNode.children[i];\n child.index = i;\n child.ordered = listNode.ordered;\n }\n\n listNode.depth = depth;\n });\n return ast;\n };\n}\n\nmodule.exports = addListMetadata;","'use strict';\n\nmodule.exports = locate;\nvar PROTOCOLS = ['https://', 'http://', 'mailto:'];\n\nfunction locate(value, fromIndex) {\n var length = PROTOCOLS.length;\n var index = -1;\n var min = -1;\n var position;\n\n if (!this.options.gfm) {\n return -1;\n }\n\n while (++index < length) {\n position = value.indexOf(PROTOCOLS[index], fromIndex);\n\n if (position !== -1 && (position < min || min === -1)) {\n min = position;\n }\n }\n\n return min;\n}","'use strict';\n\nvar path = require('path');\n\nfunction replaceExt(npath, ext) {\n if (typeof npath !== 'string') {\n return npath;\n }\n\n if (npath.length === 0) {\n return npath;\n }\n\n var nFileName = path.basename(npath, path.extname(npath)) + ext;\n return path.join(path.dirname(npath), nFileName);\n}\n\nmodule.exports = replaceExt;","\"use strict\";\n\nvar HtmlParser = '__RMD_HTML_PARSER__';\nexports.HtmlParser = typeof Symbol === 'undefined' ? HtmlParser : Symbol(HtmlParser);","'use strict';\n\nvar locate = require('../locate/escape');\n\nmodule.exports = escape;\nescape.locator = locate;\n\nfunction escape(eat, value, silent) {\n var self = this;\n var character;\n var node;\n\n if (value.charAt(0) === '\\\\') {\n character = value.charAt(1);\n\n if (self.escape.indexOf(character) !== -1) {\n /* istanbul ignore if - never used (yet) */\n if (silent) {\n return true;\n }\n\n if (character === '\\n') {\n node = {\n type: 'break'\n };\n } else {\n node = {\n type: 'text',\n value: character\n };\n }\n\n return eat('\\\\' + character)(node);\n }\n }\n}","'use strict';\n\nvar characterEntities = require('character-entities');\n\nvar legacy = require('character-entities-legacy');\n\nvar invalid = require('character-reference-invalid');\n\nvar decimal = require('is-decimal');\n\nvar hexadecimal = require('is-hexadecimal');\n\nvar alphanumerical = require('is-alphanumerical');\n\nmodule.exports = parseEntities;\nvar own = {}.hasOwnProperty;\nvar fromCharCode = String.fromCharCode;\nvar noop = Function.prototype;\n/* Default settings. */\n\nvar defaults = {\n warning: null,\n reference: null,\n text: null,\n warningContext: null,\n referenceContext: null,\n textContext: null,\n position: {},\n additional: null,\n attribute: false,\n nonTerminated: true\n};\n/* Reference types. */\n\nvar NAMED = 'named';\nvar HEXADECIMAL = 'hexadecimal';\nvar DECIMAL = 'decimal';\n/* Map of bases. */\n\nvar BASE = {};\nBASE[HEXADECIMAL] = 16;\nBASE[DECIMAL] = 10;\n/* Map of types to tests. Each type of character reference\n * accepts different characters. This test is used to\n * detect whether a reference has ended (as the semicolon\n * is not strictly needed). */\n\nvar TESTS = {};\nTESTS[NAMED] = alphanumerical;\nTESTS[DECIMAL] = decimal;\nTESTS[HEXADECIMAL] = hexadecimal;\n/* Warning messages. */\n\nvar NAMED_NOT_TERMINATED = 1;\nvar NUMERIC_NOT_TERMINATED = 2;\nvar NAMED_EMPTY = 3;\nvar NUMERIC_EMPTY = 4;\nvar NAMED_UNKNOWN = 5;\nvar NUMERIC_DISALLOWED = 6;\nvar NUMERIC_PROHIBITED = 7;\nvar MESSAGES = {};\nMESSAGES[NAMED_NOT_TERMINATED] = 'Named character references must be terminated by a semicolon';\nMESSAGES[NUMERIC_NOT_TERMINATED] = 'Numeric character references must be terminated by a semicolon';\nMESSAGES[NAMED_EMPTY] = 'Named character references cannot be empty';\nMESSAGES[NUMERIC_EMPTY] = 'Numeric character references cannot be empty';\nMESSAGES[NAMED_UNKNOWN] = 'Named character references must be known';\nMESSAGES[NUMERIC_DISALLOWED] = 'Numeric character references cannot be disallowed';\nMESSAGES[NUMERIC_PROHIBITED] = 'Numeric character references cannot be outside the permissible Unicode range';\n/* Wrap to ensure clean parameters are given to `parse`. */\n\nfunction parseEntities(value, options) {\n var settings = {};\n var option;\n var key;\n\n if (!options) {\n options = {};\n }\n\n for (key in defaults) {\n option = options[key];\n settings[key] = option === null || option === undefined ? defaults[key] : option;\n }\n\n if (settings.position.indent || settings.position.start) {\n settings.indent = settings.position.indent || [];\n settings.position = settings.position.start;\n }\n\n return parse(value, settings);\n}\n/* Parse entities. */\n\n\nfunction parse(value, settings) {\n var additional = settings.additional;\n var nonTerminated = settings.nonTerminated;\n var handleText = settings.text;\n var handleReference = settings.reference;\n var handleWarning = settings.warning;\n var textContext = settings.textContext;\n var referenceContext = settings.referenceContext;\n var warningContext = settings.warningContext;\n var pos = settings.position;\n var indent = settings.indent || [];\n var length = value.length;\n var index = 0;\n var lines = -1;\n var column = pos.column || 1;\n var line = pos.line || 1;\n var queue = '';\n var result = [];\n var entityCharacters;\n var terminated;\n var characters;\n var character;\n var reference;\n var following;\n var warning;\n var reason;\n var output;\n var entity;\n var begin;\n var start;\n var type;\n var test;\n var prev;\n var next;\n var diff;\n var end;\n /* Cache the current point. */\n\n prev = now();\n /* Wrap `handleWarning`. */\n\n warning = handleWarning ? parseError : noop;\n /* Ensure the algorithm walks over the first character\n * and the end (inclusive). */\n\n index--;\n length++;\n\n while (++index < length) {\n /* If the previous character was a newline. */\n if (character === '\\n') {\n column = indent[lines] || 1;\n }\n\n character = at(index);\n /* Handle anything other than an ampersand,\n * including newlines and EOF. */\n\n if (character !== '&') {\n if (character === '\\n') {\n line++;\n lines++;\n column = 0;\n }\n\n if (character) {\n queue += character;\n column++;\n } else {\n flush();\n }\n } else {\n following = at(index + 1);\n /* The behaviour depends on the identity of the next\n * character. */\n\n if (following === '\\t'\n /* Tab */\n || following === '\\n'\n /* Newline */\n || following === '\\f'\n /* Form feed */\n || following === ' '\n /* Space */\n || following === '<'\n /* Less-than */\n || following === '&'\n /* Ampersand */\n || following === '' || additional && following === additional) {\n /* Not a character reference. No characters\n * are consumed, and nothing is returned.\n * This is not an error, either. */\n queue += character;\n column++;\n continue;\n }\n\n start = index + 1;\n begin = start;\n end = start;\n /* Numerical entity. */\n\n if (following !== '#') {\n type = NAMED;\n } else {\n end = ++begin;\n /* The behaviour further depends on the\n * character after the U+0023 NUMBER SIGN. */\n\n following = at(end);\n\n if (following === 'x' || following === 'X') {\n /* ASCII hex digits. */\n type = HEXADECIMAL;\n end = ++begin;\n } else {\n /* ASCII digits. */\n type = DECIMAL;\n }\n }\n\n entityCharacters = '';\n entity = '';\n characters = '';\n test = TESTS[type];\n end--;\n\n while (++end < length) {\n following = at(end);\n\n if (!test(following)) {\n break;\n }\n\n characters += following;\n /* Check if we can match a legacy named\n * reference. If so, we cache that as the\n * last viable named reference. This\n * ensures we do not need to walk backwards\n * later. */\n\n if (type === NAMED && own.call(legacy, characters)) {\n entityCharacters = characters;\n entity = legacy[characters];\n }\n }\n\n terminated = at(end) === ';';\n\n if (terminated) {\n end++;\n\n if (type === NAMED && own.call(characterEntities, characters)) {\n entityCharacters = characters;\n entity = characterEntities[characters];\n }\n }\n\n diff = 1 + end - start;\n\n if (!terminated && !nonTerminated) {\n /* Empty. */\n } else if (!characters) {\n /* An empty (possible) entity is valid, unless\n * its numeric (thus an ampersand followed by\n * an octothorp). */\n if (type !== NAMED) {\n warning(NUMERIC_EMPTY, diff);\n }\n } else if (type === NAMED) {\n /* An ampersand followed by anything\n * unknown, and not terminated, is invalid. */\n if (terminated && !entity) {\n warning(NAMED_UNKNOWN, 1);\n } else {\n /* If theres something after an entity\n * name which is not known, cap the\n * reference. */\n if (entityCharacters !== characters) {\n end = begin + entityCharacters.length;\n diff = 1 + end - begin;\n terminated = false;\n }\n /* If the reference is not terminated,\n * warn. */\n\n\n if (!terminated) {\n reason = entityCharacters ? NAMED_NOT_TERMINATED : NAMED_EMPTY;\n\n if (!settings.attribute) {\n warning(reason, diff);\n } else {\n following = at(end);\n\n if (following === '=') {\n warning(reason, diff);\n entity = null;\n } else if (alphanumerical(following)) {\n entity = null;\n } else {\n warning(reason, diff);\n }\n }\n }\n }\n\n reference = entity;\n } else {\n if (!terminated) {\n /* All non-terminated numeric entities are\n * not rendered, and trigger a warning. */\n warning(NUMERIC_NOT_TERMINATED, diff);\n }\n /* When terminated and number, parse as\n * either hexadecimal or decimal. */\n\n\n reference = parseInt(characters, BASE[type]);\n /* Trigger a warning when the parsed number\n * is prohibited, and replace with\n * replacement character. */\n\n if (prohibited(reference)) {\n warning(NUMERIC_PROHIBITED, diff);\n reference = \"\\uFFFD\";\n } else if (reference in invalid) {\n /* Trigger a warning when the parsed number\n * is disallowed, and replace by an\n * alternative. */\n warning(NUMERIC_DISALLOWED, diff);\n reference = invalid[reference];\n } else {\n /* Parse the number. */\n output = '';\n /* Trigger a warning when the parsed\n * number should not be used. */\n\n if (disallowed(reference)) {\n warning(NUMERIC_DISALLOWED, diff);\n }\n /* Stringify the number. */\n\n\n if (reference > 0xffff) {\n reference -= 0x10000;\n output += fromCharCode(reference >>> (10 & 0x3ff) | 0xd800);\n reference = 0xdc00 | reference & 0x3ff;\n }\n\n reference = output + fromCharCode(reference);\n }\n }\n /* If we could not find a reference, queue the\n * checked characters (as normal characters),\n * and move the pointer to their end. This is\n * possible because we can be certain neither\n * newlines nor ampersands are included. */\n\n\n if (!reference) {\n characters = value.slice(start - 1, end);\n queue += characters;\n column += characters.length;\n index = end - 1;\n } else {\n /* Found it! First eat the queued\n * characters as normal text, then eat\n * an entity. */\n flush();\n prev = now();\n index = end - 1;\n column += end - start + 1;\n result.push(reference);\n next = now();\n next.offset++;\n\n if (handleReference) {\n handleReference.call(referenceContext, reference, {\n start: prev,\n end: next\n }, value.slice(start - 1, end));\n }\n\n prev = next;\n }\n }\n }\n /* Return the reduced nodes, and any possible warnings. */\n\n\n return result.join('');\n /* Get current position. */\n\n function now() {\n return {\n line: line,\n column: column,\n offset: index + (pos.offset || 0)\n };\n }\n /* “Throw” a parse-error: a warning. */\n\n\n function parseError(code, offset) {\n var position = now();\n position.column += offset;\n position.offset += offset;\n handleWarning.call(warningContext, MESSAGES[code], position, code);\n }\n /* Get character at position. */\n\n\n function at(position) {\n return value.charAt(position);\n }\n /* Flush `queue` (normal text). Macro invoked before\n * each entity and at the end of `value`.\n * Does nothing when `queue` is empty. */\n\n\n function flush() {\n if (queue) {\n result.push(queue);\n\n if (handleText) {\n handleText.call(textContext, queue, {\n start: prev,\n end: now()\n });\n }\n\n queue = '';\n }\n }\n}\n/* Check if `character` is outside the permissible unicode range. */\n\n\nfunction prohibited(code) {\n return code >= 0xd800 && code <= 0xdfff || code > 0x10ffff;\n}\n/* Check if `character` is disallowed. */\n\n\nfunction disallowed(code) {\n return code >= 0x0001 && code <= 0x0008 || code === 0x000b || code >= 0x000d && code <= 0x001f || code >= 0x007f && code <= 0x009f || code >= 0xfdd0 && code <= 0xfdef || (code & 0xffff) === 0xffff || (code & 0xffff) === 0xfffe;\n}","'use strict';\n\nvar visit = require('unist-util-visit');\n\nmodule.exports = function (node) {\n visit(node, 'table', wrap);\n return node;\n};\n\nfunction wrap(table) {\n var children = table.children;\n table.children = [{\n type: 'tableHead',\n align: table.align,\n children: [children[0]],\n position: children[0].position\n }];\n\n if (children.length > 1) {\n table.children.push({\n type: 'tableBody',\n align: table.align,\n children: children.slice(1),\n position: {\n start: children[1].position.start,\n end: children[children.length - 1].position.end\n }\n });\n }\n}","'use strict';\n\nmodule.exports = setextHeading;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_EQUALS = '=';\nvar C_DASH = '-';\nvar MAX_HEADING_INDENT = 3;\n/* Map of characters which can be used to mark setext\n * headers, mapping to their corresponding depth. */\n\nvar SETEXT_MARKERS = {};\nSETEXT_MARKERS[C_EQUALS] = 1;\nSETEXT_MARKERS[C_DASH] = 2;\n\nfunction setextHeading(eat, value, silent) {\n var self = this;\n var now = eat.now();\n var length = value.length;\n var index = -1;\n var subvalue = '';\n var content;\n var queue;\n var character;\n var marker;\n var depth;\n /* Eat initial indentation. */\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE || index >= MAX_HEADING_INDENT) {\n index--;\n break;\n }\n\n subvalue += character;\n }\n /* Eat content. */\n\n\n content = '';\n queue = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === C_NEWLINE) {\n index--;\n break;\n }\n\n if (character === C_SPACE || character === C_TAB) {\n queue += character;\n } else {\n content += queue + character;\n queue = '';\n }\n }\n\n now.column += subvalue.length;\n now.offset += subvalue.length;\n subvalue += content + queue;\n /* Ensure the content is followed by a newline and a\n * valid marker. */\n\n character = value.charAt(++index);\n marker = value.charAt(++index);\n\n if (character !== C_NEWLINE || !SETEXT_MARKERS[marker]) {\n return;\n }\n\n subvalue += character;\n /* Eat Setext-line. */\n\n queue = marker;\n depth = SETEXT_MARKERS[marker];\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== marker) {\n if (character !== C_NEWLINE) {\n return;\n }\n\n index--;\n break;\n }\n\n queue += character;\n }\n\n if (silent) {\n return true;\n }\n\n return eat(subvalue + queue)({\n type: 'heading',\n depth: depth,\n children: self.tokenizeInline(content, now)\n });\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('~~', fromIndex);\n}","'use strict';\n\nvar stringify = require('unist-util-stringify-position');\n\nmodule.exports = VMessage;\n/* Inherit from `Error#`. */\n\nfunction VMessagePrototype() {}\n\nVMessagePrototype.prototype = Error.prototype;\nVMessage.prototype = new VMessagePrototype();\n/* Message properties. */\n\nvar proto = VMessage.prototype;\nproto.file = '';\nproto.name = '';\nproto.reason = '';\nproto.message = '';\nproto.stack = '';\nproto.fatal = null;\nproto.column = null;\nproto.line = null;\n/* Construct a new VMessage.\n *\n * Note: We cannot invoke `Error` on the created context,\n * as that adds readonly `line` and `column` attributes on\n * Safari 9, thus throwing and failing the data. */\n\nfunction VMessage(reason, position, origin) {\n var parts;\n var range;\n var location;\n\n if (typeof position === 'string') {\n origin = position;\n position = null;\n }\n\n parts = parseOrigin(origin);\n range = stringify(position) || '1:1';\n location = {\n start: {\n line: null,\n column: null\n },\n end: {\n line: null,\n column: null\n }\n };\n /* Node. */\n\n if (position && position.position) {\n position = position.position;\n }\n\n if (position) {\n /* Position. */\n if (position.start) {\n location = position;\n position = position.start;\n } else {\n /* Point. */\n location.start = position;\n }\n }\n\n if (reason.stack) {\n this.stack = reason.stack;\n reason = reason.message;\n }\n\n this.message = reason;\n this.name = range;\n this.reason = reason;\n this.line = position ? position.line : null;\n this.column = position ? position.column : null;\n this.location = location;\n this.source = parts[0];\n this.ruleId = parts[1];\n}\n\nfunction parseOrigin(origin) {\n var result = [null, null];\n var index;\n\n if (typeof origin === 'string') {\n index = origin.indexOf(':');\n\n if (index === -1) {\n result[1] = origin;\n } else {\n result[0] = origin.slice(0, index);\n result[1] = origin.slice(index + 1);\n }\n }\n\n return result;\n}","'use strict';\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance\");\n}\n\nfunction _iterableToArray(iter) {\n if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === \"[object Arguments]\") return Array.from(iter);\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n }\n}\n\nvar xtend = require('xtend');\n\nvar unified = require('unified');\n\nvar parse = require('remark-parse');\n\nvar PropTypes = require('prop-types');\n\nvar addListMetadata = require('mdast-add-list-metadata');\n\nvar naiveHtml = require('./plugins/naive-html');\n\nvar disallowNode = require('./plugins/disallow-node');\n\nvar astToReact = require('./ast-to-react');\n\nvar wrapTableRows = require('./wrap-table-rows');\n\nvar getDefinitions = require('./get-definitions');\n\nvar uriTransformer = require('./uri-transformer');\n\nvar defaultRenderers = require('./renderers');\n\nvar symbols = require('./symbols');\n\nvar allTypes = Object.keys(defaultRenderers);\n\nvar ReactMarkdown = function ReactMarkdown(props) {\n var src = props.source || props.children || '';\n var parserOptions = props.parserOptions;\n\n if (props.allowedTypes && props.disallowedTypes) {\n throw new Error('Only one of `allowedTypes` and `disallowedTypes` should be defined');\n }\n\n var renderers = xtend(defaultRenderers, props.renderers);\n var plugins = [[parse, parserOptions]].concat(props.plugins || []);\n var parser = plugins.reduce(applyParserPlugin, unified());\n var rawAst = parser.parse(src);\n var renderProps = xtend(props, {\n renderers: renderers,\n definitions: getDefinitions(rawAst)\n });\n var astPlugins = determineAstPlugins(props); // eslint-disable-next-line no-sync\n\n var transformedAst = parser.runSync(rawAst);\n var ast = astPlugins.reduce(function (node, plugin) {\n return plugin(node, renderProps);\n }, transformedAst);\n return astToReact(ast, renderProps);\n};\n\nfunction applyParserPlugin(parser, plugin) {\n return Array.isArray(plugin) ? parser.use.apply(parser, _toConsumableArray(plugin)) : parser.use(plugin);\n}\n\nfunction determineAstPlugins(props) {\n var plugins = [wrapTableRows, addListMetadata()];\n var disallowedTypes = props.disallowedTypes;\n\n if (props.allowedTypes) {\n disallowedTypes = allTypes.filter(function (type) {\n return type !== 'root' && props.allowedTypes.indexOf(type) === -1;\n });\n }\n\n var removalMethod = props.unwrapDisallowed ? 'unwrap' : 'remove';\n\n if (disallowedTypes && disallowedTypes.length > 0) {\n plugins.push(disallowNode.ofType(disallowedTypes, removalMethod));\n }\n\n if (props.allowNode) {\n plugins.push(disallowNode.ifNotMatch(props.allowNode, removalMethod));\n }\n\n var renderHtml = !props.escapeHtml && !props.skipHtml;\n var hasHtmlParser = (props.astPlugins || []).some(function (item) {\n var plugin = Array.isArray(item) ? item[0] : item;\n return plugin.identity === symbols.HtmlParser;\n });\n\n if (renderHtml && !hasHtmlParser) {\n plugins.push(naiveHtml);\n }\n\n return props.astPlugins ? plugins.concat(props.astPlugins) : plugins;\n}\n\nReactMarkdown.defaultProps = {\n renderers: {},\n escapeHtml: true,\n skipHtml: false,\n sourcePos: false,\n rawSourcePos: false,\n transformLinkUri: uriTransformer,\n astPlugins: [],\n plugins: [],\n parserOptions: {}\n};\nReactMarkdown.propTypes = {\n className: PropTypes.string,\n source: PropTypes.string,\n children: PropTypes.string,\n sourcePos: PropTypes.bool,\n rawSourcePos: PropTypes.bool,\n escapeHtml: PropTypes.bool,\n skipHtml: PropTypes.bool,\n allowNode: PropTypes.func,\n allowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n disallowedTypes: PropTypes.arrayOf(PropTypes.oneOf(allTypes)),\n transformLinkUri: PropTypes.oneOfType([PropTypes.func, PropTypes.bool]),\n linkTarget: PropTypes.oneOfType([PropTypes.func, PropTypes.string]),\n transformImageUri: PropTypes.func,\n astPlugins: PropTypes.arrayOf(PropTypes.func),\n unwrapDisallowed: PropTypes.bool,\n renderers: PropTypes.object,\n plugins: PropTypes.array,\n parserOptions: PropTypes.object\n};\nReactMarkdown.types = allTypes;\nReactMarkdown.renderers = defaultRenderers;\nReactMarkdown.uriTransformer = uriTransformer;\nmodule.exports = ReactMarkdown;","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var asterisk = value.indexOf('**', fromIndex);\n var underscore = value.indexOf('__', fromIndex);\n\n if (underscore === -1) {\n return asterisk;\n }\n\n if (asterisk === -1) {\n return underscore;\n }\n\n return underscore < asterisk ? underscore : asterisk;\n}","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\nvar defineProperty = Object.defineProperty;\nvar gOPD = Object.getOwnPropertyDescriptor;\n\nvar isArray = function isArray(arr) {\n if (typeof Array.isArray === 'function') {\n return Array.isArray(arr);\n }\n\n return toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object\n\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n } // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n\n\n var key;\n\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n}; // If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\n\n\nvar setProperty = function setProperty(target, options) {\n if (defineProperty && options.name === '__proto__') {\n defineProperty(target, options.name, {\n enumerable: true,\n configurable: true,\n value: options.newValue,\n writable: true\n });\n } else {\n target[options.name] = options.newValue;\n }\n}; // Return undefined instead of __proto__ if '__proto__' is not an own property\n\n\nvar getProperty = function getProperty(obj, name) {\n if (name === '__proto__') {\n if (!hasOwn.call(obj, name)) {\n return void 0;\n } else if (gOPD) {\n // In early versions of node, obj['__proto__'] is buggy when obj has\n // __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n return gOPD(obj, name).value;\n }\n }\n\n return obj[name];\n};\n\nmodule.exports = function extend() {\n var options, name, src, copy, copyIsArray, clone;\n var target = arguments[0];\n var i = 1;\n var length = arguments.length;\n var deep = false; // Handle a deep copy situation\n\n if (typeof target === 'boolean') {\n deep = target;\n target = arguments[1] || {}; // skip the boolean and the target\n\n i = 2;\n }\n\n if (target == null || typeof target !== 'object' && typeof target !== 'function') {\n target = {};\n }\n\n for (; i < length; ++i) {\n options = arguments[i]; // Only deal with non-null/undefined values\n\n if (options != null) {\n // Extend the base object\n for (name in options) {\n src = getProperty(target, name);\n copy = getProperty(options, name); // Prevent never-ending loop\n\n if (target !== copy) {\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && isArray(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n } // Never move original objects, clone them\n\n\n setProperty(target, {\n name: name,\n newValue: extend(deep, clone, copy)\n }); // Don't bring in undefined values\n } else if (typeof copy !== 'undefined') {\n setProperty(target, {\n name: name,\n newValue: copy\n });\n }\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n};","'use strict';\n\nvar slice = [].slice;\nmodule.exports = wrap;\n/* Wrap `fn`. Can be sync or async; return a promise,\n * receive a completion handler, return new values and\n * errors. */\n\nfunction wrap(fn, callback) {\n var invoked;\n return wrapped;\n\n function wrapped() {\n var params = slice.call(arguments, 0);\n var callback = fn.length > params.length;\n var result;\n\n if (callback) {\n params.push(done);\n }\n\n try {\n result = fn.apply(null, params);\n } catch (err) {\n /* Well, this is quite the pickle. `fn` received\n * a callback and invoked it (thus continuing the\n * pipeline), but later also threw an error.\n * We’re not about to restart the pipeline again,\n * so the only thing left to do is to throw the\n * thing instea. */\n if (callback && invoked) {\n throw err;\n }\n\n return done(err);\n }\n\n if (!callback) {\n if (result && typeof result.then === 'function') {\n result.then(then, done);\n } else if (result instanceof Error) {\n done(result);\n } else {\n then(result);\n }\n }\n }\n /* Invoke `next`, only once. */\n\n\n function done() {\n if (!invoked) {\n invoked = true;\n callback.apply(null, arguments);\n }\n }\n /* Invoke `done` with one value.\n * Tracks if an error is passed, too. */\n\n\n function then(value) {\n done(null, value);\n }\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar normalize = require('../util/normalize');\n\nmodule.exports = definition;\ndefinition.notInList = true;\ndefinition.notInBlock = true;\nvar C_DOUBLE_QUOTE = '\"';\nvar C_SINGLE_QUOTE = '\\'';\nvar C_BACKSLASH = '\\\\';\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_BRACKET_OPEN = '[';\nvar C_BRACKET_CLOSE = ']';\nvar C_PAREN_OPEN = '(';\nvar C_PAREN_CLOSE = ')';\nvar C_COLON = ':';\nvar C_LT = '<';\nvar C_GT = '>';\n\nfunction definition(eat, value, silent) {\n var self = this;\n var commonmark = self.options.commonmark;\n var index = 0;\n var length = value.length;\n var subvalue = '';\n var beforeURL;\n var beforeTitle;\n var queue;\n var character;\n var test;\n var identifier;\n var url;\n var title;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character !== C_BRACKET_OPEN) {\n return;\n }\n\n index++;\n subvalue += character;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === C_BRACKET_CLOSE) {\n break;\n } else if (character === C_BACKSLASH) {\n queue += character;\n index++;\n character = value.charAt(index);\n }\n\n queue += character;\n index++;\n }\n\n if (!queue || value.charAt(index) !== C_BRACKET_CLOSE || value.charAt(index + 1) !== C_COLON) {\n return;\n }\n\n identifier = queue;\n subvalue += queue + C_BRACKET_CLOSE + C_COLON;\n index = subvalue.length;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE && character !== C_NEWLINE) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n character = value.charAt(index);\n queue = '';\n beforeURL = subvalue;\n\n if (character === C_LT) {\n index++;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (!isEnclosedURLCharacter(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character === isEnclosedURLCharacter.delimiter) {\n subvalue += C_LT + queue + character;\n index++;\n } else {\n if (commonmark) {\n return;\n }\n\n index -= queue.length + 1;\n queue = '';\n }\n }\n\n if (!queue) {\n while (index < length) {\n character = value.charAt(index);\n\n if (!isUnclosedURLCharacter(character)) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n subvalue += queue;\n }\n\n if (!queue) {\n return;\n }\n\n url = queue;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE && character !== C_NEWLINE) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n test = null;\n\n if (character === C_DOUBLE_QUOTE) {\n test = C_DOUBLE_QUOTE;\n } else if (character === C_SINGLE_QUOTE) {\n test = C_SINGLE_QUOTE;\n } else if (character === C_PAREN_OPEN) {\n test = C_PAREN_CLOSE;\n }\n\n if (!test) {\n queue = '';\n index = subvalue.length;\n } else if (queue) {\n subvalue += queue + character;\n index = subvalue.length;\n queue = '';\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character === test) {\n break;\n }\n\n if (character === C_NEWLINE) {\n index++;\n character = value.charAt(index);\n\n if (character === C_NEWLINE || character === test) {\n return;\n }\n\n queue += C_NEWLINE;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (character !== test) {\n return;\n }\n\n beforeTitle = subvalue;\n subvalue += queue + character;\n index++;\n title = queue;\n queue = '';\n } else {\n return;\n }\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n subvalue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (!character || character === C_NEWLINE) {\n if (silent) {\n return true;\n }\n\n beforeURL = eat(beforeURL).test().end;\n url = self.decode.raw(self.unescape(url), beforeURL, {\n nonTerminated: false\n });\n\n if (title) {\n beforeTitle = eat(beforeTitle).test().end;\n title = self.decode.raw(self.unescape(title), beforeTitle);\n }\n\n return eat(subvalue)({\n type: 'definition',\n identifier: normalize(identifier),\n title: title || null,\n url: url\n });\n }\n}\n/* Check if `character` can be inside an enclosed URI. */\n\n\nfunction isEnclosedURLCharacter(character) {\n return character !== C_GT && character !== C_BRACKET_OPEN && character !== C_BRACKET_CLOSE;\n}\n\nisEnclosedURLCharacter.delimiter = C_GT;\n/* Check if `character` can be inside an unclosed URI. */\n\nfunction isUnclosedURLCharacter(character) {\n return character !== C_BRACKET_OPEN && character !== C_BRACKET_CLOSE && !whitespace(character);\n}","\"use strict\";\n/**\n * Naive, simple plugin to match inline nodes without attributes\n * This allows say <strong>foo</strong>, but not <strong class=\"very\">foo</strong>\n * For proper HTML support, you'll want a different plugin\n **/\n\nvar visit = require('unist-util-visit');\n\nvar type = 'virtualHtml';\nvar selfClosingRe = /^<(area|base|br|col|embed|hr|img|input|keygen|link|meta|param|source|track|wbr)\\s*\\/?>$/i;\nvar simpleTagRe = /^<(\\/?)([a-z]+)\\s*>$/;\n\nmodule.exports = function (tree) {\n var open;\n var currentParent;\n visit(tree, 'html', function (node, index, parent) {\n if (currentParent !== parent) {\n open = [];\n currentParent = parent;\n }\n\n var selfClosing = getSelfClosing(node);\n\n if (selfClosing) {\n parent.children.splice(index, 1, {\n type: type,\n tag: selfClosing,\n position: node.position\n });\n return true;\n }\n\n var current = getSimpleTag(node, parent);\n\n if (!current) {\n return true;\n }\n\n var matching = findAndPull(open, current.tag);\n\n if (matching) {\n parent.children.splice(index, 0, virtual(current, matching, parent));\n } else if (!current.opening) {\n open.push(current);\n }\n\n return true;\n }, true // Iterate in reverse\n );\n return tree;\n};\n\nfunction findAndPull(open, matchingTag) {\n var i = open.length;\n\n while (i--) {\n if (open[i].tag === matchingTag) {\n return open.splice(i, 1)[0];\n }\n }\n\n return false;\n}\n\nfunction getSimpleTag(node, parent) {\n var match = node.value.match(simpleTagRe);\n return match ? {\n tag: match[2],\n opening: !match[1],\n node: node\n } : false;\n}\n\nfunction getSelfClosing(node) {\n var match = node.value.match(selfClosingRe);\n return match ? match[1] : false;\n}\n\nfunction virtual(fromNode, toNode, parent) {\n var fromIndex = parent.children.indexOf(fromNode.node);\n var toIndex = parent.children.indexOf(toNode.node);\n var extracted = parent.children.splice(fromIndex, toIndex - fromIndex + 1);\n var children = extracted.slice(1, -1);\n return {\n type: type,\n children: children,\n tag: fromNode.tag,\n position: {\n start: fromNode.node.position.start,\n end: toNode.node.position.end,\n indent: []\n }\n };\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar decode = require('parse-entities');\n\nvar locate = require('../locate/tag');\n\nmodule.exports = autoLink;\nautoLink.locator = locate;\nautoLink.notInLink = true;\nvar C_LT = '<';\nvar C_GT = '>';\nvar C_AT_SIGN = '@';\nvar C_SLASH = '/';\nvar MAILTO = 'mailto:';\nvar MAILTO_LENGTH = MAILTO.length;\n/* Tokenise a link. */\n\nfunction autoLink(eat, value, silent) {\n var self;\n var subvalue;\n var length;\n var index;\n var queue;\n var character;\n var hasAtCharacter;\n var link;\n var now;\n var content;\n var tokenizers;\n var exit;\n\n if (value.charAt(0) !== C_LT) {\n return;\n }\n\n self = this;\n subvalue = '';\n length = value.length;\n index = 0;\n queue = '';\n hasAtCharacter = false;\n link = '';\n index++;\n subvalue = C_LT;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (whitespace(character) || character === C_GT || character === C_AT_SIGN || character === ':' && value.charAt(index + 1) === C_SLASH) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n if (!queue) {\n return;\n }\n\n link += queue;\n queue = '';\n character = value.charAt(index);\n link += character;\n index++;\n\n if (character === C_AT_SIGN) {\n hasAtCharacter = true;\n } else {\n if (character !== ':' || value.charAt(index + 1) !== C_SLASH) {\n return;\n }\n\n link += C_SLASH;\n index++;\n }\n\n while (index < length) {\n character = value.charAt(index);\n\n if (whitespace(character) || character === C_GT) {\n break;\n }\n\n queue += character;\n index++;\n }\n\n character = value.charAt(index);\n\n if (!queue || character !== C_GT) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n link += queue;\n content = link;\n subvalue += link + character;\n now = eat.now();\n now.column++;\n now.offset++;\n\n if (hasAtCharacter) {\n if (link.slice(0, MAILTO_LENGTH).toLowerCase() === MAILTO) {\n content = content.substr(MAILTO_LENGTH);\n now.column += MAILTO_LENGTH;\n now.offset += MAILTO_LENGTH;\n } else {\n link = MAILTO + link;\n }\n }\n /* Temporarily remove all tokenizers except text in autolinks. */\n\n\n tokenizers = self.inlineTokenizers;\n self.inlineTokenizers = {\n text: tokenizers.text\n };\n exit = self.enterLink();\n content = self.tokenizeInline(content, now);\n self.inlineTokenizers = tokenizers;\n exit();\n return eat(subvalue)({\n type: 'link',\n title: null,\n url: decode(link, {\n nonTerminated: false\n }),\n children: content\n });\n}","exports = module.exports = trim;\n\nfunction trim(str) {\n return str.replace(/^\\s*|\\s*$/g, '');\n}\n\nexports.left = function (str) {\n return str.replace(/^\\s*/, '');\n};\n\nexports.right = function (str) {\n return str.replace(/\\s*$/, '');\n};","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('\\\\', fromIndex);\n}","'use strict';\n\nmodule.exports = factory;\nvar MERGEABLE_NODES = {\n text: mergeText,\n blockquote: mergeBlockquote\n};\n/* Check whether a node is mergeable with adjacent nodes. */\n\nfunction mergeable(node) {\n var start;\n var end;\n\n if (node.type !== 'text' || !node.position) {\n return true;\n }\n\n start = node.position.start;\n end = node.position.end;\n /* Only merge nodes which occupy the same size as their\n * `value`. */\n\n return start.line !== end.line || end.column - start.column === node.value.length;\n}\n/* Merge two text nodes: `node` into `prev`. */\n\n\nfunction mergeText(prev, node) {\n prev.value += node.value;\n return prev;\n}\n/* Merge two blockquotes: `node` into `prev`, unless in\n * CommonMark mode. */\n\n\nfunction mergeBlockquote(prev, node) {\n if (this.options.commonmark) {\n return node;\n }\n\n prev.children = prev.children.concat(node.children);\n return prev;\n}\n/* Construct a tokenizer. This creates both\n * `tokenizeInline` and `tokenizeBlock`. */\n\n\nfunction factory(type) {\n return tokenize;\n /* Tokenizer for a bound `type`. */\n\n function tokenize(value, location) {\n var self = this;\n var offset = self.offset;\n var tokens = [];\n var methods = self[type + 'Methods'];\n var tokenizers = self[type + 'Tokenizers'];\n var line = location.line;\n var column = location.column;\n var index;\n var length;\n var method;\n var name;\n var matched;\n var valueLength;\n /* Trim white space only lines. */\n\n if (!value) {\n return tokens;\n }\n /* Expose on `eat`. */\n\n\n eat.now = now;\n eat.file = self.file;\n /* Sync initial offset. */\n\n updatePosition('');\n /* Iterate over `value`, and iterate over all\n * tokenizers. When one eats something, re-iterate\n * with the remaining value. If no tokenizer eats,\n * something failed (should not happen) and an\n * exception is thrown. */\n\n while (value) {\n index = -1;\n length = methods.length;\n matched = false;\n\n while (++index < length) {\n name = methods[index];\n method = tokenizers[name];\n\n if (method && (\n /* istanbul ignore next */\n !method.onlyAtStart || self.atStart) && (!method.notInList || !self.inList) && (!method.notInBlock || !self.inBlock) && (!method.notInLink || !self.inLink)) {\n valueLength = value.length;\n method.apply(self, [eat, value]);\n matched = valueLength !== value.length;\n\n if (matched) {\n break;\n }\n }\n }\n /* istanbul ignore if */\n\n\n if (!matched) {\n self.file.fail(new Error('Infinite loop'), eat.now());\n }\n }\n\n self.eof = now();\n return tokens;\n /* Update line, column, and offset based on\n * `value`. */\n\n function updatePosition(subvalue) {\n var lastIndex = -1;\n var index = subvalue.indexOf('\\n');\n\n while (index !== -1) {\n line++;\n lastIndex = index;\n index = subvalue.indexOf('\\n', index + 1);\n }\n\n if (lastIndex === -1) {\n column += subvalue.length;\n } else {\n column = subvalue.length - lastIndex;\n }\n\n if (line in offset) {\n if (lastIndex !== -1) {\n column += offset[line];\n } else if (column <= offset[line]) {\n column = offset[line] + 1;\n }\n }\n }\n /* Get offset. Called before the first character is\n * eaten to retrieve the range's offsets. */\n\n\n function getOffset() {\n var indentation = [];\n var pos = line + 1;\n /* Done. Called when the last character is\n * eaten to retrieve the range’s offsets. */\n\n return function () {\n var last = line + 1;\n\n while (pos < last) {\n indentation.push((offset[pos] || 0) + 1);\n pos++;\n }\n\n return indentation;\n };\n }\n /* Get the current position. */\n\n\n function now() {\n var pos = {\n line: line,\n column: column\n };\n pos.offset = self.toOffset(pos);\n return pos;\n }\n /* Store position information for a node. */\n\n\n function Position(start) {\n this.start = start;\n this.end = now();\n }\n /* Throw when a value is incorrectly eaten.\n * This shouldn’t happen but will throw on new,\n * incorrect rules. */\n\n\n function validateEat(subvalue) {\n /* istanbul ignore if */\n if (value.substring(0, subvalue.length) !== subvalue) {\n /* Capture stack-trace. */\n self.file.fail(new Error('Incorrectly eaten value: please report this ' + 'warning on http://git.io/vg5Ft'), now());\n }\n }\n /* Mark position and patch `node.position`. */\n\n\n function position() {\n var before = now();\n return update;\n /* Add the position to a node. */\n\n function update(node, indent) {\n var prev = node.position;\n var start = prev ? prev.start : before;\n var combined = [];\n var n = prev && prev.end.line;\n var l = before.line;\n node.position = new Position(start);\n /* If there was already a `position`, this\n * node was merged. Fixing `start` wasn’t\n * hard, but the indent is different.\n * Especially because some information, the\n * indent between `n` and `l` wasn’t\n * tracked. Luckily, that space is\n * (should be?) empty, so we can safely\n * check for it now. */\n\n if (prev && indent && prev.indent) {\n combined = prev.indent;\n\n if (n < l) {\n while (++n < l) {\n combined.push((offset[n] || 0) + 1);\n }\n\n combined.push(before.column);\n }\n\n indent = combined.concat(indent);\n }\n\n node.position.indent = indent || [];\n return node;\n }\n }\n /* Add `node` to `parent`s children or to `tokens`.\n * Performs merges where possible. */\n\n\n function add(node, parent) {\n var children = parent ? parent.children : tokens;\n var prev = children[children.length - 1];\n\n if (prev && node.type === prev.type && node.type in MERGEABLE_NODES && mergeable(prev) && mergeable(node)) {\n node = MERGEABLE_NODES[node.type].call(self, prev, node);\n }\n\n if (node !== prev) {\n children.push(node);\n }\n\n if (self.atStart && tokens.length !== 0) {\n self.exitStart();\n }\n\n return node;\n }\n /* Remove `subvalue` from `value`.\n * `subvalue` must be at the start of `value`. */\n\n\n function eat(subvalue) {\n var indent = getOffset();\n var pos = position();\n var current = now();\n validateEat(subvalue);\n apply.reset = reset;\n reset.test = test;\n apply.test = test;\n value = value.substring(subvalue.length);\n updatePosition(subvalue);\n indent = indent();\n return apply;\n /* Add the given arguments, add `position` to\n * the returned node, and return the node. */\n\n function apply(node, parent) {\n return pos(add(pos(node), parent), indent);\n }\n /* Functions just like apply, but resets the\n * content: the line and column are reversed,\n * and the eaten value is re-added.\n * This is useful for nodes with a single\n * type of content, such as lists and tables.\n * See `apply` above for what parameters are\n * expected. */\n\n\n function reset() {\n var node = apply.apply(null, arguments);\n line = current.line;\n column = current.column;\n value = subvalue + value;\n return node;\n }\n /* Test the position, after eating, and reverse\n * to a not-eaten state. */\n\n\n function test() {\n var result = pos({});\n line = current.line;\n column = current.column;\n value = subvalue + value;\n return result.position;\n }\n }\n }\n}","'use strict';\n\nmodule.exports = text;\n\nfunction text(eat, value, silent) {\n var self = this;\n var methods;\n var tokenizers;\n var index;\n var length;\n var subvalue;\n var position;\n var tokenizer;\n var name;\n var min;\n var now;\n /* istanbul ignore if - never used (yet) */\n\n if (silent) {\n return true;\n }\n\n methods = self.inlineMethods;\n length = methods.length;\n tokenizers = self.inlineTokenizers;\n index = -1;\n min = value.length;\n\n while (++index < length) {\n name = methods[index];\n\n if (name === 'text' || !tokenizers[name]) {\n continue;\n }\n\n tokenizer = tokenizers[name].locator;\n\n if (!tokenizer) {\n eat.file.fail('Missing locator: `' + name + '`');\n }\n\n position = tokenizer.call(self, value, 1);\n\n if (position !== -1 && position < min) {\n min = position;\n }\n }\n\n subvalue = value.slice(0, min);\n now = eat.now();\n self.decode(subvalue, now, function (content, position, source) {\n eat(source || content)({\n type: 'text',\n value: content\n });\n });\n}","'use strict';\n\nvar trim = require('trim');\n\nvar interrupt = require('../util/interrupt');\n\nmodule.exports = blockquote;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_GT = '>';\n/* Tokenise a blockquote. */\n\nfunction blockquote(eat, value, silent) {\n var self = this;\n var offsets = self.offset;\n var tokenizers = self.blockTokenizers;\n var interruptors = self.interruptBlockquote;\n var now = eat.now();\n var currentLine = now.line;\n var length = value.length;\n var values = [];\n var contents = [];\n var indents = [];\n var add;\n var index = 0;\n var character;\n var rest;\n var nextIndex;\n var content;\n var line;\n var startIndex;\n var prefixed;\n var exit;\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n index++;\n }\n\n if (value.charAt(index) !== C_GT) {\n return;\n }\n\n if (silent) {\n return true;\n }\n\n index = 0;\n\n while (index < length) {\n nextIndex = value.indexOf(C_NEWLINE, index);\n startIndex = index;\n prefixed = false;\n\n if (nextIndex === -1) {\n nextIndex = length;\n }\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n break;\n }\n\n index++;\n }\n\n if (value.charAt(index) === C_GT) {\n index++;\n prefixed = true;\n\n if (value.charAt(index) === C_SPACE) {\n index++;\n }\n } else {\n index = startIndex;\n }\n\n content = value.slice(index, nextIndex);\n\n if (!prefixed && !trim(content)) {\n index = startIndex;\n break;\n }\n\n if (!prefixed) {\n rest = value.slice(index);\n /* Check if the following code contains a possible\n * block. */\n\n if (interrupt(interruptors, tokenizers, self, [eat, rest, true])) {\n break;\n }\n }\n\n line = startIndex === index ? content : value.slice(startIndex, nextIndex);\n indents.push(index - startIndex);\n values.push(line);\n contents.push(content);\n index = nextIndex + 1;\n }\n\n index = -1;\n length = indents.length;\n add = eat(values.join(C_NEWLINE));\n\n while (++index < length) {\n offsets[currentLine] = (offsets[currentLine] || 0) + indents[index];\n currentLine++;\n }\n\n exit = self.enterBlock();\n contents = self.tokenizeBlock(contents.join(C_NEWLINE), now);\n exit();\n return add({\n type: 'blockquote',\n children: contents\n });\n}","\"use strict\";\n\nvar visit = require('unist-util-visit');\n\nexports.ofType = function (types, mode) {\n return function (node) {\n types.forEach(function (type) {\n return visit(node, type, disallow, true);\n });\n return node;\n };\n\n function disallow(node, index, parent) {\n if (parent) {\n untangle(node, index, parent, mode);\n }\n }\n};\n\nexports.ifNotMatch = function (allowNode, mode) {\n return function (node) {\n visit(node, disallow, true);\n return node;\n };\n\n function disallow(node, index, parent) {\n if (parent && !allowNode(node, index, parent)) {\n untangle(node, index, parent, mode);\n }\n }\n};\n\nfunction untangle(node, index, parent, mode) {\n if (mode === 'remove') {\n parent.children.splice(index, 1);\n } else if (mode === 'unwrap') {\n var args = [index, 1];\n\n if (node.children) {\n args = args.concat(node.children);\n }\n\n Array.prototype.splice.apply(parent.children, args);\n }\n}","'use strict';\n\nvar alphabetical = require('is-alphabetical');\n\nvar locate = require('../locate/tag');\n\nvar tag = require('../util/html').tag;\n\nmodule.exports = inlineHTML;\ninlineHTML.locator = locate;\nvar EXPRESSION_HTML_LINK_OPEN = /^<a /i;\nvar EXPRESSION_HTML_LINK_CLOSE = /^<\\/a>/i;\n\nfunction inlineHTML(eat, value, silent) {\n var self = this;\n var length = value.length;\n var character;\n var subvalue;\n\n if (value.charAt(0) !== '<' || length < 3) {\n return;\n }\n\n character = value.charAt(1);\n\n if (!alphabetical(character) && character !== '?' && character !== '!' && character !== '/') {\n return;\n }\n\n subvalue = value.match(tag);\n\n if (!subvalue) {\n return;\n }\n /* istanbul ignore if - not used yet. */\n\n\n if (silent) {\n return true;\n }\n\n subvalue = subvalue[0];\n\n if (!self.inLink && EXPRESSION_HTML_LINK_OPEN.test(subvalue)) {\n self.inLink = true;\n } else if (self.inLink && EXPRESSION_HTML_LINK_CLOSE.test(subvalue)) {\n self.inLink = false;\n }\n\n return eat(subvalue)({\n type: 'html',\n value: subvalue\n });\n}","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/delete');\n\nmodule.exports = strikethrough;\nstrikethrough.locator = locate;\nvar C_TILDE = '~';\nvar DOUBLE = '~~';\n\nfunction strikethrough(eat, value, silent) {\n var self = this;\n var character = '';\n var previous = '';\n var preceding = '';\n var subvalue = '';\n var index;\n var length;\n var now;\n\n if (!self.options.gfm || value.charAt(0) !== C_TILDE || value.charAt(1) !== C_TILDE || whitespace(value.charAt(2))) {\n return;\n }\n\n index = 1;\n length = value.length;\n now = eat.now();\n now.column += 2;\n now.offset += 2;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === C_TILDE && previous === C_TILDE && (!preceding || !whitespace(preceding))) {\n /* istanbul ignore if - never used (yet) */\n if (silent) {\n return true;\n }\n\n return eat(DOUBLE + subvalue + DOUBLE)({\n type: 'delete',\n children: self.tokenizeInline(subvalue, now)\n });\n }\n\n subvalue += previous;\n preceding = previous;\n previous = character;\n }\n}","'use strict';\n\nvar collapseWhiteSpace = require('collapse-white-space');\n\nmodule.exports = normalize;\n/* Normalize an identifier. Collapses multiple white space\n * characters into a single space, and removes casing. */\n\nfunction normalize(value) {\n return collapseWhiteSpace(value).toLowerCase();\n}","'use strict';\n\nvar repeat = require('repeat-string');\n\nvar trim = require('trim-trailing-lines');\n\nmodule.exports = indentedCode;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar CODE_INDENT_COUNT = 4;\nvar CODE_INDENT = repeat(C_SPACE, CODE_INDENT_COUNT);\n/* Tokenise indented code. */\n\nfunction indentedCode(eat, value, silent) {\n var index = -1;\n var length = value.length;\n var subvalue = '';\n var content = '';\n var subvalueQueue = '';\n var contentQueue = '';\n var character;\n var blankQueue;\n var indent;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (indent) {\n indent = false;\n subvalue += subvalueQueue;\n content += contentQueue;\n subvalueQueue = '';\n contentQueue = '';\n\n if (character === C_NEWLINE) {\n subvalueQueue = character;\n contentQueue = character;\n } else {\n subvalue += character;\n content += character;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (!character || character === C_NEWLINE) {\n contentQueue = character;\n subvalueQueue = character;\n break;\n }\n\n subvalue += character;\n content += character;\n }\n }\n } else if (character === C_SPACE && value.charAt(index + 1) === character && value.charAt(index + 2) === character && value.charAt(index + 3) === character) {\n subvalueQueue += CODE_INDENT;\n index += 3;\n indent = true;\n } else if (character === C_TAB) {\n subvalueQueue += character;\n indent = true;\n } else {\n blankQueue = '';\n\n while (character === C_TAB || character === C_SPACE) {\n blankQueue += character;\n character = value.charAt(++index);\n }\n\n if (character !== C_NEWLINE) {\n break;\n }\n\n subvalueQueue += blankQueue + character;\n contentQueue += character;\n }\n }\n\n if (content) {\n if (silent) {\n return true;\n }\n\n return eat(subvalue)({\n type: 'code',\n lang: null,\n value: trim(content)\n });\n }\n}","module.exports = \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHZpZXdCb3g9IjAgMCAyMCAyMCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiBmb2N1c2FibGU9ImZhbHNlIj4KICA8cGF0aCBkPSJNMTAgMS42NjdBOC4zMzYgOC4zMzYgMCAwMDEuNjY3IDEwYzAgMy42ODMgMi4zOTEgNi44MDggNS43IDcuOTE3LjQxNi4wNjYuNTUtLjE5Mi41NS0uNDE3di0xLjQwOGMtMi4zMDkuNS0yLjgtMS4xMTctMi44LTEuMTE3LS4zODQtLjk2Ny0uOTI1LTEuMjI1LS45MjUtMS4yMjUtLjc1OS0uNTE3LjA1OC0uNS4wNTgtLjUuODMzLjA1OCAxLjI3NS44NTggMS4yNzUuODU4LjcyNSAxLjI2NyAxLjk1Ljg5MiAyLjQyNS42OTIuMDc1LS41NDIuMjkyLS45MDguNTI1LTEuMTE3LTEuODUtLjIwOC0zLjc5Mi0uOTI1LTMuNzkyLTQuMSAwLS45MjUuMzE3LTEuNjY2Ljg1OS0yLjI1OC0uMDg0LS4yMDgtLjM3NS0xLjA3NS4wODMtMi4yIDAgMCAuNy0uMjI1IDIuMjkyLjg1QTcuODUyIDcuODUyIDAgMDExMCA1LjdjLjcwOCAwIDEuNDI1LjA5MiAyLjA4My4yNzUgMS41OTItMS4wNzUgMi4yOTItLjg1IDIuMjkyLS44NS40NTggMS4xMjUuMTY3IDEuOTkyLjA4MyAyLjIuNTQyLjU5Mi44NTkgMS4zMzMuODU5IDIuMjU4IDAgMy4xODQtMS45NSAzLjg4NC0zLjgwOSA0LjA5Mi4zLjI1OC41NzUuNzY3LjU3NSAxLjU0MlYxNy41YzAgLjIyNS4xMzQuNDkyLjU1OS40MTdDMTUuOTUgMTYuOCAxOC4zMzMgMTMuNjgzIDE4LjMzMyAxMGMwLTQuNi0zLjczMy04LjMzMy04LjMzMy04LjMzM3oiIGZpbGw9IiM2MzkiLz4KPC9zdmc+Cg==\"","module.exports = AlgoliaSearch;\n\nvar Index = require('./Index.js');\n\nvar deprecate = require('./deprecate.js');\n\nvar deprecatedMessage = require('./deprecatedMessage.js');\n\nvar AlgoliaSearchCore = require('./AlgoliaSearchCore.js');\n\nvar inherits = require('inherits');\n\nvar errors = require('./errors');\n\nfunction AlgoliaSearch() {\n AlgoliaSearchCore.apply(this, arguments);\n}\n\ninherits(AlgoliaSearch, AlgoliaSearchCore);\n/*\n * Delete an index\n *\n * @param indexName the name of index to delete\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer that contains the task ID\n */\n\nAlgoliaSearch.prototype.deleteIndex = function (indexName, callback) {\n return this._jsonRequest({\n method: 'DELETE',\n url: '/1/indexes/' + encodeURIComponent(indexName),\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Move an existing index.\n * @param srcIndexName the name of index to copy.\n * @param dstIndexName the new index name that will contains a copy of\n * srcIndexName (destination will be overriten if it already exist).\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer that contains the task ID\n */\n\n\nAlgoliaSearch.prototype.moveIndex = function (srcIndexName, dstIndexName, callback) {\n var postObj = {\n operation: 'move',\n destination: dstIndexName\n };\n return this._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(srcIndexName) + '/operation',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Copy an existing index.\n * @param srcIndexName the name of index to copy.\n * @param dstIndexName the new index name that will contains a copy\n * of srcIndexName (destination will be overriten if it already exist).\n * @param scope an array of scopes to copy: ['settings', 'synonyms', 'rules']\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer that contains the task ID\n */\n\n\nAlgoliaSearch.prototype.copyIndex = function (srcIndexName, dstIndexName, scopeOrCallback, _callback) {\n var postObj = {\n operation: 'copy',\n destination: dstIndexName\n };\n var callback = _callback;\n\n if (typeof scopeOrCallback === 'function') {\n // oops, old behaviour of third argument being a function\n callback = scopeOrCallback;\n } else if (Array.isArray(scopeOrCallback) && scopeOrCallback.length > 0) {\n postObj.scope = scopeOrCallback;\n } else if (typeof scopeOrCallback !== 'undefined') {\n throw new Error('the scope given to `copyIndex` was not an array with settings, synonyms or rules');\n }\n\n return this._jsonRequest({\n method: 'POST',\n url: '/1/indexes/' + encodeURIComponent(srcIndexName) + '/operation',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Return last log entries.\n * @param offset Specify the first entry to retrieve (0-based, 0 is the most recent log entry).\n * @param length Specify the maximum number of entries to retrieve starting\n * at offset. Maximum allowed value: 1000.\n * @param type Specify the maximum number of entries to retrieve starting\n * at offset. Maximum allowed value: 1000.\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer that contains the task ID\n */\n\n\nAlgoliaSearch.prototype.getLogs = function (offset, length, callback) {\n var clone = require('./clone.js');\n\n var params = {};\n\n if (typeof offset === 'object') {\n // getLogs(params)\n params = clone(offset);\n callback = length;\n } else if (arguments.length === 0 || typeof offset === 'function') {\n // getLogs([cb])\n callback = offset;\n } else if (arguments.length === 1 || typeof length === 'function') {\n // getLogs(1, [cb)]\n callback = length;\n params.offset = offset;\n } else {\n // getLogs(1, 2, [cb])\n params.offset = offset;\n params.length = length;\n }\n\n if (params.offset === undefined) params.offset = 0;\n if (params.length === undefined) params.length = 10;\n return this._jsonRequest({\n method: 'GET',\n url: '/1/logs?' + this._getSearchParams(params, ''),\n hostType: 'read',\n callback: callback\n });\n};\n/*\n * List all existing indexes (paginated)\n *\n * @param page The page to retrieve, starting at 0.\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with index list\n */\n\n\nAlgoliaSearch.prototype.listIndexes = function (page, callback) {\n var params = '';\n\n if (page === undefined || typeof page === 'function') {\n callback = page;\n } else {\n params = '?page=' + page;\n }\n\n return this._jsonRequest({\n method: 'GET',\n url: '/1/indexes' + params,\n hostType: 'read',\n callback: callback\n });\n};\n/*\n * Get the index object initialized\n *\n * @param indexName the name of index\n * @param callback the result callback with one argument (the Index instance)\n */\n\n\nAlgoliaSearch.prototype.initIndex = function (indexName) {\n return new Index(this, indexName);\n};\n\nAlgoliaSearch.prototype.initAnalytics = function (opts) {\n // the actual require must be inside the function, when put outside then you have a cyclic dependency\n // not well resolved that ends up making the main \"./index.js\" (main module, the agloliasearch function)\n // export an object instead of a function\n // Other workarounds:\n // - rewrite the lib in ES6, cyclic dependencies may be better supported\n // - move initAnalytics to a property on the main module (algoliasearch.initAnalytics),\n // same as places.\n // The current API was made mostly to mimic the one made in PHP\n var createAnalyticsClient = require('./createAnalyticsClient.js');\n\n return createAnalyticsClient(this.applicationID, this.apiKey, opts);\n};\n/*\n * @deprecated use client.listApiKeys\n */\n\n\nAlgoliaSearch.prototype.listUserKeys = deprecate(function (callback) {\n return this.listApiKeys(callback);\n}, deprecatedMessage('client.listUserKeys()', 'client.listApiKeys()'));\n/*\n * List all existing api keys with their associated ACLs\n *\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with api keys list\n */\n\nAlgoliaSearch.prototype.listApiKeys = function (callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/keys',\n hostType: 'read',\n callback: callback\n });\n};\n/*\n * @deprecated see client.getApiKey\n */\n\n\nAlgoliaSearch.prototype.getUserKeyACL = deprecate(function (key, callback) {\n return this.getApiKey(key, callback);\n}, deprecatedMessage('client.getUserKeyACL()', 'client.getApiKey()'));\n/*\n * Get an API key\n *\n * @param key\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with the right API key\n */\n\nAlgoliaSearch.prototype.getApiKey = function (key, callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/keys/' + key,\n hostType: 'read',\n callback: callback\n });\n};\n/*\n * @deprecated see client.deleteApiKey\n */\n\n\nAlgoliaSearch.prototype.deleteUserKey = deprecate(function (key, callback) {\n return this.deleteApiKey(key, callback);\n}, deprecatedMessage('client.deleteUserKey()', 'client.deleteApiKey()'));\n/*\n * Delete an existing API key\n * @param key\n * @param callback the result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with the date of deletion\n */\n\nAlgoliaSearch.prototype.deleteApiKey = function (key, callback) {\n return this._jsonRequest({\n method: 'DELETE',\n url: '/1/keys/' + key,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Restore a deleted API key\n *\n * @param {String} key - The key to restore\n * @param {Function} callback - The result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with the restored API key\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.restoreApiKey('APIKEY')\n * @see {@link https://www.algolia.com/doc/rest-api/search/#restore-api-key|Algolia REST API Documentation}\n */\n\n\nAlgoliaSearch.prototype.restoreApiKey = function (key, callback) {\n return this._jsonRequest({\n method: 'POST',\n url: '/1/keys/' + key + '/restore',\n hostType: 'write',\n callback: callback\n });\n};\n/*\n @deprecated see client.addApiKey\n */\n\n\nAlgoliaSearch.prototype.addUserKey = deprecate(function (acls, params, callback) {\n return this.addApiKey(acls, params, callback);\n}, deprecatedMessage('client.addUserKey()', 'client.addApiKey()'));\n/*\n * Add a new global API key\n *\n * @param {string[]} acls - The list of ACL for this key. Defined by an array of strings that\n * can contains the following values:\n * - search: allow to search (https and http)\n * - addObject: allows to add/update an object in the index (https only)\n * - deleteObject : allows to delete an existing object (https only)\n * - deleteIndex : allows to delete index content (https only)\n * - settings : allows to get index settings (https only)\n * - editSettings : allows to change index settings (https only)\n * @param {Object} [params] - Optionnal parameters to set for the key\n * @param {number} params.validity - Number of seconds after which the key will be automatically removed (0 means no time limit for this key)\n * @param {number} params.maxQueriesPerIPPerHour - Number of API calls allowed from an IP address per hour\n * @param {number} params.maxHitsPerQuery - Number of hits this API key can retrieve in one call\n * @param {string[]} params.indexes - Allowed targeted indexes for this key\n * @param {string} params.description - A description for your key\n * @param {string[]} params.referers - A list of authorized referers\n * @param {Object} params.queryParameters - Force the key to use specific query parameters\n * @param {Function} callback - The result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with the added API key\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.addApiKey(['search'], {\n * validity: 300,\n * maxQueriesPerIPPerHour: 2000,\n * maxHitsPerQuery: 3,\n * indexes: ['fruits'],\n * description: 'Eat three fruits',\n * referers: ['*.algolia.com'],\n * queryParameters: {\n * tagFilters: ['public'],\n * }\n * })\n * @see {@link https://www.algolia.com/doc/rest_api#AddKey|Algolia REST API Documentation}\n */\n\nAlgoliaSearch.prototype.addApiKey = function (acls, params, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: client.addApiKey(arrayOfAcls[, params, callback])';\n\n if (!isArray(acls)) {\n throw new Error(usage);\n }\n\n if (arguments.length === 1 || typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n var postObj = {\n acl: acls\n };\n\n if (params) {\n postObj.validity = params.validity;\n postObj.maxQueriesPerIPPerHour = params.maxQueriesPerIPPerHour;\n postObj.maxHitsPerQuery = params.maxHitsPerQuery;\n postObj.indexes = params.indexes;\n postObj.description = params.description;\n\n if (params.queryParameters) {\n postObj.queryParameters = this._getSearchParams(params.queryParameters, '');\n }\n\n postObj.referers = params.referers;\n }\n\n return this._jsonRequest({\n method: 'POST',\n url: '/1/keys',\n body: postObj,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * @deprecated Please use client.addApiKey()\n */\n\n\nAlgoliaSearch.prototype.addUserKeyWithValidity = deprecate(function (acls, params, callback) {\n return this.addApiKey(acls, params, callback);\n}, deprecatedMessage('client.addUserKeyWithValidity()', 'client.addApiKey()'));\n/**\n * @deprecated Please use client.updateApiKey()\n */\n\nAlgoliaSearch.prototype.updateUserKey = deprecate(function (key, acls, params, callback) {\n return this.updateApiKey(key, acls, params, callback);\n}, deprecatedMessage('client.updateUserKey()', 'client.updateApiKey()'));\n/**\n * Update an existing API key\n * @param {string} key - The key to update\n * @param {string[]} acls - The list of ACL for this key. Defined by an array of strings that\n * can contains the following values:\n * - search: allow to search (https and http)\n * - addObject: allows to add/update an object in the index (https only)\n * - deleteObject : allows to delete an existing object (https only)\n * - deleteIndex : allows to delete index content (https only)\n * - settings : allows to get index settings (https only)\n * - editSettings : allows to change index settings (https only)\n * @param {Object} [params] - Optionnal parameters to set for the key\n * @param {number} params.validity - Number of seconds after which the key will be automatically removed (0 means no time limit for this key)\n * @param {number} params.maxQueriesPerIPPerHour - Number of API calls allowed from an IP address per hour\n * @param {number} params.maxHitsPerQuery - Number of hits this API key can retrieve in one call\n * @param {string[]} params.indexes - Allowed targeted indexes for this key\n * @param {string} params.description - A description for your key\n * @param {string[]} params.referers - A list of authorized referers\n * @param {Object} params.queryParameters - Force the key to use specific query parameters\n * @param {Function} callback - The result callback called with two arguments\n * error: null or Error('message')\n * content: the server answer with the modified API key\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.updateApiKey('APIKEY', ['search'], {\n * validity: 300,\n * maxQueriesPerIPPerHour: 2000,\n * maxHitsPerQuery: 3,\n * indexes: ['fruits'],\n * description: 'Eat three fruits',\n * referers: ['*.algolia.com'],\n * queryParameters: {\n * tagFilters: ['public'],\n * }\n * })\n * @see {@link https://www.algolia.com/doc/rest_api#UpdateIndexKey|Algolia REST API Documentation}\n */\n\nAlgoliaSearch.prototype.updateApiKey = function (key, acls, params, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: client.updateApiKey(key, arrayOfAcls[, params, callback])';\n\n if (!isArray(acls)) {\n throw new Error(usage);\n }\n\n if (arguments.length === 2 || typeof params === 'function') {\n callback = params;\n params = null;\n }\n\n var putObj = {\n acl: acls\n };\n\n if (params) {\n putObj.validity = params.validity;\n putObj.maxQueriesPerIPPerHour = params.maxQueriesPerIPPerHour;\n putObj.maxHitsPerQuery = params.maxHitsPerQuery;\n putObj.indexes = params.indexes;\n putObj.description = params.description;\n\n if (params.queryParameters) {\n putObj.queryParameters = this._getSearchParams(params.queryParameters, '');\n }\n\n putObj.referers = params.referers;\n }\n\n return this._jsonRequest({\n method: 'PUT',\n url: '/1/keys/' + key,\n body: putObj,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Initialize a new batch of search queries\n * @deprecated use client.search()\n */\n\n\nAlgoliaSearch.prototype.startQueriesBatch = deprecate(function startQueriesBatchDeprecated() {\n this._batch = [];\n}, deprecatedMessage('client.startQueriesBatch()', 'client.search()'));\n/**\n * Add a search query in the batch\n * @deprecated use client.search()\n */\n\nAlgoliaSearch.prototype.addQueryInBatch = deprecate(function addQueryInBatchDeprecated(indexName, query, args) {\n this._batch.push({\n indexName: indexName,\n query: query,\n params: args\n });\n}, deprecatedMessage('client.addQueryInBatch()', 'client.search()'));\n/**\n * Launch the batch of queries using XMLHttpRequest.\n * @deprecated use client.search()\n */\n\nAlgoliaSearch.prototype.sendQueriesBatch = deprecate(function sendQueriesBatchDeprecated(callback) {\n return this.search(this._batch, callback);\n}, deprecatedMessage('client.sendQueriesBatch()', 'client.search()'));\n/**\n * Perform write operations across multiple indexes.\n *\n * To reduce the amount of time spent on network round trips,\n * you can create, update, or delete several objects in one call,\n * using the batch endpoint (all operations are done in the given order).\n *\n * Available actions:\n * - addObject\n * - updateObject\n * - partialUpdateObject\n * - partialUpdateObjectNoCreate\n * - deleteObject\n *\n * https://www.algolia.com/doc/rest_api#Indexes\n * @param {Object[]} operations An array of operations to perform\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.batch([{\n * action: 'addObject',\n * indexName: 'clients',\n * body: {\n * name: 'Bill'\n * }\n * }, {\n * action: 'udpateObject',\n * indexName: 'fruits',\n * body: {\n * objectID: '29138',\n * name: 'banana'\n * }\n * }], cb)\n */\n\nAlgoliaSearch.prototype.batch = function (operations, callback) {\n var isArray = require('isarray');\n\n var usage = 'Usage: client.batch(operations[, callback])';\n\n if (!isArray(operations)) {\n throw new Error(usage);\n }\n\n return this._jsonRequest({\n method: 'POST',\n url: '/1/indexes/*/batch',\n body: {\n requests: operations\n },\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Assign or Move a userID to a cluster\n *\n * @param {string} data.userID The userID to assign to a new cluster\n * @param {string} data.cluster The cluster to assign the user to\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.assignUserID({ cluster: 'c1-test', userID: 'some-user' });\n */\n\n\nAlgoliaSearch.prototype.assignUserID = function (data, callback) {\n if (!data.userID || !data.cluster) {\n throw new errors.AlgoliaSearchError('You have to provide both a userID and cluster', data);\n }\n\n return this._jsonRequest({\n method: 'POST',\n url: '/1/clusters/mapping',\n hostType: 'write',\n body: {\n cluster: data.cluster\n },\n callback: callback,\n headers: {\n 'x-algolia-user-id': data.userID\n }\n });\n};\n/**\n * Assign a array of userIDs to a cluster.\n *\n * @param {Array} data.userIDs The array of userIDs to assign to a new cluster\n * @param {string} data.cluster The cluster to assign the user to\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.assignUserIDs({ cluster: 'c1-test', userIDs: ['some-user-1', 'some-user-2'] });\n */\n\n\nAlgoliaSearch.prototype.assignUserIDs = function (data, callback) {\n if (!data.userIDs || !data.cluster) {\n throw new errors.AlgoliaSearchError('You have to provide both an array of userIDs and cluster', data);\n }\n\n return this._jsonRequest({\n method: 'POST',\n url: '/1/clusters/mapping/batch',\n hostType: 'write',\n body: {\n cluster: data.cluster,\n users: data.userIDs\n },\n callback: callback\n });\n};\n/**\n * Get the top userIDs\n *\n * (the callback is the second argument)\n *\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.getTopUserID();\n */\n\n\nAlgoliaSearch.prototype.getTopUserID = function (callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/clusters/mapping/top',\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * Get userID\n *\n * @param {string} data.userID The userID to get info about\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.getUserID({ userID: 'some-user' });\n */\n\n\nAlgoliaSearch.prototype.getUserID = function (data, callback) {\n if (!data.userID) {\n throw new errors.AlgoliaSearchError('You have to provide a userID', {\n debugData: data\n });\n }\n\n return this._jsonRequest({\n method: 'GET',\n url: '/1/clusters/mapping/' + data.userID,\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * List all the clusters\n *\n * (the callback is the second argument)\n *\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.listClusters();\n */\n\n\nAlgoliaSearch.prototype.listClusters = function (callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/clusters',\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * List the userIDs\n *\n * (the callback is the second argument)\n *\n * @param {string} data.hitsPerPage How many hits on every page\n * @param {string} data.page The page to retrieve\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.listClusters();\n * client.listClusters({ page: 3, hitsPerPage: 30});\n */\n\n\nAlgoliaSearch.prototype.listUserIDs = function (data, callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/clusters/mapping',\n body: data,\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * Remove an userID\n *\n * @param {string} data.userID The userID to assign to a new cluster\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.removeUserID({ userID: 'some-user' });\n */\n\n\nAlgoliaSearch.prototype.removeUserID = function (data, callback) {\n if (!data.userID) {\n throw new errors.AlgoliaSearchError('You have to provide a userID', {\n debugData: data\n });\n }\n\n return this._jsonRequest({\n method: 'DELETE',\n url: '/1/clusters/mapping',\n hostType: 'write',\n callback: callback,\n headers: {\n 'x-algolia-user-id': data.userID\n }\n });\n};\n/**\n * Search for userIDs\n *\n * @param {string} data.cluster The cluster to target\n * @param {string} data.query The query to execute\n * @param {string} data.hitsPerPage How many hits on every page\n * @param {string} data.page The page to retrieve\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.searchUserIDs({ cluster: 'c1-test', query: 'some-user' });\n * client.searchUserIDs({\n * cluster: \"c1-test\",\n * query: \"some-user\",\n * page: 3,\n * hitsPerPage: 2\n * });\n */\n\n\nAlgoliaSearch.prototype.searchUserIDs = function (data, callback) {\n return this._jsonRequest({\n method: 'POST',\n url: '/1/clusters/mapping/search',\n body: data,\n hostType: 'read',\n callback: callback\n });\n};\n/**\n * Set strategy for personalization\n *\n * @param {Object} data\n * @param {Object} data.eventsScoring Associate a score to an event\n * @param {Object} data.eventsScoring.<eventName> The name of the event\n * @param {Number} data.eventsScoring.<eventName>.score The score to associate to <eventName>\n * @param {String} data.eventsScoring.<eventName>.type Either \"click\", \"conversion\" or \"view\"\n * @param {Object} data.facetsScoring Associate a score to a facet\n * @param {Object} data.facetsScoring.<facetName> The name of the facet\n * @param {Number} data.facetsScoring.<facetName>.score The score to associate to <facetName>\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.setPersonalizationStrategy({\n * eventsScoring: {\n * \"Add to cart\": { score: 50, type: \"conversion\" },\n * Purchase: { score: 100, type: \"conversion\" }\n * },\n * facetsScoring: {\n * brand: { score: 100 },\n * categories: { score: 10 }\n * }\n * });\n */\n\n\nAlgoliaSearch.prototype.setPersonalizationStrategy = function (data, callback) {\n return this._jsonRequest({\n method: 'POST',\n url: '/1/recommendation/personalization/strategy',\n body: data,\n hostType: 'write',\n callback: callback\n });\n};\n/**\n * Get strategy for personalization\n *\n * @return {Promise|undefined} Returns a promise if no callback given\n * @example\n * client.getPersonalizationStrategy();\n */\n\n\nAlgoliaSearch.prototype.getPersonalizationStrategy = function (callback) {\n return this._jsonRequest({\n method: 'GET',\n url: '/1/recommendation/personalization/strategy',\n hostType: 'read',\n callback: callback\n });\n}; // environment specific methods\n\n\nAlgoliaSearch.prototype.destroy = notImplemented;\nAlgoliaSearch.prototype.enableRateLimitForward = notImplemented;\nAlgoliaSearch.prototype.disableRateLimitForward = notImplemented;\nAlgoliaSearch.prototype.useSecuredAPIKey = notImplemented;\nAlgoliaSearch.prototype.disableSecuredAPIKey = notImplemented;\nAlgoliaSearch.prototype.generateSecuredApiKey = notImplemented;\nAlgoliaSearch.prototype.getSecuredApiKeyRemainingValidity = notImplemented;\n\nfunction notImplemented() {\n var message = 'Not implemented in this environment.\\n' + 'If you feel this is a mistake, write to support@algolia.com';\n throw new errors.AlgoliaSearchError(message);\n}","'use strict';\n/* Expose. */\n\nmodule.exports = visitParents;\n/* Visit. */\n\nfunction visitParents(tree, type, visitor) {\n var stack = [];\n\n if (typeof type === 'function') {\n visitor = type;\n type = null;\n }\n\n one(tree);\n /* Visit a single node. */\n\n function one(node) {\n var result;\n\n if (!type || node.type === type) {\n result = visitor(node, stack.concat());\n }\n\n if (node.children && result !== false) {\n return all(node.children, node);\n }\n\n return result;\n }\n /* Visit children in `parent`. */\n\n\n function all(children, parent) {\n var length = children.length;\n var index = -1;\n var child;\n stack.push(parent);\n\n while (++index < length) {\n child = children[index];\n\n if (child && one(child) === false) {\n return false;\n }\n }\n\n stack.pop();\n return true;\n }\n}","'use strict';\n\nvar openCloseTag = require('../util/html').openCloseTag;\n\nmodule.exports = blockHTML;\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_NEWLINE = '\\n';\nvar C_LT = '<';\n\nfunction blockHTML(eat, value, silent) {\n var self = this;\n var blocks = self.options.blocks;\n var length = value.length;\n var index = 0;\n var next;\n var line;\n var offset;\n var character;\n var count;\n var sequence;\n var subvalue;\n var sequences = [[/^<(script|pre|style)(?=(\\s|>|$))/i, /<\\/(script|pre|style)>/i, true], [/^<!--/, /-->/, true], [/^<\\?/, /\\?>/, true], [/^<![A-Za-z]/, />/, true], [/^<!\\[CDATA\\[/, /\\]\\]>/, true], [new RegExp('^</?(' + blocks.join('|') + ')(?=(\\\\s|/?>|$))', 'i'), /^$/, true], [new RegExp(openCloseTag.source + '\\\\s*$'), /^$/, false]];\n /* Eat initial spacing. */\n\n while (index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n index++;\n }\n\n if (value.charAt(index) !== C_LT) {\n return;\n }\n\n next = value.indexOf(C_NEWLINE, index + 1);\n next = next === -1 ? length : next;\n line = value.slice(index, next);\n offset = -1;\n count = sequences.length;\n\n while (++offset < count) {\n if (sequences[offset][0].test(line)) {\n sequence = sequences[offset];\n break;\n }\n }\n\n if (!sequence) {\n return;\n }\n\n if (silent) {\n return sequence[2];\n }\n\n index = next;\n\n if (!sequence[1].test(line)) {\n while (index < length) {\n next = value.indexOf(C_NEWLINE, index + 1);\n next = next === -1 ? length : next;\n line = value.slice(index + 1, next);\n\n if (sequence[1].test(line)) {\n if (line) {\n index = next;\n }\n\n break;\n }\n\n index = next;\n }\n }\n\n subvalue = value.slice(0, index);\n return eat(subvalue)({\n type: 'html',\n value: subvalue\n });\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('<', fromIndex);\n}","'use strict';\n\nmodule.exports = factory;\n/* Factory to de-escape a value, based on a list at `key`\n * in `ctx`. */\n\nfunction factory(ctx, key) {\n return unescape;\n /* De-escape a string using the expression at `key`\n * in `ctx`. */\n\n function unescape(value) {\n var prev = 0;\n var index = value.indexOf('\\\\');\n var escape = ctx[key];\n var queue = [];\n var character;\n\n while (index !== -1) {\n queue.push(value.slice(prev, index));\n prev = index + 1;\n character = value.charAt(prev);\n /* If the following character is not a valid escape,\n * add the slash. */\n\n if (!character || escape.indexOf(character) === -1) {\n queue.push('\\\\');\n }\n\n index = value.indexOf('\\\\', prev);\n }\n\n queue.push(value.slice(prev));\n return queue.join('');\n }\n}","import React, { useRef, useState, useMemo, useEffect, memo, useContext, Children } from 'react';\nimport { useDescendantsInit, DescendantProvider, useDescendant, createDescendantContext, useDescendants, useDescendantKeyDown } from '@reach/descendants';\nimport { forwardRefWithAs, useControlledSwitchWarning, makeId, useControlledState, noop, checkStyles, isFunction, isNumber, useForkedRef, useUpdateEffect, useEventCallback, wrapEvent, createNamedContext, getElementComputedStyle, useIsomorphicLayoutEffect, boolOrBoolString, cloneValidElement } from '@reach/utils';\nimport { useId } from '@reach/auto-id';\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nvar TabsDescendantsContext = /*#__PURE__*/createDescendantContext(\"TabsDescendantsContext\");\nvar TabPanelDescendantsContext = /*#__PURE__*/createDescendantContext(\"TabPanelDescendantsContext\");\nvar TabsContext = /*#__PURE__*/createNamedContext(\"TabsContext\", {});\nvar TabsKeyboardActivation;\n\n(function (TabsKeyboardActivation) {\n TabsKeyboardActivation[\"Auto\"] = \"auto\";\n TabsKeyboardActivation[\"Manual\"] = \"manual\";\n})(TabsKeyboardActivation || (TabsKeyboardActivation = {}));\n\nvar TabsOrientation;\n\n(function (TabsOrientation) {\n TabsOrientation[\"Horizontal\"] = \"horizontal\";\n TabsOrientation[\"Vertical\"] = \"vertical\";\n})(TabsOrientation || (TabsOrientation = {})); ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * Tabs\r\n *\r\n * The parent component of the tab interface.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#tabs\r\n */\n\n\nvar Tabs = /*#__PURE__*/forwardRefWithAs(function Tabs(_ref, ref) {\n var _props$id;\n\n var _ref$as = _ref.as,\n Comp = _ref$as === void 0 ? \"div\" : _ref$as,\n children = _ref.children,\n defaultIndex = _ref.defaultIndex,\n _ref$orientation = _ref.orientation,\n orientation = _ref$orientation === void 0 ? TabsOrientation.Horizontal : _ref$orientation,\n _ref$index = _ref.index,\n controlledIndex = _ref$index === void 0 ? undefined : _ref$index,\n _ref$keyboardActivati = _ref.keyboardActivation,\n keyboardActivation = _ref$keyboardActivati === void 0 ? TabsKeyboardActivation.Auto : _ref$keyboardActivati,\n onChange = _ref.onChange,\n _ref$readOnly = _ref.readOnly,\n readOnly = _ref$readOnly === void 0 ? false : _ref$readOnly,\n props = _objectWithoutPropertiesLoose(_ref, [\"as\", \"children\", \"defaultIndex\", \"orientation\", \"index\", \"keyboardActivation\", \"onChange\", \"readOnly\"]);\n\n var isControlled = useRef(controlledIndex != null);\n useControlledSwitchWarning(controlledIndex, \"index\", \"Tabs\");\n\n var _id = useId(props.id);\n\n var id = (_props$id = props.id) !== null && _props$id !== void 0 ? _props$id : makeId(\"tabs\", _id); // We only manage focus if the user caused the update vs. a new controlled\n // index coming in.\n\n var userInteractedRef = useRef(false);\n var selectedPanelRef = useRef(null);\n var isRTL = useRef(false);\n\n var _useControlledState = useControlledState(controlledIndex, defaultIndex !== null && defaultIndex !== void 0 ? defaultIndex : 0),\n selectedIndex = _useControlledState[0],\n setSelectedIndex = _useControlledState[1];\n\n var _useState = useState(-1),\n focusedIndex = _useState[0],\n setFocusedIndex = _useState[1];\n\n var _useDescendantsInit = useDescendantsInit(),\n tabs = _useDescendantsInit[0],\n setTabs = _useDescendantsInit[1];\n\n var context = useMemo(function () {\n return {\n focusedIndex: focusedIndex,\n id: id,\n isControlled: isControlled.current,\n isRTL: isRTL,\n keyboardActivation: keyboardActivation,\n onFocusPanel: function onFocusPanel() {\n var _selectedPanelRef$cur;\n\n (_selectedPanelRef$cur = selectedPanelRef.current) === null || _selectedPanelRef$cur === void 0 ? void 0 : _selectedPanelRef$cur.focus();\n },\n onSelectTab: readOnly ? noop : function (index) {\n userInteractedRef.current = true;\n onChange && onChange(index);\n setSelectedIndex(index);\n },\n onSelectTabWithKeyboard: readOnly ? noop : function (index) {\n var _tabs$index$element;\n\n userInteractedRef.current = true;\n\n switch (keyboardActivation) {\n case TabsKeyboardActivation.Manual:\n (_tabs$index$element = tabs[index].element) === null || _tabs$index$element === void 0 ? void 0 : _tabs$index$element.focus();\n return;\n\n case TabsKeyboardActivation.Auto:\n default:\n onChange && onChange(index);\n setSelectedIndex(index);\n return;\n }\n },\n orientation: orientation,\n selectedIndex: selectedIndex,\n selectedPanelRef: selectedPanelRef,\n setFocusedIndex: setFocusedIndex,\n setSelectedIndex: setSelectedIndex,\n userInteractedRef: userInteractedRef\n };\n }, [focusedIndex, id, keyboardActivation, onChange, orientation, readOnly, selectedIndex, setSelectedIndex, tabs]);\n useEffect(function () {\n return checkStyles(\"tabs\");\n }, []);\n return React.createElement(DescendantProvider, {\n context: TabsDescendantsContext,\n items: tabs,\n set: setTabs\n }, React.createElement(TabsContext.Provider, {\n value: context\n }, React.createElement(Comp, Object.assign({}, props, {\n ref: ref,\n \"data-reach-tabs\": \"\",\n \"data-orientation\": orientation,\n id: props.id\n }), isFunction(children) ? children({\n focusedIndex: focusedIndex,\n id: id,\n selectedIndex: selectedIndex\n }) : children)));\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n Tabs.displayName = \"Tabs\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * TabList\r\n *\r\n * The parent component of the tabs.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#tablist\r\n */\n\n\nvar TabListImpl = /*#__PURE__*/forwardRefWithAs(function TabList(_ref2, forwardedRef) {\n var children = _ref2.children,\n _ref2$as = _ref2.as,\n Comp = _ref2$as === void 0 ? \"div\" : _ref2$as,\n onKeyDown = _ref2.onKeyDown,\n props = _objectWithoutPropertiesLoose(_ref2, [\"children\", \"as\", \"onKeyDown\"]);\n\n var _useContext = useContext(TabsContext),\n focusedIndex = _useContext.focusedIndex,\n isControlled = _useContext.isControlled,\n isRTL = _useContext.isRTL,\n keyboardActivation = _useContext.keyboardActivation,\n onSelectTabWithKeyboard = _useContext.onSelectTabWithKeyboard,\n orientation = _useContext.orientation,\n selectedIndex = _useContext.selectedIndex,\n setSelectedIndex = _useContext.setSelectedIndex;\n\n var tabs = useDescendants(TabsDescendantsContext);\n var ownRef = useRef(null);\n var ref = useForkedRef(forwardedRef, ownRef);\n useEffect(function () {\n if (ownRef.current && (ownRef.current.ownerDocument && ownRef.current.ownerDocument.dir === \"rtl\" || getElementComputedStyle(ownRef.current, \"direction\") === \"rtl\")) {\n isRTL.current = true;\n }\n }, [isRTL]);\n var handleKeyDown = useEventCallback(wrapEvent(onKeyDown, useDescendantKeyDown(TabsDescendantsContext, {\n currentIndex: keyboardActivation === TabsKeyboardActivation.Manual ? focusedIndex : selectedIndex,\n orientation: orientation,\n rotate: true,\n callback: onSelectTabWithKeyboard,\n filter: function filter(tab) {\n return !tab.disabled;\n },\n rtl: isRTL.current\n })));\n useIsomorphicLayoutEffect(function () {\n var _tabs$selectedIndex; // In the event an uncontrolled component's selected index is disabled,\n // (this should only happen if the first tab is disabled and no default\n // index is set), we need to override the selection to the next selectable\n // index value.\n\n\n if (!isControlled && boolOrBoolString((_tabs$selectedIndex = tabs[selectedIndex]) === null || _tabs$selectedIndex === void 0 ? void 0 : _tabs$selectedIndex.disabled)) {\n var next = tabs.find(function (tab) {\n return !tab.disabled;\n });\n\n if (next) {\n setSelectedIndex(next.index);\n }\n }\n }, [tabs, isControlled, selectedIndex, setSelectedIndex]);\n return React.createElement(Comp // The element that serves as the container for the set of tabs has role\n // `tablist`\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tabpanel\n , Object.assign({\n // The element that serves as the container for the set of tabs has role\n // `tablist`\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tabpanel\n role: \"tablist\",\n \"aria-orientation\": orientation\n }, props, {\n \"data-reach-tab-list\": \"\",\n ref: ref,\n onKeyDown: handleKeyDown\n }), Children.map(children, function (child, index) {\n // TODO: Remove in 1.0\n return cloneValidElement(child, {\n isSelected: index === selectedIndex\n });\n }));\n});\nvar TabList = /*#__PURE__*/memo(TabListImpl);\n\nif (process.env.NODE_ENV !== \"production\") {\n TabList.displayName = \"TabList\";\n TabListImpl.displayName = \"TabList\";\n}\n/**\r\n * Tab\r\n *\r\n * The interactive element that changes the selected panel.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#tab\r\n */\n\n\nvar Tab = /*#__PURE__*/forwardRefWithAs(function Tab(_ref3, forwardedRef) {\n var children = _ref3.children,\n _ = _ref3.isSelected,\n _ref3$as = _ref3.as,\n Comp = _ref3$as === void 0 ? \"button\" : _ref3$as,\n indexProp = _ref3.index,\n disabled = _ref3.disabled,\n onBlur = _ref3.onBlur,\n onFocus = _ref3.onFocus,\n props = _objectWithoutPropertiesLoose(_ref3, [\"children\", \"isSelected\", \"as\", \"index\", \"disabled\", \"onBlur\", \"onFocus\"]);\n\n var _useContext2 = useContext(TabsContext),\n tabsId = _useContext2.id,\n onSelectTab = _useContext2.onSelectTab,\n orientation = _useContext2.orientation,\n selectedIndex = _useContext2.selectedIndex,\n userInteractedRef = _useContext2.userInteractedRef,\n setFocusedIndex = _useContext2.setFocusedIndex;\n\n var ownRef = useRef(null);\n var ref = useForkedRef(forwardedRef, ownRef);\n var index = useDescendant({\n element: ownRef.current,\n disabled: !!disabled\n }, TabsDescendantsContext, indexProp);\n var htmlType = Comp === \"button\" && props.type == null ? \"button\" : props.type;\n var isSelected = index === selectedIndex;\n\n function onSelect() {\n onSelectTab(index);\n }\n\n useUpdateEffect(function () {\n if (isSelected && ownRef.current && userInteractedRef.current) {\n userInteractedRef.current = false;\n ownRef.current.focus();\n }\n }, [isSelected, userInteractedRef]);\n var handleFocus = useEventCallback(wrapEvent(onFocus, function () {\n setFocusedIndex(index);\n }));\n var handleBlur = useEventCallback(wrapEvent(onFocus, function () {\n setFocusedIndex(-1);\n }));\n return React.createElement(Comp // Each element with role `tab` has the property `aria-controls` referring\n // to its associated `tabpanel` element.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tabpanel\n , Object.assign({\n \"aria-controls\": makeId(tabsId, \"panel\", index),\n \"aria-disabled\": disabled,\n \"aria-selected\": isSelected,\n // Each element that serves as a tab has role `tab` and is contained\n // within the element with role `tablist`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tabpanel\n role: \"tab\",\n tabIndex: isSelected ? 0 : -1\n }, props, {\n ref: ref,\n \"data-reach-tab\": \"\",\n \"data-orientation\": orientation,\n \"data-selected\": isSelected ? \"\" : undefined,\n disabled: disabled,\n id: makeId(tabsId, \"tab\", index),\n onClick: onSelect,\n onFocus: handleFocus,\n onBlur: handleBlur,\n type: htmlType\n }), children);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n Tab.displayName = \"Tab\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * TabPanels\r\n *\r\n * The parent component of the panels.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#tabpanels\r\n */\n\n\nvar TabPanelsImpl = /*#__PURE__*/forwardRefWithAs(function TabPanels(_ref4, forwardedRef) {\n var children = _ref4.children,\n _ref4$as = _ref4.as,\n Comp = _ref4$as === void 0 ? \"div\" : _ref4$as,\n props = _objectWithoutPropertiesLoose(_ref4, [\"children\", \"as\"]);\n\n var ownRef = useRef();\n var ref = useForkedRef(ownRef, forwardedRef);\n\n var _useDescendantsInit2 = useDescendantsInit(),\n tabPanels = _useDescendantsInit2[0],\n setTabPanels = _useDescendantsInit2[1];\n\n return React.createElement(DescendantProvider, {\n context: TabPanelDescendantsContext,\n items: tabPanels,\n set: setTabPanels\n }, React.createElement(Comp, Object.assign({}, props, {\n ref: ref,\n \"data-reach-tab-panels\": \"\"\n }), children));\n});\nvar TabPanels = /*#__PURE__*/memo(TabPanelsImpl);\n\nif (process.env.NODE_ENV !== \"production\") {\n TabPanels.displayName = \"TabPanels\";\n TabPanelsImpl.displayName = \"TabPanels\";\n}\n/**\r\n * TabPanel\r\n *\r\n * The panel that displays when it's corresponding tab is active.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#tabpanel\r\n */\n\n\nvar TabPanel = /*#__PURE__*/forwardRefWithAs(function TabPanel(_ref5, forwardedRef) {\n var children = _ref5.children,\n ariaLabel = _ref5[\"aria-label\"],\n _ref5$as = _ref5.as,\n Comp = _ref5$as === void 0 ? \"div\" : _ref5$as,\n props = _objectWithoutPropertiesLoose(_ref5, [\"children\", \"aria-label\", \"as\"]);\n\n var _useContext3 = useContext(TabsContext),\n selectedPanelRef = _useContext3.selectedPanelRef,\n selectedIndex = _useContext3.selectedIndex,\n tabsId = _useContext3.id;\n\n var ownRef = useRef(null);\n var index = useDescendant({\n element: ownRef.current\n }, TabPanelDescendantsContext);\n var isSelected = index === selectedIndex;\n var id = makeId(tabsId, \"panel\", index);\n var ref = useForkedRef(forwardedRef, ownRef, isSelected ? selectedPanelRef : null);\n return React.createElement(Comp // Each element with role `tabpanel` has the property `aria-labelledby`\n // referring to its associated tab element.\n , Object.assign({\n \"aria-labelledby\": makeId(tabsId, \"tab\", index),\n hidden: !isSelected,\n // Each element that contains the content panel for a tab has role\n // `tabpanel`.\n // https://www.w3.org/TR/wai-aria-practices-1.2/#tabpanel\n role: \"tabpanel\",\n tabIndex: isSelected ? 0 : -1\n }, props, {\n ref: ref,\n \"data-reach-tab-panel\": \"\",\n id: id\n }), children);\n});\n\nif (process.env.NODE_ENV !== \"production\") {\n TabPanel.displayName = \"TabPanel\";\n} ////////////////////////////////////////////////////////////////////////////////\n\n/**\r\n * A hook that exposes data for a given `Tabs` component to its descendants.\r\n *\r\n * @see Docs https://reacttraining.com/reach-ui/tabs#usetabscontext\r\n */\n\n\nfunction useTabsContext() {\n var _useContext4 = useContext(TabsContext),\n focusedIndex = _useContext4.focusedIndex,\n id = _useContext4.id,\n selectedIndex = _useContext4.selectedIndex;\n\n return useMemo(function () {\n return {\n focusedIndex: focusedIndex,\n id: id,\n selectedIndex: selectedIndex\n };\n }, [focusedIndex, id, selectedIndex]);\n}\n\nexport { Tab, TabList, TabPanel, TabPanels, Tabs, TabsKeyboardActivation, TabsOrientation, useTabsContext };","'use strict';\n\nmodule.exports = atxHeading;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_HASH = '#';\nvar MAX_ATX_COUNT = 6;\n\nfunction atxHeading(eat, value, silent) {\n var self = this;\n var settings = self.options;\n var length = value.length + 1;\n var index = -1;\n var now = eat.now();\n var subvalue = '';\n var content = '';\n var character;\n var queue;\n var depth;\n /* Eat initial spacing. */\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n index--;\n break;\n }\n\n subvalue += character;\n }\n /* Eat hashes. */\n\n\n depth = 0;\n\n while (++index <= length) {\n character = value.charAt(index);\n\n if (character !== C_HASH) {\n index--;\n break;\n }\n\n subvalue += character;\n depth++;\n }\n\n if (depth > MAX_ATX_COUNT) {\n return;\n }\n\n if (!depth || !settings.pedantic && value.charAt(index + 1) === C_HASH) {\n return;\n }\n\n length = value.length + 1;\n /* Eat intermediate white-space. */\n\n queue = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_SPACE && character !== C_TAB) {\n index--;\n break;\n }\n\n queue += character;\n }\n /* Exit when not in pedantic mode without spacing. */\n\n\n if (!settings.pedantic && queue.length === 0 && character && character !== C_NEWLINE) {\n return;\n }\n\n if (silent) {\n return true;\n }\n /* Eat content. */\n\n\n subvalue += queue;\n queue = '';\n content = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (!character || character === C_NEWLINE) {\n break;\n }\n\n if (character !== C_SPACE && character !== C_TAB && character !== C_HASH) {\n content += queue + character;\n queue = '';\n continue;\n }\n\n while (character === C_SPACE || character === C_TAB) {\n queue += character;\n character = value.charAt(++index);\n }\n\n while (character === C_HASH) {\n queue += character;\n character = value.charAt(++index);\n }\n\n while (character === C_SPACE || character === C_TAB) {\n queue += character;\n character = value.charAt(++index);\n }\n\n index--;\n }\n\n now.column += subvalue.length;\n now.offset += subvalue.length;\n subvalue += content + queue;\n return eat(subvalue)({\n type: 'heading',\n depth: depth,\n children: self.tokenizeInline(content, now)\n });\n}","/**\r\n * Prism: Lightweight, robust, elegant syntax highlighting\r\n * MIT license http://www.opensource.org/licenses/mit-license.php/\r\n * @author Lea Verou http://lea.verou.me\r\n */\n\n/**\r\n * prism-react-renderer:\r\n * This file has been modified to remove:\r\n * - globals and window dependency\r\n * - worker support\r\n * - highlightAll and other element dependent methods\r\n * - _.hooks helpers\r\n * - UMD/node-specific hacks\r\n * It has also been run through prettier\r\n */\nvar Prism = function () {\n var uniqueId = 0;\n var _ = {\n util: {\n encode: function encode(tokens) {\n if (tokens instanceof Token) {\n return new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n } else if (_.util.type(tokens) === \"Array\") {\n return tokens.map(_.util.encode);\n } else {\n return tokens.replace(/&/g, \"&\").replace(/</g, \"<\").replace(/\\u00a0/g, \" \");\n }\n },\n type: function type(o) {\n return Object.prototype.toString.call(o).match(/\\[object (\\w+)\\]/)[1];\n },\n objId: function objId(obj) {\n if (!obj[\"__id\"]) {\n Object.defineProperty(obj, \"__id\", {\n value: ++uniqueId\n });\n }\n\n return obj[\"__id\"];\n },\n // Deep clone a language definition (e.g. to extend it)\n clone: function clone(o, visited) {\n var type = _.util.type(o);\n\n visited = visited || {};\n\n switch (type) {\n case \"Object\":\n if (visited[_.util.objId(o)]) {\n return visited[_.util.objId(o)];\n }\n\n var clone = {};\n visited[_.util.objId(o)] = clone;\n\n for (var key in o) {\n if (o.hasOwnProperty(key)) {\n clone[key] = _.util.clone(o[key], visited);\n }\n }\n\n return clone;\n\n case \"Array\":\n if (visited[_.util.objId(o)]) {\n return visited[_.util.objId(o)];\n }\n\n var clone = [];\n visited[_.util.objId(o)] = clone;\n o.forEach(function (v, i) {\n clone[i] = _.util.clone(v, visited);\n });\n return clone;\n }\n\n return o;\n }\n },\n languages: {\n extend: function extend(id, redef) {\n var lang = _.util.clone(_.languages[id]);\n\n for (var key in redef) {\n lang[key] = redef[key];\n }\n\n return lang;\n },\n\n /**\r\n * Insert a token before another token in a language literal\r\n * As this needs to recreate the object (we cannot actually insert before keys in object literals),\r\n * we cannot just provide an object, we need anobject and a key.\r\n * @param inside The key (or language id) of the parent\r\n * @param before The key to insert before. If not provided, the function appends instead.\r\n * @param insert Object with the key/value pairs to insert\r\n * @param root The object that contains `inside`. If equal to Prism.languages, it can be omitted.\r\n */\n insertBefore: function insertBefore(inside, before, insert, root) {\n root = root || _.languages;\n var grammar = root[inside];\n\n if (arguments.length == 2) {\n insert = arguments[1];\n\n for (var newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n grammar[newToken] = insert[newToken];\n }\n }\n\n return grammar;\n }\n\n var ret = {};\n\n for (var token in grammar) {\n if (grammar.hasOwnProperty(token)) {\n if (token == before) {\n for (var newToken in insert) {\n if (insert.hasOwnProperty(newToken)) {\n ret[newToken] = insert[newToken];\n }\n }\n }\n\n ret[token] = grammar[token];\n }\n } // Update references in other language definitions\n\n\n _.languages.DFS(_.languages, function (key, value) {\n if (value === root[inside] && key != inside) {\n this[key] = ret;\n }\n });\n\n return root[inside] = ret;\n },\n // Traverse a language definition with Depth First Search\n DFS: function DFS(o, callback, type, visited) {\n visited = visited || {};\n\n for (var i in o) {\n if (o.hasOwnProperty(i)) {\n callback.call(o, i, o[i], type || i);\n\n if (_.util.type(o[i]) === \"Object\" && !visited[_.util.objId(o[i])]) {\n visited[_.util.objId(o[i])] = true;\n\n _.languages.DFS(o[i], callback, null, visited);\n } else if (_.util.type(o[i]) === \"Array\" && !visited[_.util.objId(o[i])]) {\n visited[_.util.objId(o[i])] = true;\n\n _.languages.DFS(o[i], callback, i, visited);\n }\n }\n }\n }\n },\n plugins: {},\n highlight: function highlight(text, grammar, language) {\n var env = {\n code: text,\n grammar: grammar,\n language: language\n };\n env.tokens = _.tokenize(env.code, env.grammar);\n return Token.stringify(_.util.encode(env.tokens), env.language);\n },\n matchGrammar: function matchGrammar(text, strarr, grammar, index, startPos, oneshot, target) {\n var Token = _.Token;\n\n for (var token in grammar) {\n if (!grammar.hasOwnProperty(token) || !grammar[token]) {\n continue;\n }\n\n if (token == target) {\n return;\n }\n\n var patterns = grammar[token];\n patterns = _.util.type(patterns) === \"Array\" ? patterns : [patterns];\n\n for (var j = 0; j < patterns.length; ++j) {\n var pattern = patterns[j],\n inside = pattern.inside,\n lookbehind = !!pattern.lookbehind,\n greedy = !!pattern.greedy,\n lookbehindLength = 0,\n alias = pattern.alias;\n\n if (greedy && !pattern.pattern.global) {\n // Without the global flag, lastIndex won't work\n var flags = pattern.pattern.toString().match(/[imuy]*$/)[0];\n pattern.pattern = RegExp(pattern.pattern.source, flags + \"g\");\n }\n\n pattern = pattern.pattern || pattern; // Don’t cache length as it changes during the loop\n\n for (var i = index, pos = startPos; i < strarr.length; pos += strarr[i].length, ++i) {\n var str = strarr[i];\n\n if (strarr.length > text.length) {\n // Something went terribly wrong, ABORT, ABORT!\n return;\n }\n\n if (str instanceof Token) {\n continue;\n }\n\n if (greedy && i != strarr.length - 1) {\n pattern.lastIndex = pos;\n var match = pattern.exec(text);\n\n if (!match) {\n break;\n }\n\n var from = match.index + (lookbehind ? match[1].length : 0),\n to = match.index + match[0].length,\n k = i,\n p = pos;\n\n for (var len = strarr.length; k < len && (p < to || !strarr[k].type && !strarr[k - 1].greedy); ++k) {\n p += strarr[k].length; // Move the index i to the element in strarr that is closest to from\n\n if (from >= p) {\n ++i;\n pos = p;\n }\n } // If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\n\n if (strarr[i] instanceof Token) {\n continue;\n } // Number of tokens to delete and replace with the new match\n\n\n delNum = k - i;\n str = text.slice(pos, p);\n match.index -= pos;\n } else {\n pattern.lastIndex = 0;\n var match = pattern.exec(str),\n delNum = 1;\n }\n\n if (!match) {\n if (oneshot) {\n break;\n }\n\n continue;\n }\n\n if (lookbehind) {\n lookbehindLength = match[1] ? match[1].length : 0;\n }\n\n var from = match.index + lookbehindLength,\n match = match[0].slice(lookbehindLength),\n to = from + match.length,\n before = str.slice(0, from),\n after = str.slice(to);\n var args = [i, delNum];\n\n if (before) {\n ++i;\n pos += before.length;\n args.push(before);\n }\n\n var wrapped = new Token(token, inside ? _.tokenize(match, inside) : match, alias, match, greedy);\n args.push(wrapped);\n\n if (after) {\n args.push(after);\n }\n\n Array.prototype.splice.apply(strarr, args);\n\n if (delNum != 1) {\n _.matchGrammar(text, strarr, grammar, i, pos, true, token);\n }\n\n if (oneshot) {\n break;\n }\n }\n }\n }\n },\n hooks: {\n add: function add() {}\n },\n tokenize: function tokenize(text, grammar, language) {\n var strarr = [text];\n var rest = grammar.rest;\n\n if (rest) {\n for (var token in rest) {\n grammar[token] = rest[token];\n }\n\n delete grammar.rest;\n }\n\n _.matchGrammar(text, strarr, grammar, 0, 0, false);\n\n return strarr;\n }\n };\n\n var Token = _.Token = function (type, content, alias, matchedStr, greedy) {\n this.type = type;\n this.content = content;\n this.alias = alias; // Copy of the full string this token was created from\n\n this.length = (matchedStr || \"\").length | 0;\n this.greedy = !!greedy;\n };\n\n Token.stringify = function (o, language, parent) {\n if (typeof o == \"string\") {\n return o;\n }\n\n if (_.util.type(o) === \"Array\") {\n return o.map(function (element) {\n return Token.stringify(element, language, o);\n }).join(\"\");\n }\n\n var env = {\n type: o.type,\n content: Token.stringify(o.content, language, parent),\n tag: \"span\",\n classes: [\"token\", o.type],\n attributes: {},\n language: language,\n parent: parent\n };\n\n if (o.alias) {\n var aliases = _.util.type(o.alias) === \"Array\" ? o.alias : [o.alias];\n Array.prototype.push.apply(env.classes, aliases);\n }\n\n var attributes = Object.keys(env.attributes).map(function (name) {\n return name + '=\"' + (env.attributes[name] || \"\").replace(/\"/g, \""\") + '\"';\n }).join(\" \");\n return \"<\" + env.tag + ' class=\"' + env.classes.join(\" \") + '\"' + (attributes ? \" \" + attributes : \"\") + \">\" + env.content + \"</\" + env.tag + \">\";\n };\n\n return _;\n}();\n/* This content is auto-generated to include some prismjs language components: */\n\n/* \"prismjs/components/prism-markup\" */\n\n\nPrism.languages.markup = {\n 'comment': /<!--[\\s\\S]*?-->/,\n 'prolog': /<\\?[\\s\\S]+?\\?>/,\n 'doctype': /<!DOCTYPE[\\s\\S]+?>/i,\n 'cdata': /<!\\[CDATA\\[[\\s\\S]*?]]>/i,\n 'tag': {\n pattern: /<\\/?(?!\\d)[^\\s>\\/=$<%]+(?:\\s(?:\\s*[^\\s>\\/=]+(?:\\s*=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+(?=[\\s>]))|(?=[\\s/>])))+)?\\s*\\/?>/i,\n greedy: true,\n inside: {\n 'tag': {\n pattern: /^<\\/?[^\\s>\\/]+/i,\n inside: {\n 'punctuation': /^<\\/?/,\n 'namespace': /^[^\\s>\\/:]+:/\n }\n },\n 'attr-value': {\n pattern: /=\\s*(?:\"[^\"]*\"|'[^']*'|[^\\s'\">=]+)/i,\n inside: {\n 'punctuation': [/^=/, {\n pattern: /^(\\s*)[\"']|[\"']$/,\n lookbehind: true\n }]\n }\n },\n 'punctuation': /\\/?>/,\n 'attr-name': {\n pattern: /[^\\s>\\/]+/,\n inside: {\n 'namespace': /^[^\\s>\\/:]+:/\n }\n }\n }\n },\n 'entity': /&#?[\\da-z]{1,8};/i\n};\nPrism.languages.markup['tag'].inside['attr-value'].inside['entity'] = Prism.languages.markup['entity']; // Plugin to make entity title show the real entity, idea by Roman Komarov\n\nPrism.hooks.add('wrap', function (env) {\n if (env.type === 'entity') {\n env.attributes['title'] = env.content.replace(/&/, '&');\n }\n});\nObject.defineProperty(Prism.languages.markup.tag, 'addInlined', {\n /**\n * Adds an inlined language to markup.\n *\n * An example of an inlined language is CSS with `<style>` tags.\n *\n * @param {string} tagName The name of the tag that contains the inlined language. This name will be treated as\n * case insensitive.\n * @param {string} lang The language key.\n * @example\n * addInlined('style', 'css');\n */\n value: function addInlined(tagName, lang) {\n var includedCdataInside = {};\n includedCdataInside['language-' + lang] = {\n pattern: /(^<!\\[CDATA\\[)[\\s\\S]+?(?=\\]\\]>$)/i,\n lookbehind: true,\n inside: Prism.languages[lang]\n };\n includedCdataInside['cdata'] = /^<!\\[CDATA\\[|\\]\\]>$/i;\n var inside = {\n 'included-cdata': {\n pattern: /<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/i,\n inside: includedCdataInside\n }\n };\n inside['language-' + lang] = {\n pattern: /[\\s\\S]+/,\n inside: Prism.languages[lang]\n };\n var def = {};\n def[tagName] = {\n pattern: RegExp(/(<__[\\s\\S]*?>)(?:<!\\[CDATA\\[[\\s\\S]*?\\]\\]>\\s*|[\\s\\S])*?(?=<\\/__>)/.source.replace(/__/g, tagName), 'i'),\n lookbehind: true,\n greedy: true,\n inside: inside\n };\n Prism.languages.insertBefore('markup', 'cdata', def);\n }\n});\nPrism.languages.xml = Prism.languages.extend('markup', {});\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n/* \"prismjs/components/prism-bash\" */\n\n(function (Prism) {\n // $ set | grep '^[A-Z][^[:space:]]*=' | cut -d= -f1 | tr '\\n' '|'\n // + LC_ALL, RANDOM, REPLY, SECONDS.\n // + make sure PS1..4 are here as they are not always set,\n // - some useless things.\n var envVars = '\\\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\\\b';\n var insideString = {\n 'environment': {\n pattern: RegExp(\"\\\\$\" + envVars),\n alias: 'constant'\n },\n 'variable': [// [0]: Arithmetic Environment\n {\n pattern: /\\$?\\(\\([\\s\\S]+?\\)\\)/,\n greedy: true,\n inside: {\n // If there is a $ sign at the beginning highlight $(( and )) as variable\n 'variable': [{\n pattern: /(^\\$\\(\\([\\s\\S]+)\\)\\)/,\n lookbehind: true\n }, /^\\$\\(\\(/],\n 'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:[Ee]-?\\d+)?/,\n // Operators according to https://www.gnu.org/software/bash/manual/bashref.html#Shell-Arithmetic\n 'operator': /--?|-=|\\+\\+?|\\+=|!=?|~|\\*\\*?|\\*=|\\/=?|%=?|<<=?|>>=?|<=?|>=?|==?|&&?|&=|\\^=?|\\|\\|?|\\|=|\\?|:/,\n // If there is no $ sign at the beginning highlight (( and )) as punctuation\n 'punctuation': /\\(\\(?|\\)\\)?|,|;/\n }\n }, // [1]: Command Substitution\n {\n pattern: /\\$\\((?:\\([^)]+\\)|[^()])+\\)|`[^`]+`/,\n greedy: true,\n inside: {\n 'variable': /^\\$\\(|^`|\\)$|`$/\n }\n }, // [2]: Brace expansion\n {\n pattern: /\\$\\{[^}]+\\}/,\n greedy: true,\n inside: {\n 'operator': /:[-=?+]?|[!\\/]|##?|%%?|\\^\\^?|,,?/,\n 'punctuation': /[\\[\\]]/,\n 'environment': {\n pattern: RegExp(\"(\\\\{)\" + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n }\n }, /\\$(?:\\w+|[#?*!@$])/],\n // Escape sequences from echo and printf's manuals, and escaped quotes.\n 'entity': /\\\\(?:[abceEfnrtv\\\\\"]|O?[0-7]{1,3}|x[0-9a-fA-F]{1,2}|u[0-9a-fA-F]{4}|U[0-9a-fA-F]{8})/\n };\n Prism.languages.bash = {\n 'shebang': {\n pattern: /^#!\\s*\\/.*/,\n alias: 'important'\n },\n 'comment': {\n pattern: /(^|[^\"{\\\\$])#.*/,\n lookbehind: true\n },\n 'function-name': [// a) function foo {\n // b) foo() {\n // c) function foo() {\n // but not “foo {”\n {\n // a) and c)\n pattern: /(\\bfunction\\s+)\\w+(?=(?:\\s*\\(?:\\s*\\))?\\s*\\{)/,\n lookbehind: true,\n alias: 'function'\n }, {\n // b)\n pattern: /\\b\\w+(?=\\s*\\(\\s*\\)\\s*\\{)/,\n alias: 'function'\n }],\n // Highlight variable names as variables in for and select beginnings.\n 'for-or-select': {\n pattern: /(\\b(?:for|select)\\s+)\\w+(?=\\s+in\\s)/,\n alias: 'variable',\n lookbehind: true\n },\n // Highlight variable names as variables in the left-hand part\n // of assignments (“=” and “+=”).\n 'assign-left': {\n pattern: /(^|[\\s;|&]|[<>]\\()\\w+(?=\\+?=)/,\n inside: {\n 'environment': {\n pattern: RegExp(\"(^|[\\\\s;|&]|[<>]\\\\()\" + envVars),\n lookbehind: true,\n alias: 'constant'\n }\n },\n alias: 'variable',\n lookbehind: true\n },\n 'string': [// Support for Here-documents https://en.wikipedia.org/wiki/Here_document\n {\n pattern: /((?:^|[^<])<<-?\\s*)(\\w+?)\\s*(?:\\r?\\n|\\r)(?:[\\s\\S])*?(?:\\r?\\n|\\r)\\2/,\n lookbehind: true,\n greedy: true,\n inside: insideString\n }, // Here-document with quotes around the tag\n // → No expansion (so no “inside”).\n {\n pattern: /((?:^|[^<])<<-?\\s*)([\"'])(\\w+)\\2\\s*(?:\\r?\\n|\\r)(?:[\\s\\S])*?(?:\\r?\\n|\\r)\\3/,\n lookbehind: true,\n greedy: true\n }, // “Normal” string\n {\n pattern: /([\"'])(?:\\\\[\\s\\S]|\\$\\([^)]+\\)|`[^`]+`|(?!\\1)[^\\\\])*\\1/,\n greedy: true,\n inside: insideString\n }],\n 'environment': {\n pattern: RegExp(\"\\\\$?\" + envVars),\n alias: 'constant'\n },\n 'variable': insideString.variable,\n 'function': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:add|apropos|apt|aptitude|apt-cache|apt-get|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'keyword': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:if|then|else|elif|fi|for|while|in|case|esac|function|select|do|done|until)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n // https://www.gnu.org/software/bash/manual/html_node/Shell-Builtin-Commands.html\n 'builtin': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:\\.|:|break|cd|continue|eval|exec|exit|export|getopts|hash|pwd|readonly|return|shift|test|times|trap|umask|unset|alias|bind|builtin|caller|command|declare|echo|enable|help|let|local|logout|mapfile|printf|read|readarray|source|type|typeset|ulimit|unalias|set|shopt)(?=$|[)\\s;|&])/,\n lookbehind: true,\n // Alias added to make those easier to distinguish from strings.\n alias: 'class-name'\n },\n 'boolean': {\n pattern: /(^|[\\s;|&]|[<>]\\()(?:true|false)(?=$|[)\\s;|&])/,\n lookbehind: true\n },\n 'file-descriptor': {\n pattern: /\\B&\\d\\b/,\n alias: 'important'\n },\n 'operator': {\n // Lots of redirections here, but not just that.\n pattern: /\\d?<>|>\\||\\+=|==?|!=?|=~|<<[<-]?|[&\\d]?>>|\\d?[<>]&?|&[>&]?|\\|[&|]?|<=?|>=?/,\n inside: {\n 'file-descriptor': {\n pattern: /^\\d/,\n alias: 'important'\n }\n }\n },\n 'punctuation': /\\$?\\(\\(?|\\)\\)?|\\.\\.|[{}[\\];\\\\]/,\n 'number': {\n pattern: /(^|\\s)(?:[1-9]\\d*|0)(?:[.,]\\d+)?\\b/,\n lookbehind: true\n }\n };\n /* Patterns in command substitution. */\n\n var toBeCopied = ['comment', 'function-name', 'for-or-select', 'assign-left', 'string', 'environment', 'function', 'keyword', 'builtin', 'boolean', 'file-descriptor', 'operator', 'punctuation', 'number'];\n var inside = insideString.variable[1].inside;\n\n for (var i = 0; i < toBeCopied.length; i++) {\n inside[toBeCopied[i]] = Prism.languages.bash[toBeCopied[i]];\n }\n\n Prism.languages.shell = Prism.languages.bash;\n})(Prism);\n/* \"prismjs/components/prism-clike\" */\n\n\nPrism.languages.clike = {\n 'comment': [{\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n lookbehind: true\n }, {\n pattern: /(^|[^\\\\:])\\/\\/.*/,\n lookbehind: true,\n greedy: true\n }],\n 'string': {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n 'class-name': {\n pattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[\\w.\\\\]+/i,\n lookbehind: true,\n inside: {\n punctuation: /[.\\\\]/\n }\n },\n 'keyword': /\\b(?:if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'function': /\\w+(?=\\()/,\n 'number': /\\b0x[\\da-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?/i,\n 'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n 'punctuation': /[{}[\\];(),.:]/\n};\n/* \"prismjs/components/prism-c\" */\n\nPrism.languages.c = Prism.languages.extend('clike', {\n 'class-name': {\n pattern: /(\\b(?:enum|struct)\\s+)\\w+/,\n lookbehind: true\n },\n 'keyword': /\\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while)\\b/,\n 'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?/,\n 'number': /(?:\\b0x(?:[\\da-f]+\\.?[\\da-f]*|\\.[\\da-f]+)(?:p[+-]?\\d+)?|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[+-]?\\d+)?)[ful]*/i\n});\nPrism.languages.insertBefore('c', 'string', {\n 'macro': {\n // allow for multiline macro definitions\n // spaces after the # character compile fine with gcc\n pattern: /(^\\s*)#\\s*[a-z]+(?:[^\\r\\n\\\\]|\\\\(?:\\r\\n|[\\s\\S]))*/im,\n lookbehind: true,\n alias: 'property',\n inside: {\n // highlight the path of the include statement as a string\n 'string': {\n pattern: /(#\\s*include\\s*)(?:<.+?>|(\"|')(?:\\\\?.)+?\\2)/,\n lookbehind: true\n },\n // highlight macro directives as keywords\n 'directive': {\n pattern: /(#\\s*)\\b(?:define|defined|elif|else|endif|error|ifdef|ifndef|if|import|include|line|pragma|undef|using)\\b/,\n lookbehind: true,\n alias: 'keyword'\n }\n }\n },\n // highlight predefined macros as constants\n 'constant': /\\b(?:__FILE__|__LINE__|__DATE__|__TIME__|__TIMESTAMP__|__func__|EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|stdin|stdout|stderr)\\b/\n});\ndelete Prism.languages.c['boolean'];\n/* \"prismjs/components/prism-cpp\" */\n\nPrism.languages.cpp = Prism.languages.extend('c', {\n 'class-name': {\n pattern: /(\\b(?:class|enum|struct)\\s+)\\w+/,\n lookbehind: true\n },\n 'keyword': /\\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|class|compl|const|constexpr|const_cast|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|float|for|friend|goto|if|inline|int|int8_t|int16_t|int32_t|int64_t|uint8_t|uint16_t|uint32_t|uint64_t|long|mutable|namespace|new|noexcept|nullptr|operator|private|protected|public|register|reinterpret_cast|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|union|unsigned|using|virtual|void|volatile|wchar_t|while)\\b/,\n 'number': {\n pattern: /(?:\\b0b[01']+|\\b0x(?:[\\da-f']+\\.?[\\da-f']*|\\.[\\da-f']+)(?:p[+-]?[\\d']+)?|(?:\\b[\\d']+\\.?[\\d']*|\\B\\.[\\d']+)(?:e[+-]?[\\d']+)?)[ful]*/i,\n greedy: true\n },\n 'operator': />>=?|<<=?|->|([-+&|:])\\1|[?:~]|[-+*/%&|^!=<>]=?|\\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\\b/,\n 'boolean': /\\b(?:true|false)\\b/\n});\nPrism.languages.insertBefore('cpp', 'string', {\n 'raw-string': {\n pattern: /R\"([^()\\\\ ]{0,16})\\([\\s\\S]*?\\)\\1\"/,\n alias: 'string',\n greedy: true\n }\n});\n/* \"prismjs/components/prism-css\" */\n\n(function (Prism) {\n var string = /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/;\n Prism.languages.css = {\n 'comment': /\\/\\*[\\s\\S]*?\\*\\//,\n 'atrule': {\n pattern: /@[\\w-]+[\\s\\S]*?(?:;|(?=\\s*\\{))/,\n inside: {\n 'rule': /@[\\w-]+/ // See rest below\n\n }\n },\n 'url': {\n pattern: RegExp('url\\\\((?:' + string.source + '|[^\\n\\r()]*)\\\\)', 'i'),\n inside: {\n 'function': /^url/i,\n 'punctuation': /^\\(|\\)$/\n }\n },\n 'selector': RegExp('[^{}\\\\s](?:[^{};\"\\']|' + string.source + ')*?(?=\\\\s*\\\\{)'),\n 'string': {\n pattern: string,\n greedy: true\n },\n 'property': /[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*(?=\\s*:)/i,\n 'important': /!important\\b/i,\n 'function': /[-a-z0-9]+(?=\\()/i,\n 'punctuation': /[(){};:,]/\n };\n Prism.languages.css['atrule'].inside.rest = Prism.languages.css;\n var markup = Prism.languages.markup;\n\n if (markup) {\n markup.tag.addInlined('style', 'css');\n Prism.languages.insertBefore('inside', 'attr-value', {\n 'style-attr': {\n pattern: /\\s*style=(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/i,\n inside: {\n 'attr-name': {\n pattern: /^\\s*style/i,\n inside: markup.tag.inside\n },\n 'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n 'attr-value': {\n pattern: /.+/i,\n inside: Prism.languages.css\n }\n },\n alias: 'language-css'\n }\n }, markup.tag);\n }\n})(Prism);\n/* \"prismjs/components/prism-css-extras\" */\n\n\nPrism.languages.css.selector = {\n pattern: Prism.languages.css.selector,\n inside: {\n 'pseudo-element': /:(?:after|before|first-letter|first-line|selection)|::[-\\w]+/,\n 'pseudo-class': /:[-\\w]+/,\n 'class': /\\.[-:.\\w]+/,\n 'id': /#[-:.\\w]+/,\n 'attribute': {\n pattern: /\\[(?:[^[\\]\"']|(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1)*\\]/,\n greedy: true,\n inside: {\n 'punctuation': /^\\[|\\]$/,\n 'case-sensitivity': {\n pattern: /(\\s)[si]$/i,\n lookbehind: true,\n alias: 'keyword'\n },\n 'namespace': {\n pattern: /^(\\s*)[-*\\w\\xA0-\\uFFFF]*\\|(?!=)/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\|$/\n }\n },\n 'attribute': {\n pattern: /^(\\s*)[-\\w\\xA0-\\uFFFF]+/,\n lookbehind: true\n },\n 'value': [/(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/, {\n pattern: /(=\\s*)[-\\w\\xA0-\\uFFFF]+(?=\\s*$)/,\n lookbehind: true\n }],\n 'operator': /[|~*^$]?=/\n }\n },\n 'n-th': [{\n pattern: /(\\(\\s*)[+-]?\\d*[\\dn](?:\\s*[+-]\\s*\\d+)?(?=\\s*\\))/,\n lookbehind: true,\n inside: {\n 'number': /[\\dn]+/,\n 'operator': /[+-]/\n }\n }, {\n pattern: /(\\(\\s*)(?:even|odd)(?=\\s*\\))/i,\n lookbehind: true\n }],\n 'punctuation': /[()]/\n }\n};\nPrism.languages.insertBefore('css', 'property', {\n 'variable': {\n pattern: /(^|[^-\\w\\xA0-\\uFFFF])--[-_a-z\\xA0-\\uFFFF][-\\w\\xA0-\\uFFFF]*/i,\n lookbehind: true\n }\n});\nPrism.languages.insertBefore('css', 'function', {\n 'operator': {\n pattern: /(\\s)[+\\-*\\/](?=\\s)/,\n lookbehind: true\n },\n 'hexcode': /#[\\da-f]{3,8}/i,\n 'entity': /\\\\[\\da-f]{1,8}/i,\n 'unit': {\n pattern: /(\\d)(?:%|[a-z]+)/,\n lookbehind: true\n },\n 'number': /-?[\\d.]+/\n});\n/* \"prismjs/components/prism-javascript\" */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n 'class-name': [Prism.languages.clike['class-name'], {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])[_$A-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\.(?:prototype|constructor))/,\n lookbehind: true\n }],\n 'keyword': [{\n pattern: /((?:^|})\\s*)(?:catch|finally)\\b/,\n lookbehind: true\n }, {\n pattern: /(^|[^.])\\b(?:as|async(?=\\s*(?:function\\b|\\(|[$\\w\\xA0-\\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\\b/,\n lookbehind: true\n }],\n 'number': /\\b(?:(?:0[xX](?:[\\dA-Fa-f](?:_[\\dA-Fa-f])?)+|0[bB](?:[01](?:_[01])?)+|0[oO](?:[0-7](?:_[0-7])?)+)n?|(?:\\d(?:_\\d)?)+n|NaN|Infinity)\\b|(?:\\b(?:\\d(?:_\\d)?)+\\.?(?:\\d(?:_\\d)?)*|\\B\\.(?:\\d(?:_\\d)?)+)(?:[Ee][+-]?(?:\\d(?:_\\d)?)+)?/,\n // Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n 'function': /#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*(?:\\.\\s*(?:apply|bind|call)\\s*)?\\()/,\n 'operator': /-[-=]?|\\+[+=]?|!=?=?|<<?=?|>>?>?=?|=(?:==?|>)?|&[&=]?|\\|[|=]?|\\*\\*?=?|\\/=?|~|\\^=?|%=?|\\?|\\.{3}/\n});\nPrism.languages.javascript['class-name'][0].pattern = /(\\b(?:class|interface|extends|implements|instanceof|new)\\s+)[\\w.\\\\]+/;\nPrism.languages.insertBefore('javascript', 'keyword', {\n 'regex': {\n pattern: /((?:^|[^$\\w\\xA0-\\uFFFF.\"'\\])\\s])\\s*)\\/(\\[(?:[^\\]\\\\\\r\\n]|\\\\.)*]|\\\\.|[^/\\\\\\[\\r\\n])+\\/[gimyus]{0,6}(?=\\s*($|[\\r\\n,.;})\\]]))/,\n lookbehind: true,\n greedy: true\n },\n // This must be declared before keyword because we use \"function\" inside the look-forward\n 'function-variable': {\n pattern: /#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*[=:]\\s*(?:async\\s*)?(?:\\bfunction\\b|(?:\\((?:[^()]|\\([^()]*\\))*\\)|[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/,\n alias: 'function'\n },\n 'parameter': [{\n pattern: /(function(?:\\s+[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)?\\s*\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\))/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }, {\n pattern: /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=>)/i,\n inside: Prism.languages.javascript\n }, {\n pattern: /(\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*=>)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }, {\n pattern: /((?:\\b|\\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\\w\\xA0-\\uFFFF]))(?:[_$A-Za-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*\\s*)\\(\\s*)(?!\\s)(?:[^()]|\\([^()]*\\))+?(?=\\s*\\)\\s*\\{)/,\n lookbehind: true,\n inside: Prism.languages.javascript\n }],\n 'constant': /\\b[A-Z](?:[A-Z_]|\\dx?)*\\b/\n});\nPrism.languages.insertBefore('javascript', 'string', {\n 'template-string': {\n pattern: /`(?:\\\\[\\s\\S]|\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}|(?!\\${)[^\\\\`])*`/,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n 'interpolation': {\n pattern: /((?:^|[^\\\\])(?:\\\\{2})*)\\${(?:[^{}]|{(?:[^{}]|{[^}]*})*})+}/,\n lookbehind: true,\n inside: {\n 'interpolation-punctuation': {\n pattern: /^\\${|}$/,\n alias: 'punctuation'\n },\n rest: Prism.languages.javascript\n }\n },\n 'string': /[\\s\\S]+/\n }\n }\n});\n\nif (Prism.languages.markup) {\n Prism.languages.markup.tag.addInlined('script', 'javascript');\n}\n\nPrism.languages.js = Prism.languages.javascript;\n/* \"prismjs/components/prism-jsx\" */\n\n(function (Prism) {\n var javascript = Prism.util.clone(Prism.languages.javascript);\n Prism.languages.jsx = Prism.languages.extend('markup', javascript);\n Prism.languages.jsx.tag.pattern = /<\\/?(?:[\\w.:-]+\\s*(?:\\s+(?:[\\w.:-]+(?:=(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s{'\">=]+|\\{(?:\\{(?:\\{[^}]*\\}|[^{}])*\\}|[^{}])+\\}))?|\\{\\.{3}[a-z_$][\\w$]*(?:\\.[a-z_$][\\w$]*)*\\}))*\\s*\\/?)?>/i;\n Prism.languages.jsx.tag.inside['tag'].pattern = /^<\\/?[^\\s>\\/]*/i;\n Prism.languages.jsx.tag.inside['attr-value'].pattern = /=(?!\\{)(?:(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|[^\\s'\">]+)/i;\n Prism.languages.jsx.tag.inside['tag'].inside['class-name'] = /^[A-Z]\\w*(?:\\.[A-Z]\\w*)*$/;\n Prism.languages.insertBefore('inside', 'attr-name', {\n 'spread': {\n pattern: /\\{\\.{3}[a-z_$][\\w$]*(?:\\.[a-z_$][\\w$]*)*\\}/,\n inside: {\n 'punctuation': /\\.{3}|[{}.]/,\n 'attr-value': /\\w+/\n }\n }\n }, Prism.languages.jsx.tag);\n Prism.languages.insertBefore('inside', 'attr-value', {\n 'script': {\n // Allow for two levels of nesting\n pattern: /=(\\{(?:\\{(?:\\{[^}]*\\}|[^}])*\\}|[^}])+\\})/i,\n inside: {\n 'script-punctuation': {\n pattern: /^=(?={)/,\n alias: 'punctuation'\n },\n rest: Prism.languages.jsx\n },\n 'alias': 'language-javascript'\n }\n }, Prism.languages.jsx.tag); // The following will handle plain text inside tags\n\n var stringifyToken = function stringifyToken(token) {\n if (!token) {\n return '';\n }\n\n if (typeof token === 'string') {\n return token;\n }\n\n if (typeof token.content === 'string') {\n return token.content;\n }\n\n return token.content.map(stringifyToken).join('');\n };\n\n var walkTokens = function walkTokens(tokens) {\n var openedTags = [];\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n var notTagNorBrace = false;\n\n if (typeof token !== 'string') {\n if (token.type === 'tag' && token.content[0] && token.content[0].type === 'tag') {\n // We found a tag, now find its kind\n if (token.content[0].content[0].content === '</') {\n // Closing tag\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].tagName === stringifyToken(token.content[0].content[1])) {\n // Pop matching opening tag\n openedTags.pop();\n }\n } else {\n if (token.content[token.content.length - 1].content === '/>') ;else {\n // Opening tag\n openedTags.push({\n tagName: stringifyToken(token.content[0].content[1]),\n openedBraces: 0\n });\n }\n }\n } else if (openedTags.length > 0 && token.type === 'punctuation' && token.content === '{') {\n // Here we might have entered a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces++;\n } else if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces > 0 && token.type === 'punctuation' && token.content === '}') {\n // Here we might have left a JSX context inside a tag\n openedTags[openedTags.length - 1].openedBraces--;\n } else {\n notTagNorBrace = true;\n }\n }\n\n if (notTagNorBrace || typeof token === 'string') {\n if (openedTags.length > 0 && openedTags[openedTags.length - 1].openedBraces === 0) {\n // Here we are inside a tag, and not inside a JSX context.\n // That's plain text: drop any tokens matched.\n var plainText = stringifyToken(token); // And merge text with adjacent text\n\n if (i < tokens.length - 1 && (typeof tokens[i + 1] === 'string' || tokens[i + 1].type === 'plain-text')) {\n plainText += stringifyToken(tokens[i + 1]);\n tokens.splice(i + 1, 1);\n }\n\n if (i > 0 && (typeof tokens[i - 1] === 'string' || tokens[i - 1].type === 'plain-text')) {\n plainText = stringifyToken(tokens[i - 1]) + plainText;\n tokens.splice(i - 1, 1);\n i--;\n }\n\n tokens[i] = new Prism.Token('plain-text', plainText, null, plainText);\n }\n }\n\n if (token.content && typeof token.content !== 'string') {\n walkTokens(token.content);\n }\n }\n };\n\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'jsx' && env.language !== 'tsx') {\n return;\n }\n\n walkTokens(env.tokens);\n });\n})(Prism);\n/* \"prismjs/components/prism-javadoclike\" */\n\n\n(function (Prism) {\n var javaDocLike = Prism.languages.javadoclike = {\n 'parameter': {\n pattern: /(^\\s*(?:\\/{3}|\\*|\\/\\*\\*)\\s*@(?:param|arg|arguments)\\s+)\\w+/m,\n lookbehind: true\n },\n 'keyword': {\n // keywords are the first word in a line preceded be an `@` or surrounded by curly braces.\n // @word, {@word}\n pattern: /(^\\s*(?:\\/{3}|\\*|\\/\\*\\*)\\s*|\\{)@[a-z][a-zA-Z-]+\\b/m,\n lookbehind: true\n },\n 'punctuation': /[{}]/\n };\n /**\n * Adds doc comment support to the given language and calls a given callback on each doc comment pattern.\n *\n * @param {string} lang the language add doc comment support to.\n * @param {(pattern: {inside: {rest: undefined}}) => void} callback the function called with each doc comment pattern as argument.\n */\n\n function docCommentSupport(lang, callback) {\n var tokenName = 'doc-comment';\n var grammar = Prism.languages[lang];\n\n if (!grammar) {\n return;\n }\n\n var token = grammar[tokenName];\n\n if (!token) {\n // add doc comment: /** */\n var definition = {};\n definition[tokenName] = {\n pattern: /(^|[^\\\\])\\/\\*\\*[^/][\\s\\S]*?(?:\\*\\/|$)/,\n alias: 'comment'\n };\n grammar = Prism.languages.insertBefore(lang, 'comment', definition);\n token = grammar[tokenName];\n }\n\n if (token instanceof RegExp) {\n // convert regex to object\n token = grammar[tokenName] = {\n pattern: token\n };\n }\n\n if (Array.isArray(token)) {\n for (var i = 0, l = token.length; i < l; i++) {\n if (token[i] instanceof RegExp) {\n token[i] = {\n pattern: token[i]\n };\n }\n\n callback(token[i]);\n }\n } else {\n callback(token);\n }\n }\n /**\n * Adds doc-comment support to the given languages for the given documentation language.\n *\n * @param {string[]|string} languages\n * @param {Object} docLanguage\n */\n\n\n function addSupport(languages, docLanguage) {\n if (typeof languages === 'string') {\n languages = [languages];\n }\n\n languages.forEach(function (lang) {\n docCommentSupport(lang, function (pattern) {\n if (!pattern.inside) {\n pattern.inside = {};\n }\n\n pattern.inside.rest = docLanguage;\n });\n });\n }\n\n Object.defineProperty(javaDocLike, 'addSupport', {\n value: addSupport\n });\n javaDocLike.addSupport(['java', 'javascript', 'php'], javaDocLike);\n})(Prism);\n/* \"prismjs/components/prism-java\" */\n\n\n(function (Prism) {\n var keywords = /\\b(?:abstract|continue|for|new|switch|assert|default|goto|package|synchronized|boolean|do|if|private|this|break|double|implements|protected|throw|byte|else|import|public|throws|case|enum|instanceof|return|transient|catch|extends|int|short|try|char|final|interface|static|void|class|finally|long|strictfp|volatile|const|float|native|super|while|var|null|exports|module|open|opens|provides|requires|to|transitive|uses|with)\\b/; // based on the java naming conventions\n\n var className = /\\b[A-Z](?:\\w*[a-z]\\w*)?\\b/;\n Prism.languages.java = Prism.languages.extend('clike', {\n 'class-name': [className, // variables and parameters\n // this to support class names (or generic parameters) which do not contain a lower case letter (also works for methods)\n /\\b[A-Z]\\w*(?=\\s+\\w+\\s*[;,=())])/],\n 'keyword': keywords,\n 'function': [Prism.languages.clike.function, {\n pattern: /(\\:\\:)[a-z_]\\w*/,\n lookbehind: true\n }],\n 'number': /\\b0b[01][01_]*L?\\b|\\b0x[\\da-f_]*\\.?[\\da-f_p+-]+\\b|(?:\\b\\d[\\d_]*\\.?[\\d_]*|\\B\\.\\d[\\d_]*)(?:e[+-]?\\d[\\d_]*)?[dfl]?/i,\n 'operator': {\n pattern: /(^|[^.])(?:<<=?|>>>?=?|->|([-+&|])\\2|[?:~]|[-+*/%&|^!=<>]=?)/m,\n lookbehind: true\n }\n });\n Prism.languages.insertBefore('java', 'class-name', {\n 'annotation': {\n alias: 'punctuation',\n pattern: /(^|[^.])@\\w+/,\n lookbehind: true\n },\n 'namespace': {\n pattern: /(\\b(?:exports|import(?:\\s+static)?|module|open|opens|package|provides|requires|to|transitive|uses|with)\\s+)[a-z]\\w*(\\.[a-z]\\w*)+/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\./\n }\n },\n 'generics': {\n pattern: /<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<(?:[\\w\\s,.&?]|<[\\w\\s,.&?]*>)*>)*>)*>/,\n inside: {\n 'class-name': className,\n 'keyword': keywords,\n 'punctuation': /[<>(),.:]/,\n 'operator': /[?&|]/\n }\n }\n });\n})(Prism);\n/* \"prismjs/components/prism-markup-templating\" */\n\n\n(function (Prism) {\n /**\n * Returns the placeholder for the given language id and index.\n *\n * @param {string} language\n * @param {string|number} index\n * @returns {string}\n */\n function getPlaceholder(language, index) {\n return '___' + language.toUpperCase() + index + '___';\n }\n\n Object.defineProperties(Prism.languages['markup-templating'] = {}, {\n buildPlaceholders: {\n /**\n * Tokenize all inline templating expressions matching `placeholderPattern`.\n *\n * If `replaceFilter` is provided, only matches of `placeholderPattern` for which `replaceFilter` returns\n * `true` will be replaced.\n *\n * @param {object} env The environment of the `before-tokenize` hook.\n * @param {string} language The language id.\n * @param {RegExp} placeholderPattern The matches of this pattern will be replaced by placeholders.\n * @param {(match: string) => boolean} [replaceFilter]\n */\n value: function value(env, language, placeholderPattern, replaceFilter) {\n if (env.language !== language) {\n return;\n }\n\n var tokenStack = env.tokenStack = [];\n env.code = env.code.replace(placeholderPattern, function (match) {\n if (typeof replaceFilter === 'function' && !replaceFilter(match)) {\n return match;\n }\n\n var i = tokenStack.length;\n var placeholder; // Check for existing strings\n\n while (env.code.indexOf(placeholder = getPlaceholder(language, i)) !== -1) {\n ++i;\n } // Create a sparse array\n\n\n tokenStack[i] = match;\n return placeholder;\n }); // Switch the grammar to markup\n\n env.grammar = Prism.languages.markup;\n }\n },\n tokenizePlaceholders: {\n /**\n * Replace placeholders with proper tokens after tokenizing.\n *\n * @param {object} env The environment of the `after-tokenize` hook.\n * @param {string} language The language id.\n */\n value: function value(env, language) {\n if (env.language !== language || !env.tokenStack) {\n return;\n } // Switch the grammar back\n\n\n env.grammar = Prism.languages[language];\n var j = 0;\n var keys = Object.keys(env.tokenStack);\n\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n // all placeholders are replaced already\n if (j >= keys.length) {\n break;\n }\n\n var token = tokens[i];\n\n if (typeof token === 'string' || token.content && typeof token.content === 'string') {\n var k = keys[j];\n var t = env.tokenStack[k];\n var s = typeof token === 'string' ? token : token.content;\n var placeholder = getPlaceholder(language, k);\n var index = s.indexOf(placeholder);\n\n if (index > -1) {\n ++j;\n var before = s.substring(0, index);\n var middle = new Prism.Token(language, Prism.tokenize(t, env.grammar), 'language-' + language, t);\n var after = s.substring(index + placeholder.length);\n var replacement = [];\n\n if (before) {\n replacement.push.apply(replacement, walkTokens([before]));\n }\n\n replacement.push(middle);\n\n if (after) {\n replacement.push.apply(replacement, walkTokens([after]));\n }\n\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement));\n } else {\n token.content = replacement;\n }\n }\n } else if (token.content\n /* && typeof token.content !== 'string' */\n ) {\n walkTokens(token.content);\n }\n }\n\n return tokens;\n }\n\n walkTokens(env.tokens);\n }\n }\n });\n})(Prism);\n/* \"prismjs/components/prism-php\" */\n\n/**\n * Original by Aaron Harun: http://aahacreative.com/2012/07/31/php-syntax-highlighting-prism/\n * Modified by Miles Johnson: http://milesj.me\n *\n * Supports the following:\n * \t\t- Extends clike syntax\n * \t\t- Support for PHP 5.3+ (namespaces, traits, generators, etc)\n * \t\t- Smarter constant and function matching\n *\n * Adds the following new token classes:\n * \t\tconstant, delimiter, variable, function, package\n */\n\n\n(function (Prism) {\n Prism.languages.php = Prism.languages.extend('clike', {\n 'keyword': /\\b(?:__halt_compiler|abstract|and|array|as|break|callable|case|catch|class|clone|const|continue|declare|default|die|do|echo|else|elseif|empty|enddeclare|endfor|endforeach|endif|endswitch|endwhile|eval|exit|extends|final|finally|for|foreach|function|global|goto|if|implements|include|include_once|instanceof|insteadof|interface|isset|list|namespace|new|or|parent|print|private|protected|public|require|require_once|return|static|switch|throw|trait|try|unset|use|var|while|xor|yield)\\b/i,\n 'boolean': {\n pattern: /\\b(?:false|true)\\b/i,\n alias: 'constant'\n },\n 'constant': [/\\b[A-Z_][A-Z0-9_]*\\b/, /\\b(?:null)\\b/i],\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n }\n });\n Prism.languages.insertBefore('php', 'string', {\n 'shell-comment': {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true,\n alias: 'comment'\n }\n });\n Prism.languages.insertBefore('php', 'comment', {\n 'delimiter': {\n pattern: /\\?>$|^<\\?(?:php(?=\\s)|=)?/i,\n alias: 'important'\n }\n });\n Prism.languages.insertBefore('php', 'keyword', {\n 'variable': /\\$+(?:\\w+\\b|(?={))/i,\n 'package': {\n pattern: /(\\\\|namespace\\s+|use\\s+)[\\w\\\\]+/,\n lookbehind: true,\n inside: {\n punctuation: /\\\\/\n }\n }\n }); // Must be defined after the function pattern\n\n Prism.languages.insertBefore('php', 'operator', {\n 'property': {\n pattern: /(->)[\\w]+/,\n lookbehind: true\n }\n });\n var string_interpolation = {\n pattern: /{\\$(?:{(?:{[^{}]+}|[^{}]+)}|[^{}])+}|(^|[^\\\\{])\\$+(?:\\w+(?:\\[.+?]|->\\w+)*)/,\n lookbehind: true,\n inside: {\n rest: Prism.languages.php\n }\n };\n Prism.languages.insertBefore('php', 'string', {\n 'nowdoc-string': {\n pattern: /<<<'([^']+)'(?:\\r\\n?|\\n)(?:.*(?:\\r\\n?|\\n))*?\\1;/,\n greedy: true,\n alias: 'string',\n inside: {\n 'delimiter': {\n pattern: /^<<<'[^']+'|[a-z_]\\w*;$/i,\n alias: 'symbol',\n inside: {\n 'punctuation': /^<<<'?|[';]$/\n }\n }\n }\n },\n 'heredoc-string': {\n pattern: /<<<(?:\"([^\"]+)\"(?:\\r\\n?|\\n)(?:.*(?:\\r\\n?|\\n))*?\\1;|([a-z_]\\w*)(?:\\r\\n?|\\n)(?:.*(?:\\r\\n?|\\n))*?\\2;)/i,\n greedy: true,\n alias: 'string',\n inside: {\n 'delimiter': {\n pattern: /^<<<(?:\"[^\"]+\"|[a-z_]\\w*)|[a-z_]\\w*;$/i,\n alias: 'symbol',\n inside: {\n 'punctuation': /^<<<\"?|[\";]$/\n }\n },\n 'interpolation': string_interpolation // See below\n\n }\n },\n 'single-quoted-string': {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n greedy: true,\n alias: 'string'\n },\n 'double-quoted-string': {\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true,\n alias: 'string',\n inside: {\n 'interpolation': string_interpolation // See below\n\n }\n }\n }); // The different types of PHP strings \"replace\" the C-like standard string\n\n delete Prism.languages.php['string'];\n Prism.hooks.add('before-tokenize', function (env) {\n if (!/<\\?/.test(env.code)) {\n return;\n }\n\n var phpPattern = /<\\?(?:[^\"'/#]|\\/(?![*/])|(\"|')(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1|(?:\\/\\/|#)(?:[^?\\n\\r]|\\?(?!>))*|\\/\\*[\\s\\S]*?(?:\\*\\/|$))*?(?:\\?>|$)/ig;\n Prism.languages['markup-templating'].buildPlaceholders(env, 'php', phpPattern);\n });\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'php');\n });\n})(Prism);\n/* \"prismjs/components/prism-jsdoc\" */\n\n\n(function (Prism) {\n var javascript = Prism.languages.javascript;\n var type = /{(?:[^{}]|{(?:[^{}]|{[^{}]*})*})+}/.source;\n var parameterPrefix = '(@(?:param|arg|argument|property)\\\\s+(?:' + type + '\\\\s+)?)';\n Prism.languages.jsdoc = Prism.languages.extend('javadoclike', {\n 'parameter': {\n // @param {string} foo - foo bar\n pattern: RegExp(parameterPrefix + /[$\\w\\xA0-\\uFFFF.]+(?=\\s|$)/.source),\n lookbehind: true,\n inside: {\n 'punctuation': /\\./\n }\n }\n });\n Prism.languages.insertBefore('jsdoc', 'keyword', {\n 'optional-parameter': {\n // @param {string} [baz.foo=\"bar\"] foo bar\n pattern: RegExp(parameterPrefix + /\\[[$\\w\\xA0-\\uFFFF.]+(?:=[^[\\]]+)?\\](?=\\s|$)/.source),\n lookbehind: true,\n inside: {\n 'parameter': {\n pattern: /(^\\[)[$\\w\\xA0-\\uFFFF\\.]+/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\./\n }\n },\n 'code': {\n pattern: /(=)[\\s\\S]*(?=\\]$)/,\n lookbehind: true,\n inside: javascript,\n alias: 'language-javascript'\n },\n 'punctuation': /[=[\\]]/\n }\n },\n 'class-name': [{\n pattern: RegExp('(@[a-z]+\\\\s+)' + type),\n lookbehind: true,\n inside: {\n 'punctuation': /[.,:?=<>|{}()[\\]]/\n }\n }, {\n pattern: /(@(?:augments|extends|class|interface|memberof!?|this)\\s+)[A-Z]\\w*(?:\\.[A-Z]\\w*)*/,\n lookbehind: true,\n inside: {\n 'punctuation': /\\./\n }\n }],\n 'example': {\n pattern: /(@example\\s+)[^@]+?(?=\\s*(?:\\*\\s*)?(?:@\\w|\\*\\/))/,\n lookbehind: true,\n inside: {\n 'code': {\n pattern: /^(\\s*(?:\\*\\s*)?).+$/m,\n lookbehind: true,\n inside: javascript,\n alias: 'language-javascript'\n }\n }\n }\n });\n Prism.languages.javadoclike.addSupport('javascript', Prism.languages.jsdoc);\n})(Prism);\n/* \"prismjs/components/prism-actionscript\" */\n\n\nPrism.languages.actionscript = Prism.languages.extend('javascript', {\n 'keyword': /\\b(?:as|break|case|catch|class|const|default|delete|do|else|extends|finally|for|function|if|implements|import|in|instanceof|interface|internal|is|native|new|null|package|private|protected|public|return|super|switch|this|throw|try|typeof|use|var|void|while|with|dynamic|each|final|get|include|namespace|native|override|set|static)\\b/,\n 'operator': /\\+\\+|--|(?:[+\\-*\\/%^]|&&?|\\|\\|?|<<?|>>?>?|[!=]=?)=?|[~?@]/\n});\nPrism.languages.actionscript['class-name'].alias = 'function';\n\nif (Prism.languages.markup) {\n Prism.languages.insertBefore('actionscript', 'string', {\n 'xml': {\n pattern: /(^|[^.])<\\/?\\w+(?:\\s+[^\\s>\\/=]+=(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\])*\\2)*\\s*\\/?>/,\n lookbehind: true,\n inside: {\n rest: Prism.languages.markup\n }\n }\n });\n}\n/* \"prismjs/components/prism-coffeescript\" */\n\n\n(function (Prism) {\n // Ignore comments starting with { to privilege string interpolation highlighting\n var comment = /#(?!\\{).+/,\n interpolation = {\n pattern: /#\\{[^}]+\\}/,\n alias: 'variable'\n };\n Prism.languages.coffeescript = Prism.languages.extend('javascript', {\n 'comment': comment,\n 'string': [// Strings are multiline\n {\n pattern: /'(?:\\\\[\\s\\S]|[^\\\\'])*'/,\n greedy: true\n }, {\n // Strings are multiline\n pattern: /\"(?:\\\\[\\s\\S]|[^\\\\\"])*\"/,\n greedy: true,\n inside: {\n 'interpolation': interpolation\n }\n }],\n 'keyword': /\\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\\b/,\n 'class-member': {\n pattern: /@(?!\\d)\\w+/,\n alias: 'variable'\n }\n });\n Prism.languages.insertBefore('coffeescript', 'comment', {\n 'multiline-comment': {\n pattern: /###[\\s\\S]+?###/,\n alias: 'comment'\n },\n // Block regexp can contain comments and interpolation\n 'block-regex': {\n pattern: /\\/{3}[\\s\\S]*?\\/{3}/,\n alias: 'regex',\n inside: {\n 'comment': comment,\n 'interpolation': interpolation\n }\n }\n });\n Prism.languages.insertBefore('coffeescript', 'string', {\n 'inline-javascript': {\n pattern: /`(?:\\\\[\\s\\S]|[^\\\\`])*`/,\n inside: {\n 'delimiter': {\n pattern: /^`|`$/,\n alias: 'punctuation'\n },\n rest: Prism.languages.javascript\n }\n },\n // Block strings\n 'multiline-string': [{\n pattern: /'''[\\s\\S]*?'''/,\n greedy: true,\n alias: 'string'\n }, {\n pattern: /\"\"\"[\\s\\S]*?\"\"\"/,\n greedy: true,\n alias: 'string',\n inside: {\n interpolation: interpolation\n }\n }]\n });\n Prism.languages.insertBefore('coffeescript', 'keyword', {\n // Object property\n 'property': /(?!\\d)\\w+(?=\\s*:(?!:))/\n });\n delete Prism.languages.coffeescript['template-string'];\n Prism.languages.coffee = Prism.languages.coffeescript;\n})(Prism);\n/* \"prismjs/components/prism-js-extras\" */\n\n\n(function (Prism) {\n Prism.languages.insertBefore('javascript', 'function-variable', {\n 'method-variable': {\n pattern: RegExp('(\\\\.\\\\s*)' + Prism.languages.javascript['function-variable'].pattern.source),\n lookbehind: true,\n alias: ['function-variable', 'method', 'function', 'property-access']\n }\n });\n Prism.languages.insertBefore('javascript', 'function', {\n 'method': {\n pattern: RegExp('(\\\\.\\\\s*)' + Prism.languages.javascript['function'].source),\n lookbehind: true,\n alias: ['function', 'property-access']\n }\n });\n Prism.languages.insertBefore('javascript', 'constant', {\n 'known-class-name': [{\n // standard built-ins\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects\n pattern: /\\b(?:(?:(?:Uint|Int)(?:8|16|32)|Uint8Clamped|Float(?:32|64))?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|(?:Weak)?(?:Set|Map)|WebAssembly)\\b/,\n alias: 'class-name'\n }, {\n // errors\n pattern: /\\b(?:[A-Z]\\w*)Error\\b/,\n alias: 'class-name'\n }]\n });\n Prism.languages.javascript['keyword'].unshift({\n pattern: /\\b(?:as|default|export|from|import)\\b/,\n alias: 'module'\n }, {\n pattern: /\\bnull\\b/,\n alias: ['null', 'nil']\n }, {\n pattern: /\\bundefined\\b/,\n alias: 'nil'\n });\n Prism.languages.insertBefore('javascript', 'operator', {\n 'spread': {\n pattern: /\\.{3}/,\n alias: 'operator'\n },\n 'arrow': {\n pattern: /=>/,\n alias: 'operator'\n }\n });\n Prism.languages.insertBefore('javascript', 'punctuation', {\n 'property-access': {\n pattern: /(\\.\\s*)#?[_$a-zA-Z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*/,\n lookbehind: true\n },\n 'maybe-class-name': {\n pattern: /(^|[^$\\w\\xA0-\\uFFFF])[A-Z][$\\w\\xA0-\\uFFFF]+/,\n lookbehind: true\n },\n 'dom': {\n // this contains only a few commonly used DOM variables\n pattern: /\\b(?:document|location|navigator|performance|(?:local|session)Storage|window)\\b/,\n alias: 'variable'\n },\n 'console': {\n pattern: /\\bconsole(?=\\s*\\.)/,\n alias: 'class-name'\n }\n }); // add 'maybe-class-name' to tokens which might be a class name\n\n var maybeClassNameTokens = ['function', 'function-variable', 'method', 'method-variable', 'property-access'];\n\n for (var i = 0; i < maybeClassNameTokens.length; i++) {\n var token = maybeClassNameTokens[i];\n var value = Prism.languages.javascript[token]; // convert regex to object\n\n if (Prism.util.type(value) === 'RegExp') {\n value = Prism.languages.javascript[token] = {\n pattern: value\n };\n } // keep in mind that we don't support arrays\n\n\n var inside = value.inside || {};\n value.inside = inside;\n inside['maybe-class-name'] = /^[A-Z][\\s\\S]*/;\n }\n})(Prism);\n/* \"prismjs/components/prism-flow\" */\n\n\n(function (Prism) {\n Prism.languages.flow = Prism.languages.extend('javascript', {});\n Prism.languages.insertBefore('flow', 'keyword', {\n 'type': [{\n pattern: /\\b(?:[Nn]umber|[Ss]tring|[Bb]oolean|Function|any|mixed|null|void)\\b/,\n alias: 'tag'\n }]\n });\n Prism.languages.flow['function-variable'].pattern = /[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*(?=\\s*=\\s*(?:function\\b|(?:\\([^()]*\\)(?:\\s*:\\s*\\w+)?|[_$a-z\\xA0-\\uFFFF][$\\w\\xA0-\\uFFFF]*)\\s*=>))/i;\n delete Prism.languages.flow['parameter'];\n Prism.languages.insertBefore('flow', 'operator', {\n 'flow-punctuation': {\n pattern: /\\{\\||\\|\\}/,\n alias: 'punctuation'\n }\n });\n\n if (!Array.isArray(Prism.languages.flow.keyword)) {\n Prism.languages.flow.keyword = [Prism.languages.flow.keyword];\n }\n\n Prism.languages.flow.keyword.unshift({\n pattern: /(^|[^$]\\b)(?:type|opaque|declare|Class)\\b(?!\\$)/,\n lookbehind: true\n }, {\n pattern: /(^|[^$]\\B)\\$(?:await|Diff|Exact|Keys|ObjMap|PropertyType|Shape|Record|Supertype|Subtype|Enum)\\b(?!\\$)/,\n lookbehind: true\n });\n})(Prism);\n/* \"prismjs/components/prism-n4js\" */\n\n\nPrism.languages.n4js = Prism.languages.extend('javascript', {\n // Keywords from N4JS language spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html\n 'keyword': /\\b(?:any|Array|boolean|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|false|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|module|new|null|number|package|private|protected|public|return|set|static|string|super|switch|this|throw|true|try|typeof|var|void|while|with|yield)\\b/\n});\nPrism.languages.insertBefore('n4js', 'constant', {\n // Annotations in N4JS spec: https://numberfour.github.io/n4js/spec/N4JSSpec.html#_annotations\n 'annotation': {\n pattern: /@+\\w+/,\n alias: 'operator'\n }\n});\nPrism.languages.n4jsd = Prism.languages.n4js;\n/* \"prismjs/components/prism-typescript\" */\n\nPrism.languages.typescript = Prism.languages.extend('javascript', {\n // From JavaScript Prism keyword list and TypeScript language spec: https://github.com/Microsoft/TypeScript/blob/master/doc/spec.md#221-reserved-words\n 'keyword': /\\b(?:abstract|as|async|await|break|case|catch|class|const|constructor|continue|debugger|declare|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|is|keyof|let|module|namespace|new|null|of|package|private|protected|public|readonly|return|require|set|static|super|switch|this|throw|try|type|typeof|var|void|while|with|yield)\\b/,\n 'builtin': /\\b(?:string|Function|any|number|boolean|Array|symbol|console|Promise|unknown|never)\\b/\n});\nPrism.languages.ts = Prism.languages.typescript;\n/* \"prismjs/components/prism-js-templates\" */\n\n(function (Prism) {\n var templateString = Prism.languages.javascript['template-string']; // see the pattern in prism-javascript.js\n\n var templateLiteralPattern = templateString.pattern.source;\n var interpolationObject = templateString.inside['interpolation'];\n var interpolationPunctuationObject = interpolationObject.inside['interpolation-punctuation'];\n var interpolationPattern = interpolationObject.pattern.source;\n /**\n * Creates a new pattern to match a template string with a special tag.\n *\n * This will return `undefined` if there is no grammar with the given language id.\n *\n * @param {string} language The language id of the embedded language. E.g. `markdown`.\n * @param {string} tag The regex pattern to match the tag.\n * @returns {object | undefined}\n * @example\n * createTemplate('css', /\\bcss/.source);\n */\n\n function createTemplate(language, tag) {\n if (!Prism.languages[language]) {\n return undefined;\n }\n\n return {\n pattern: RegExp('((?:' + tag + ')\\\\s*)' + templateLiteralPattern),\n lookbehind: true,\n greedy: true,\n inside: {\n 'template-punctuation': {\n pattern: /^`|`$/,\n alias: 'string'\n },\n 'embedded-code': {\n pattern: /[\\s\\S]+/,\n alias: language\n }\n }\n };\n }\n\n Prism.languages.javascript['template-string'] = [// styled-jsx:\n // css`a { color: #25F; }`\n // styled-components:\n // styled.h1`color: red;`\n createTemplate('css', /\\b(?:styled(?:\\([^)]*\\))?(?:\\s*\\.\\s*\\w+(?:\\([^)]*\\))*)*|css(?:\\s*\\.\\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source), // html`<p></p>`\n // div.innerHTML = `<p></p>`\n createTemplate('html', /\\bhtml|\\.\\s*(?:inner|outer)HTML\\s*\\+?=/.source), // svg`<path fill=\"#fff\" d=\"M55.37 ...\"/>`\n createTemplate('svg', /\\bsvg/.source), // md`# h1`, markdown`## h2`\n createTemplate('markdown', /\\b(?:md|markdown)/.source), // gql`...`, graphql`...`, graphql.experimental`...`\n createTemplate('graphql', /\\b(?:gql|graphql(?:\\s*\\.\\s*experimental)?)/.source), // vanilla template string\n templateString].filter(Boolean);\n /**\n * Returns a specific placeholder literal for the given language.\n *\n * @param {number} counter\n * @param {string} language\n * @returns {string}\n */\n\n function getPlaceholder(counter, language) {\n return '___' + language.toUpperCase() + '_' + counter + '___';\n }\n /**\n * Returns the tokens of `Prism.tokenize` but also runs the `before-tokenize` and `after-tokenize` hooks.\n *\n * @param {string} code\n * @param {any} grammar\n * @param {string} language\n * @returns {(string|Token)[]}\n */\n\n\n function tokenizeWithHooks(code, grammar, language) {\n var env = {\n code: code,\n grammar: grammar,\n language: language\n };\n Prism.hooks.run('before-tokenize', env);\n env.tokens = Prism.tokenize(env.code, env.grammar);\n Prism.hooks.run('after-tokenize', env);\n return env.tokens;\n }\n /**\n * Returns the token of the given JavaScript interpolation expression.\n *\n * @param {string} expression The code of the expression. E.g. `\"${42}\"`\n * @returns {Token}\n */\n\n\n function tokenizeInterpolationExpression(expression) {\n var tempGrammar = {};\n tempGrammar['interpolation-punctuation'] = interpolationPunctuationObject;\n /** @type {Array} */\n\n var tokens = Prism.tokenize(expression, tempGrammar);\n\n if (tokens.length === 3) {\n /**\n * The token array will look like this\n * [\n * [\"interpolation-punctuation\", \"${\"]\n * \"...\" // JavaScript expression of the interpolation\n * [\"interpolation-punctuation\", \"}\"]\n * ]\n */\n var args = [1, 1];\n args.push.apply(args, tokenizeWithHooks(tokens[1], Prism.languages.javascript, 'javascript'));\n tokens.splice.apply(tokens, args);\n }\n\n return new Prism.Token('interpolation', tokens, interpolationObject.alias, expression);\n }\n /**\n * Tokenizes the given code with support for JavaScript interpolation expressions mixed in.\n *\n * This function has 3 phases:\n *\n * 1. Replace all JavaScript interpolation expression with a placeholder.\n * The placeholder will have the syntax of a identify of the target language.\n * 2. Tokenize the code with placeholders.\n * 3. Tokenize the interpolation expressions and re-insert them into the tokenize code.\n * The insertion only works if a placeholder hasn't been \"ripped apart\" meaning that the placeholder has been\n * tokenized as two tokens by the grammar of the embedded language.\n *\n * @param {string} code\n * @param {object} grammar\n * @param {string} language\n * @returns {Token}\n */\n\n\n function tokenizeEmbedded(code, grammar, language) {\n // 1. First filter out all interpolations\n // because they might be escaped, we need a lookbehind, so we use Prism\n\n /** @type {(Token|string)[]} */\n var _tokens = Prism.tokenize(code, {\n 'interpolation': {\n pattern: RegExp(interpolationPattern),\n lookbehind: true\n }\n }); // replace all interpolations with a placeholder which is not in the code already\n\n\n var placeholderCounter = 0;\n /** @type {Object<string, string>} */\n\n var placeholderMap = {};\n\n var embeddedCode = _tokens.map(function (token) {\n if (typeof token === 'string') {\n return token;\n } else {\n var interpolationExpression = token.content;\n var placeholder;\n\n while (code.indexOf(placeholder = getPlaceholder(placeholderCounter++, language)) !== -1) {}\n\n placeholderMap[placeholder] = interpolationExpression;\n return placeholder;\n }\n }).join(''); // 2. Tokenize the embedded code\n\n\n var embeddedTokens = tokenizeWithHooks(embeddedCode, grammar, language); // 3. Re-insert the interpolation\n\n var placeholders = Object.keys(placeholderMap);\n placeholderCounter = 0;\n /**\n *\n * @param {(Token|string)[]} tokens\n * @returns {void}\n */\n\n function walkTokens(tokens) {\n for (var i = 0; i < tokens.length; i++) {\n if (placeholderCounter >= placeholders.length) {\n return;\n }\n\n var token = tokens[i];\n\n if (typeof token === 'string' || typeof token.content === 'string') {\n var placeholder = placeholders[placeholderCounter];\n var s = typeof token === 'string' ? token :\n /** @type {string} */\n token.content;\n var index = s.indexOf(placeholder);\n\n if (index !== -1) {\n ++placeholderCounter;\n var before = s.substring(0, index);\n var middle = tokenizeInterpolationExpression(placeholderMap[placeholder]);\n var after = s.substring(index + placeholder.length);\n var replacement = [];\n\n if (before) {\n replacement.push(before);\n }\n\n replacement.push(middle);\n\n if (after) {\n var afterTokens = [after];\n walkTokens(afterTokens);\n replacement.push.apply(replacement, afterTokens);\n }\n\n if (typeof token === 'string') {\n tokens.splice.apply(tokens, [i, 1].concat(replacement));\n i += replacement.length - 1;\n } else {\n token.content = replacement;\n }\n }\n } else {\n var content = token.content;\n\n if (Array.isArray(content)) {\n walkTokens(content);\n } else {\n walkTokens([content]);\n }\n }\n }\n }\n\n walkTokens(embeddedTokens);\n return new Prism.Token(language, embeddedTokens, 'language-' + language, code);\n }\n /**\n * The languages for which JS templating will handle tagged template literals.\n *\n * JS templating isn't active for only JavaScript but also related languages like TypeScript, JSX, and TSX.\n */\n\n\n var supportedLanguages = {\n 'javascript': true,\n 'js': true,\n 'typescript': true,\n 'ts': true,\n 'jsx': true,\n 'tsx': true\n };\n Prism.hooks.add('after-tokenize', function (env) {\n if (!(env.language in supportedLanguages)) {\n return;\n }\n /**\n * Finds and tokenizes all template strings with an embedded languages.\n *\n * @param {(Token | string)[]} tokens\n * @returns {void}\n */\n\n\n function findTemplateStrings(tokens) {\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (typeof token === 'string') {\n continue;\n }\n\n var content = token.content;\n\n if (!Array.isArray(content)) {\n if (typeof content !== 'string') {\n findTemplateStrings([content]);\n }\n\n continue;\n }\n\n if (token.type === 'template-string') {\n /**\n * A JavaScript template-string token will look like this:\n *\n * [\"template-string\", [\n * [\"template-punctuation\", \"`\"],\n * (\n * An array of \"string\" and \"interpolation\" tokens. This is the simple string case.\n * or\n * [\"embedded-code\", \"...\"] This is the token containing the embedded code.\n * It also has an alias which is the language of the embedded code.\n * ),\n * [\"template-punctuation\", \"`\"]\n * ]]\n */\n var embedded = content[1];\n\n if (content.length === 3 && typeof embedded !== 'string' && embedded.type === 'embedded-code') {\n // get string content\n var code = stringContent(embedded);\n var alias = embedded.alias;\n var language = Array.isArray(alias) ? alias[0] : alias;\n var grammar = Prism.languages[language];\n\n if (!grammar) {\n // the embedded language isn't registered.\n continue;\n }\n\n content[1] = tokenizeEmbedded(code, grammar, language);\n }\n } else {\n findTemplateStrings(content);\n }\n }\n }\n\n findTemplateStrings(env.tokens);\n });\n /**\n * Returns the string content of a token or token stream.\n *\n * @param {string | Token | (string | Token)[]} value\n * @returns {string}\n */\n\n function stringContent(value) {\n if (typeof value === 'string') {\n return value;\n } else if (Array.isArray(value)) {\n return value.map(stringContent).join('');\n } else {\n return stringContent(value.content);\n }\n }\n})(Prism);\n/* \"prismjs/components/prism-graphql\" */\n\n\nPrism.languages.graphql = {\n 'comment': /#.*/,\n 'string': {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"/,\n greedy: true\n },\n 'number': /(?:\\B-|\\b)\\d+(?:\\.\\d+)?(?:e[+-]?\\d+)?\\b/i,\n 'boolean': /\\b(?:true|false)\\b/,\n 'variable': /\\$[a-z_]\\w*/i,\n 'directive': {\n pattern: /@[a-z_]\\w*/i,\n alias: 'function'\n },\n 'attr-name': {\n pattern: /[a-z_]\\w*(?=\\s*(?:\\((?:[^()\"]|\"(?:\\\\.|[^\\\\\"\\r\\n])*\")*\\))?:)/i,\n greedy: true\n },\n 'class-name': {\n pattern: /(\\b(?:enum|implements|interface|on|scalar|type|union)\\s+)[a-zA-Z_]\\w*/,\n lookbehind: true\n },\n 'fragment': {\n pattern: /(\\bfragment\\s+|\\.{3}\\s*(?!on\\b))[a-zA-Z_]\\w*/,\n lookbehind: true,\n alias: 'function'\n },\n 'keyword': /\\b(?:enum|fragment|implements|input|interface|mutation|on|query|scalar|schema|type|union)\\b/,\n 'operator': /[!=|]|\\.{3}/,\n 'punctuation': /[!(){}\\[\\]:=,]/,\n 'constant': /\\b(?!ID\\b)[A-Z][A-Z_\\d]*\\b/\n};\n/* \"prismjs/components/prism-markdown\" */\n\n(function (Prism) {\n // Allow only one line break\n var inner = /(?:\\\\.|[^\\\\\\n\\r]|(?:\\r?\\n|\\r)(?!\\r?\\n|\\r))/.source;\n /**\n * This function is intended for the creation of the bold or italic pattern.\n *\n * This also adds a lookbehind group to the given pattern to ensure that the pattern is not backslash-escaped.\n *\n * _Note:_ Keep in mind that this adds a capturing group.\n *\n * @param {string} pattern\n * @param {boolean} starAlternative Whether to also add an alternative where all `_`s are replaced with `*`s.\n * @returns {RegExp}\n */\n\n function createInline(pattern, starAlternative) {\n pattern = pattern.replace(/<inner>/g, inner);\n\n if (starAlternative) {\n pattern = pattern + '|' + pattern.replace(/_/g, '\\\\*');\n }\n\n return RegExp(/((?:^|[^\\\\])(?:\\\\{2})*)/.source + '(?:' + pattern + ')');\n }\n\n var tableCell = /(?:\\\\.|``.+?``|`[^`\\r\\n]+`|[^\\\\|\\r\\n`])+/.source;\n var tableRow = /\\|?__(?:\\|__)+\\|?(?:(?:\\r?\\n|\\r)|$)/.source.replace(/__/g, tableCell);\n var tableLine = /\\|?[ \\t]*:?-{3,}:?[ \\t]*(?:\\|[ \\t]*:?-{3,}:?[ \\t]*)+\\|?(?:\\r?\\n|\\r)/.source;\n Prism.languages.markdown = Prism.languages.extend('markup', {});\n Prism.languages.insertBefore('markdown', 'prolog', {\n 'blockquote': {\n // > ...\n pattern: /^>(?:[\\t ]*>)*/m,\n alias: 'punctuation'\n },\n 'table': {\n pattern: RegExp('^' + tableRow + tableLine + '(?:' + tableRow + ')*', 'm'),\n inside: {\n 'table-data-rows': {\n pattern: RegExp('^(' + tableRow + tableLine + ')(?:' + tableRow + ')*$'),\n lookbehind: true,\n inside: {\n 'table-data': {\n pattern: RegExp(tableCell),\n inside: Prism.languages.markdown\n },\n 'punctuation': /\\|/\n }\n },\n 'table-line': {\n pattern: RegExp('^(' + tableRow + ')' + tableLine + '$'),\n lookbehind: true,\n inside: {\n 'punctuation': /\\||:?-{3,}:?/\n }\n },\n 'table-header-row': {\n pattern: RegExp('^' + tableRow + '$'),\n inside: {\n 'table-header': {\n pattern: RegExp(tableCell),\n alias: 'important',\n inside: Prism.languages.markdown\n },\n 'punctuation': /\\|/\n }\n }\n }\n },\n 'code': [{\n // Prefixed by 4 spaces or 1 tab and preceded by an empty line\n pattern: /(^[ \\t]*(?:\\r?\\n|\\r))(?: {4}|\\t).+(?:(?:\\r?\\n|\\r)(?: {4}|\\t).+)*/m,\n lookbehind: true,\n alias: 'keyword'\n }, {\n // `code`\n // ``code``\n pattern: /``.+?``|`[^`\\r\\n]+`/,\n alias: 'keyword'\n }, {\n // ```optional language\n // code block\n // ```\n pattern: /^```[\\s\\S]*?^```$/m,\n greedy: true,\n inside: {\n 'code-block': {\n pattern: /^(```.*(?:\\r?\\n|\\r))[\\s\\S]+?(?=(?:\\r?\\n|\\r)^```$)/m,\n lookbehind: true\n },\n 'code-language': {\n pattern: /^(```).+/,\n lookbehind: true\n },\n 'punctuation': /```/\n }\n }],\n 'title': [{\n // title 1\n // =======\n // title 2\n // -------\n pattern: /\\S.*(?:\\r?\\n|\\r)(?:==+|--+)(?=[ \\t]*$)/m,\n alias: 'important',\n inside: {\n punctuation: /==+$|--+$/\n }\n }, {\n // # title 1\n // ###### title 6\n pattern: /(^\\s*)#+.+/m,\n lookbehind: true,\n alias: 'important',\n inside: {\n punctuation: /^#+|#+$/\n }\n }],\n 'hr': {\n // ***\n // ---\n // * * *\n // -----------\n pattern: /(^\\s*)([*-])(?:[\\t ]*\\2){2,}(?=\\s*$)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'list': {\n // * item\n // + item\n // - item\n // 1. item\n pattern: /(^\\s*)(?:[*+-]|\\d+\\.)(?=[\\t ].)/m,\n lookbehind: true,\n alias: 'punctuation'\n },\n 'url-reference': {\n // [id]: http://example.com \"Optional title\"\n // [id]: http://example.com 'Optional title'\n // [id]: http://example.com (Optional title)\n // [id]: <http://example.com> \"Optional title\"\n pattern: /!?\\[[^\\]]+\\]:[\\t ]+(?:\\S+|<(?:\\\\.|[^>\\\\])+>)(?:[\\t ]+(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\)))?/,\n inside: {\n 'variable': {\n pattern: /^(!?\\[)[^\\]]+/,\n lookbehind: true\n },\n 'string': /(?:\"(?:\\\\.|[^\"\\\\])*\"|'(?:\\\\.|[^'\\\\])*'|\\((?:\\\\.|[^)\\\\])*\\))$/,\n 'punctuation': /^[\\[\\]!:]|[<>]/\n },\n alias: 'url'\n },\n 'bold': {\n // **strong**\n // __strong__\n // allow one nested instance of italic text using the same delimiter\n pattern: createInline(/__(?:(?!_)<inner>|_(?:(?!_)<inner>)+_)+__/.source, true),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^..)[\\s\\S]+(?=..$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /\\*\\*|__/\n }\n },\n 'italic': {\n // *em*\n // _em_\n // allow one nested instance of bold text using the same delimiter\n pattern: createInline(/_(?:(?!_)<inner>|__(?:(?!_)<inner>)+__)+_/.source, true),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^.)[\\s\\S]+(?=.$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /[*_]/\n }\n },\n 'strike': {\n // ~~strike through~~\n // ~strike~\n pattern: createInline(/(~~?)(?:(?!~)<inner>)+?\\2/.source, false),\n lookbehind: true,\n greedy: true,\n inside: {\n 'content': {\n pattern: /(^~~?)[\\s\\S]+(?=\\1$)/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'punctuation': /~~?/\n }\n },\n 'url': {\n // [example](http://example.com \"Optional title\")\n // [example][id]\n // [example] [id]\n pattern: createInline(/!?\\[(?:(?!\\])<inner>)+\\](?:\\([^\\s)]+(?:[\\t ]+\"(?:\\\\.|[^\"\\\\])*\")?\\)| ?\\[(?:(?!\\])<inner>)+\\])/.source, false),\n lookbehind: true,\n greedy: true,\n inside: {\n 'variable': {\n pattern: /(\\[)[^\\]]+(?=\\]$)/,\n lookbehind: true\n },\n 'content': {\n pattern: /(^!?\\[)[^\\]]+(?=\\])/,\n lookbehind: true,\n inside: {} // see below\n\n },\n 'string': {\n pattern: /\"(?:\\\\.|[^\"\\\\])*\"(?=\\)$)/\n }\n }\n }\n });\n ['url', 'bold', 'italic', 'strike'].forEach(function (token) {\n ['url', 'bold', 'italic', 'strike'].forEach(function (inside) {\n if (token !== inside) {\n Prism.languages.markdown[token].inside.content.inside[inside] = Prism.languages.markdown[inside];\n }\n });\n });\n Prism.hooks.add('after-tokenize', function (env) {\n if (env.language !== 'markdown' && env.language !== 'md') {\n return;\n }\n\n function walkTokens(tokens) {\n if (!tokens || typeof tokens === 'string') {\n return;\n }\n\n for (var i = 0, l = tokens.length; i < l; i++) {\n var token = tokens[i];\n\n if (token.type !== 'code') {\n walkTokens(token.content);\n continue;\n }\n /*\n * Add the correct `language-xxxx` class to this code block. Keep in mind that the `code-language` token\n * is optional. But the grammar is defined so that there is only one case we have to handle:\n *\n * token.content = [\n * <span class=\"punctuation\">```</span>,\n * <span class=\"code-language\">xxxx</span>,\n * '\\n', // exactly one new lines (\\r or \\n or \\r\\n)\n * <span class=\"code-block\">...</span>,\n * '\\n', // exactly one new lines again\n * <span class=\"punctuation\">```</span>\n * ];\n */\n\n\n var codeLang = token.content[1];\n var codeBlock = token.content[3];\n\n if (codeLang && codeBlock && codeLang.type === 'code-language' && codeBlock.type === 'code-block' && typeof codeLang.content === 'string') {\n // this might be a language that Prism does not support\n var alias = 'language-' + codeLang.content.trim().split(/\\s+/)[0].toLowerCase(); // add alias\n\n if (!codeBlock.alias) {\n codeBlock.alias = [alias];\n } else if (typeof codeBlock.alias === 'string') {\n codeBlock.alias = [codeBlock.alias, alias];\n } else {\n codeBlock.alias.push(alias);\n }\n }\n }\n }\n\n walkTokens(env.tokens);\n });\n Prism.hooks.add('wrap', function (env) {\n if (env.type !== 'code-block') {\n return;\n }\n\n var codeLang = '';\n\n for (var i = 0, l = env.classes.length; i < l; i++) {\n var cls = env.classes[i];\n var match = /language-(.+)/.exec(cls);\n\n if (match) {\n codeLang = match[1];\n break;\n }\n }\n\n var grammar = Prism.languages[codeLang];\n\n if (!grammar) {\n if (codeLang && codeLang !== 'none' && Prism.plugins.autoloader) {\n var id = 'md-' + new Date().valueOf() + '-' + Math.floor(Math.random() * 1e16);\n env.attributes['id'] = id;\n Prism.plugins.autoloader.loadLanguages(codeLang, function () {\n var ele = document.getElementById(id);\n\n if (ele) {\n ele.innerHTML = Prism.highlight(ele.textContent, Prism.languages[codeLang], codeLang);\n }\n });\n }\n } else {\n // reverse Prism.util.encode\n var code = env.content.replace(/</g, '<').replace(/&/g, '&');\n env.content = Prism.highlight(code, grammar, codeLang);\n }\n });\n Prism.languages.md = Prism.languages.markdown;\n})(Prism);\n/* \"prismjs/components/prism-diff\" */\n\n\n(function (Prism) {\n Prism.languages.diff = {\n 'coord': [// Match all kinds of coord lines (prefixed by \"+++\", \"---\" or \"***\").\n /^(?:\\*{3}|-{3}|\\+{3}).*$/m, // Match \"@@ ... @@\" coord lines in unified diff.\n /^@@.*@@$/m, // Match coord lines in normal diff (starts with a number).\n /^\\d+.*$/m] // deleted, inserted, unchanged, diff\n\n };\n /**\n * A map from the name of a block to its line prefix.\n *\n * @type {Object<string, string>}\n */\n\n var PREFIXES = {\n 'deleted-sign': '-',\n 'deleted-arrow': '<',\n 'inserted-sign': '+',\n 'inserted-arrow': '>',\n 'unchanged': ' ',\n 'diff': '!'\n }; // add a token for each prefix\n\n Object.keys(PREFIXES).forEach(function (name) {\n var prefix = PREFIXES[name];\n var alias = [];\n\n if (!/^\\w+$/.test(name)) {\n // \"deleted-sign\" -> \"deleted\"\n alias.push(/\\w+/.exec(name)[0]);\n }\n\n if (name === \"diff\") {\n alias.push(\"bold\");\n }\n\n Prism.languages.diff[name] = {\n // pattern: /^(?:[_].*(?:\\r\\n?|\\n|(?![\\s\\S])))+/m\n pattern: RegExp('^(?:[' + prefix + '].*(?:\\r\\n?|\\n|(?![\\\\s\\\\S])))+', 'm'),\n alias: alias\n };\n }); // make prefixes available to Diff plugin\n\n Object.defineProperty(Prism.languages.diff, 'PREFIXES', {\n value: PREFIXES\n });\n})(Prism);\n/* \"prismjs/components/prism-git\" */\n\n\nPrism.languages.git = {\n /*\n * A simple one line comment like in a git status command\n * For instance:\n * $ git status\n * # On branch infinite-scroll\n * # Your branch and 'origin/sharedBranches/frontendTeam/infinite-scroll' have diverged,\n * # and have 1 and 2 different commits each, respectively.\n * nothing to commit (working directory clean)\n */\n 'comment': /^#.*/m,\n\n /*\n * Regexp to match the changed lines in a git diff output. Check the example below.\n */\n 'deleted': /^[-–].*/m,\n 'inserted': /^\\+.*/m,\n\n /*\n * a string (double and simple quote)\n */\n 'string': /(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/m,\n\n /*\n * a git command. It starts with a random prompt finishing by a $, then \"git\" then some other parameters\n * For instance:\n * $ git add file.txt\n */\n 'command': {\n pattern: /^.*\\$ git .*$/m,\n inside: {\n /*\n * A git command can contain a parameter starting by a single or a double dash followed by a string\n * For instance:\n * $ git diff --cached\n * $ git log -p\n */\n 'parameter': /\\s--?\\w+/m\n }\n },\n\n /*\n * Coordinates displayed in a git diff command\n * For instance:\n * $ git diff\n * diff --git file.txt file.txt\n * index 6214953..1d54a52 100644\n * --- file.txt\n * +++ file.txt\n * @@ -1 +1,2 @@\n * -Here's my tetx file\n * +Here's my text file\n * +And this is the second line\n */\n 'coord': /^@@.*@@$/m,\n\n /*\n * Match a \"commit [SHA1]\" line in a git log output.\n * For instance:\n * $ git log\n * commit a11a14ef7e26f2ca62d4b35eac455ce636d0dc09\n * Author: lgiraudel\n * Date: Mon Feb 17 11:18:34 2014 +0100\n *\n * Add of a new line\n */\n 'commit_sha1': /^commit \\w{40}$/m\n};\n/* \"prismjs/components/prism-go\" */\n\nPrism.languages.go = Prism.languages.extend('clike', {\n 'keyword': /\\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\\b/,\n 'builtin': /\\b(?:bool|byte|complex(?:64|128)|error|float(?:32|64)|rune|string|u?int(?:8|16|32|64)?|uintptr|append|cap|close|complex|copy|delete|imag|len|make|new|panic|print(?:ln)?|real|recover)\\b/,\n 'boolean': /\\b(?:_|iota|nil|true|false)\\b/,\n 'operator': /[*\\/%^!=]=?|\\+[=+]?|-[=-]?|\\|[=|]?|&(?:=|&|\\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\\.\\.\\./,\n 'number': /(?:\\b0x[a-f\\d]+|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:e[-+]?\\d+)?)i?/i,\n 'string': {\n pattern: /([\"'`])(\\\\[\\s\\S]|(?!\\1)[^\\\\])*\\1/,\n greedy: true\n }\n});\ndelete Prism.languages.go['class-name'];\n/* \"prismjs/components/prism-handlebars\" */\n\n(function (Prism) {\n Prism.languages.handlebars = {\n 'comment': /\\{\\{![\\s\\S]*?\\}\\}/,\n 'delimiter': {\n pattern: /^\\{\\{\\{?|\\}\\}\\}?$/i,\n alias: 'punctuation'\n },\n 'string': /([\"'])(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/,\n 'number': /\\b0x[\\dA-Fa-f]+\\b|(?:\\b\\d+\\.?\\d*|\\B\\.\\d+)(?:[Ee][+-]?\\d+)?/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'block': {\n pattern: /^(\\s*~?\\s*)[#\\/]\\S+?(?=\\s*~?\\s*$|\\s)/i,\n lookbehind: true,\n alias: 'keyword'\n },\n 'brackets': {\n pattern: /\\[[^\\]]+\\]/,\n inside: {\n punctuation: /\\[|\\]/,\n variable: /[\\s\\S]+/\n }\n },\n 'punctuation': /[!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~]/,\n 'variable': /[^!\"#%&'()*+,.\\/;<=>@\\[\\\\\\]^`{|}~\\s]+/\n };\n Prism.hooks.add('before-tokenize', function (env) {\n var handlebarsPattern = /\\{\\{\\{[\\s\\S]+?\\}\\}\\}|\\{\\{[\\s\\S]+?\\}\\}/g;\n Prism.languages['markup-templating'].buildPlaceholders(env, 'handlebars', handlebarsPattern);\n });\n Prism.hooks.add('after-tokenize', function (env) {\n Prism.languages['markup-templating'].tokenizePlaceholders(env, 'handlebars');\n });\n})(Prism);\n/* \"prismjs/components/prism-json\" */\n\n\nPrism.languages.json = {\n 'property': {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?=\\s*:)/,\n greedy: true\n },\n 'string': {\n pattern: /\"(?:\\\\.|[^\\\\\"\\r\\n])*\"(?!\\s*:)/,\n greedy: true\n },\n 'comment': /\\/\\/.*|\\/\\*[\\s\\S]*?(?:\\*\\/|$)/,\n 'number': /-?\\d+\\.?\\d*(e[+-]?\\d+)?/i,\n 'punctuation': /[{}[\\],]/,\n 'operator': /:/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n }\n};\n/* \"prismjs/components/prism-less\" */\n\n/* FIXME :\n :extend() is not handled specifically : its highlighting is buggy.\n Mixin usage must be inside a ruleset to be highlighted.\n At-rules (e.g. import) containing interpolations are buggy.\n Detached rulesets are highlighted as at-rules.\n A comment before a mixin usage prevents the latter to be properly highlighted.\n */\n\nPrism.languages.less = Prism.languages.extend('css', {\n 'comment': [/\\/\\*[\\s\\S]*?\\*\\//, {\n pattern: /(^|[^\\\\])\\/\\/.*/,\n lookbehind: true\n }],\n 'atrule': {\n pattern: /@[\\w-]+?(?:\\([^{}]+\\)|[^(){};])*?(?=\\s*\\{)/i,\n inside: {\n 'punctuation': /[:()]/\n }\n },\n // selectors and mixins are considered the same\n 'selector': {\n pattern: /(?:@\\{[\\w-]+\\}|[^{};\\s@])(?:@\\{[\\w-]+\\}|\\([^{}]*\\)|[^{};@])*?(?=\\s*\\{)/,\n inside: {\n // mixin parameters\n 'variable': /@+[\\w-]+/\n }\n },\n 'property': /(?:@\\{[\\w-]+\\}|[\\w-])+(?:\\+_?)?(?=\\s*:)/i,\n 'operator': /[+\\-*\\/]/\n});\nPrism.languages.insertBefore('less', 'property', {\n 'variable': [// Variable declaration (the colon must be consumed!)\n {\n pattern: /@[\\w-]+\\s*:/,\n inside: {\n \"punctuation\": /:/\n }\n }, // Variable usage\n /@@?[\\w-]+/],\n 'mixin-usage': {\n pattern: /([{;]\\s*)[.#](?!\\d)[\\w-]+.*?(?=[(;])/,\n lookbehind: true,\n alias: 'function'\n }\n});\n/* \"prismjs/components/prism-makefile\" */\n\nPrism.languages.makefile = {\n 'comment': {\n pattern: /(^|[^\\\\])#(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n])*/,\n lookbehind: true\n },\n 'string': {\n pattern: /([\"'])(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n greedy: true\n },\n // Built-in target names\n 'builtin': /\\.[A-Z][^:#=\\s]+(?=\\s*:(?!=))/,\n // Targets\n 'symbol': {\n pattern: /^[^:=\\r\\n]+(?=\\s*:(?!=))/m,\n inside: {\n 'variable': /\\$+(?:[^(){}:#=\\s]+|(?=[({]))/\n }\n },\n 'variable': /\\$+(?:[^(){}:#=\\s]+|\\([@*%<^+?][DF]\\)|(?=[({]))/,\n 'keyword': [// Directives\n /-include\\b|\\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\\b/, // Functions\n {\n pattern: /(\\()(?:addsuffix|abspath|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:s|list)?)(?=[ \\t])/,\n lookbehind: true\n }],\n 'operator': /(?:::|[?:+!])?=|[|@]/,\n 'punctuation': /[:;(){}]/\n};\n/* \"prismjs/components/prism-objectivec\" */\n\nPrism.languages.objectivec = Prism.languages.extend('c', {\n 'keyword': /\\b(?:asm|typeof|inline|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|union|unsigned|void|volatile|while|in|self|super)\\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\\b/,\n 'string': /(\"|')(?:\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1|@\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\"\\\\\\r\\n])*\"/,\n 'operator': /-[->]?|\\+\\+?|!=?|<<?=?|>>?=?|==?|&&?|\\|\\|?|[~^%?*\\/@]/\n});\ndelete Prism.languages.objectivec['class-name'];\n/* \"prismjs/components/prism-ocaml\" */\n\nPrism.languages.ocaml = {\n 'comment': /\\(\\*[\\s\\S]*?\\*\\)/,\n 'string': [{\n pattern: /\"(?:\\\\.|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n }, {\n pattern: /(['`])(?:\\\\(?:\\d+|x[\\da-f]+|.)|(?!\\1)[^\\\\\\r\\n])\\1/i,\n greedy: true\n }],\n 'number': /\\b(?:0x[\\da-f][\\da-f_]+|(?:0[bo])?\\d[\\d_]*\\.?[\\d_]*(?:e[+-]?[\\d_]+)?)/i,\n 'type': {\n pattern: /\\B['`]\\w*/,\n alias: 'variable'\n },\n 'directive': {\n pattern: /\\B#\\w+/,\n alias: 'function'\n },\n 'keyword': /\\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|object|of|open|prefix|private|rec|then|sig|struct|to|try|type|val|value|virtual|where|while|with)\\b/,\n 'boolean': /\\b(?:false|true)\\b/,\n // Custom operators are allowed\n 'operator': /:=|[=<>@^|&+\\-*\\/$%!?~][!$%&*+\\-.\\/:<=>?@^|~]*|\\b(?:and|asr|land|lor|lxor|lsl|lsr|mod|nor|or)\\b/,\n 'punctuation': /[(){}\\[\\]|_.,:;]/\n};\n/* \"prismjs/components/prism-python\" */\n\nPrism.languages.python = {\n 'comment': {\n pattern: /(^|[^\\\\])#.*/,\n lookbehind: true\n },\n 'string-interpolation': {\n pattern: /(?:f|rf|fr)(?:(\"\"\"|''')[\\s\\S]+?\\1|(\"|')(?:\\\\.|(?!\\2)[^\\\\\\r\\n])*\\2)/i,\n greedy: true,\n inside: {\n 'interpolation': {\n // \"{\" <expression> <optional \"!s\", \"!r\", or \"!a\"> <optional \":\" format specifier> \"}\"\n pattern: /((?:^|[^{])(?:{{)*){(?!{)(?:[^{}]|{(?!{)(?:[^{}]|{(?!{)(?:[^{}])+})+})+}/,\n lookbehind: true,\n inside: {\n 'format-spec': {\n pattern: /(:)[^:(){}]+(?=}$)/,\n lookbehind: true\n },\n 'conversion-option': {\n pattern: //,\n alias: 'punctuation'\n },\n rest: null\n }\n },\n 'string': /[\\s\\S]+/\n }\n },\n 'triple-quoted-string': {\n pattern: /(?:[rub]|rb|br)?(\"\"\"|''')[\\s\\S]+?\\1/i,\n greedy: true,\n alias: 'string'\n },\n 'string': {\n pattern: /(?:[rub]|rb|br)?(\"|')(?:\\\\.|(?!\\1)[^\\\\\\r\\n])*\\1/i,\n greedy: true\n },\n 'function': {\n pattern: /((?:^|\\s)def[ \\t]+)[a-zA-Z_]\\w*(?=\\s*\\()/g,\n lookbehind: true\n },\n 'class-name': {\n pattern: /(\\bclass\\s+)\\w+/i,\n lookbehind: true\n },\n 'decorator': {\n pattern: /(^\\s*)@\\w+(?:\\.\\w+)*/i,\n lookbehind: true,\n alias: ['annotation', 'punctuation'],\n inside: {\n 'punctuation': /\\./\n }\n },\n 'keyword': /\\b(?:and|as|assert|async|await|break|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\\b/,\n 'builtin': /\\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\\b/,\n 'boolean': /\\b(?:True|False|None)\\b/,\n 'number': /(?:\\b(?=\\d)|\\B(?=\\.))(?:0[bo])?(?:(?:\\d|0x[\\da-f])[\\da-f]*\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?j?\\b/i,\n 'operator': /[-+%=]=?|!=|\\*\\*?=?|\\/\\/?=?|<[<=>]?|>[=>]?|[&|^~]/,\n 'punctuation': /[{}[\\];(),.:]/\n};\nPrism.languages.python['string-interpolation'].inside['interpolation'].inside.rest = Prism.languages.python;\nPrism.languages.py = Prism.languages.python;\n/* \"prismjs/components/prism-reason\" */\n\nPrism.languages.reason = Prism.languages.extend('clike', {\n 'comment': {\n pattern: /(^|[^\\\\])\\/\\*[\\s\\S]*?\\*\\//,\n lookbehind: true\n },\n 'string': {\n pattern: /\"(?:\\\\(?:\\r\\n|[\\s\\S])|[^\\\\\\r\\n\"])*\"/,\n greedy: true\n },\n // 'class-name' must be matched *after* 'constructor' defined below\n 'class-name': /\\b[A-Z]\\w*/,\n 'keyword': /\\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\\b/,\n 'operator': /\\.{3}|:[:=]|\\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\\-*\\/]\\.?|\\b(?:mod|land|lor|lxor|lsl|lsr|asr)\\b/\n});\nPrism.languages.insertBefore('reason', 'class-name', {\n 'character': {\n pattern: /'(?:\\\\x[\\da-f]{2}|\\\\o[0-3][0-7][0-7]|\\\\\\d{3}|\\\\.|[^'\\\\\\r\\n])'/,\n alias: 'string'\n },\n 'constructor': {\n // Negative look-ahead prevents from matching things like String.capitalize\n pattern: /\\b[A-Z]\\w*\\b(?!\\s*\\.)/,\n alias: 'variable'\n },\n 'label': {\n pattern: /\\b[a-z]\\w*(?=::)/,\n alias: 'symbol'\n }\n}); // We can't match functions property, so let's not even try.\n\ndelete Prism.languages.reason.function;\n/* \"prismjs/components/prism-sass\" */\n\n(function (Prism) {\n Prism.languages.sass = Prism.languages.extend('css', {\n // Sass comments don't need to be closed, only indented\n 'comment': {\n pattern: /^([ \\t]*)\\/[\\/*].*(?:(?:\\r?\\n|\\r)\\1[ \\t]+.+)*/m,\n lookbehind: true\n }\n });\n Prism.languages.insertBefore('sass', 'atrule', {\n // We want to consume the whole line\n 'atrule-line': {\n // Includes support for = and + shortcuts\n pattern: /^(?:[ \\t]*)[@+=].+/m,\n inside: {\n 'atrule': /(?:@[\\w-]+|[+=])/m\n }\n }\n });\n delete Prism.languages.sass.atrule;\n var variable = /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/;\n var operator = [/[+*\\/%]|[=!]=|<=?|>=?|\\b(?:and|or|not)\\b/, {\n pattern: /(\\s+)-(?=\\s)/,\n lookbehind: true\n }];\n Prism.languages.insertBefore('sass', 'property', {\n // We want to consume the whole line\n 'variable-line': {\n pattern: /^[ \\t]*\\$.+/m,\n inside: {\n 'punctuation': /:/,\n 'variable': variable,\n 'operator': operator\n }\n },\n // We want to consume the whole line\n 'property-line': {\n pattern: /^[ \\t]*(?:[^:\\s]+ *:.*|:[^:\\s]+.*)/m,\n inside: {\n 'property': [/[^:\\s]+(?=\\s*:)/, {\n pattern: /(:)[^:\\s]+/,\n lookbehind: true\n }],\n 'punctuation': /:/,\n 'variable': variable,\n 'operator': operator,\n 'important': Prism.languages.sass.important\n }\n }\n });\n delete Prism.languages.sass.property;\n delete Prism.languages.sass.important; // Now that whole lines for other patterns are consumed,\n // what's left should be selectors\n\n Prism.languages.insertBefore('sass', 'punctuation', {\n 'selector': {\n pattern: /([ \\t]*)\\S(?:,?[^,\\r\\n]+)*(?:,(?:\\r?\\n|\\r)\\1[ \\t]+\\S(?:,?[^,\\r\\n]+)*)*/,\n lookbehind: true\n }\n });\n})(Prism);\n/* \"prismjs/components/prism-scss\" */\n\n\nPrism.languages.scss = Prism.languages.extend('css', {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n 'atrule': {\n pattern: /@[\\w-]+(?:\\([^()]+\\)|[^(])*?(?=\\s+[{;])/,\n inside: {\n 'rule': /@[\\w-]+/ // See rest below\n\n }\n },\n // url, compassified\n 'url': /(?:[-a-z]+-)?url(?=\\()/i,\n // CSS selector regex is not appropriate for Sass\n // since there can be lot more things (var, @ directive, nesting..)\n // a selector must start at the end of a property or after a brace (end of other rules or nesting)\n // it can contain some characters that aren't used for defining rules or end of selector, & (parent selector), or interpolated variable\n // the end of a selector is found when there is no rules in it ( {} or {\\s}) or if there is a property (because an interpolated var\n // can \"pass\" as a selector- e.g: proper#{$erty})\n // this one was hard to do, so please be careful if you edit this one :)\n 'selector': {\n // Initial look-ahead is used to prevent matching of blank selectors\n pattern: /(?=\\S)[^@;{}()]?(?:[^@;{}()]|#\\{\\$[-\\w]+\\})+(?=\\s*\\{(?:\\}|\\s|[^}]+[:{][^}]+))/m,\n inside: {\n 'parent': {\n pattern: /&/,\n alias: 'important'\n },\n 'placeholder': /%[-\\w]+/,\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n },\n 'property': {\n pattern: /(?:[\\w-]|\\$[-\\w]+|#\\{\\$[-\\w]+\\})+(?=\\s*:)/,\n inside: {\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n }\n }\n});\nPrism.languages.insertBefore('scss', 'atrule', {\n 'keyword': [/@(?:if|else(?: if)?|for|each|while|import|extend|debug|warn|mixin|include|function|return|content)/i, {\n pattern: /( +)(?:from|through)(?= )/,\n lookbehind: true\n }]\n});\nPrism.languages.insertBefore('scss', 'important', {\n // var and interpolated vars\n 'variable': /\\$[-\\w]+|#\\{\\$[-\\w]+\\}/\n});\nPrism.languages.insertBefore('scss', 'function', {\n 'placeholder': {\n pattern: /%[-\\w]+/,\n alias: 'selector'\n },\n 'statement': {\n pattern: /\\B!(?:default|optional)\\b/i,\n alias: 'keyword'\n },\n 'boolean': /\\b(?:true|false)\\b/,\n 'null': {\n pattern: /\\bnull\\b/,\n alias: 'keyword'\n },\n 'operator': {\n pattern: /(\\s)(?:[-+*\\/%]|[=!]=|<=?|>=?|and|or|not)(?=\\s)/,\n lookbehind: true\n }\n});\nPrism.languages.scss['atrule'].inside.rest = Prism.languages.scss;\n/* \"prismjs/components/prism-sql\" */\n\nPrism.languages.sql = {\n 'comment': {\n pattern: /(^|[^\\\\])(?:\\/\\*[\\s\\S]*?\\*\\/|(?:--|\\/\\/|#).*)/,\n lookbehind: true\n },\n 'variable': [{\n pattern: /@([\"'`])(?:\\\\[\\s\\S]|(?!\\1)[^\\\\])+\\1/,\n greedy: true\n }, /@[\\w.$]+/],\n 'string': {\n pattern: /(^|[^@\\\\])(\"|')(?:\\\\[\\s\\S]|(?!\\2)[^\\\\]|\\2\\2)*\\2/,\n greedy: true,\n lookbehind: true\n },\n 'function': /\\b(?:AVG|COUNT|FIRST|FORMAT|LAST|LCASE|LEN|MAX|MID|MIN|MOD|NOW|ROUND|SUM|UCASE)(?=\\s*\\()/i,\n // 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(?:_INSERT|COL)?|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|RETURNS?|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(?:TRUE|FALSE|NULL)\\b/i,\n 'number': /\\b0x[\\da-f]+\\b|\\b\\d+\\.?\\d*|\\B\\.\\d+\\b/i,\n 'operator': /[-+*\\/=%^~]|&&?|\\|\\|?|!=?|<(?:=>?|<|>)?|>[>=]?|\\b(?:AND|BETWEEN|IN|LIKE|NOT|OR|IS|DIV|REGEXP|RLIKE|SOUNDS LIKE|XOR)\\b/i,\n 'punctuation': /[;[\\]()`,.]/\n};\n/* \"prismjs/components/prism-stylus\" */\n\n(function (Prism) {\n var inside = {\n 'url': /url\\(([\"']?).*?\\1\\)/i,\n 'string': {\n pattern: /(\"|')(?:(?!\\1)[^\\\\\\r\\n]|\\\\(?:\\r\\n|[\\s\\S]))*\\1/,\n greedy: true\n },\n 'interpolation': null,\n // See below\n 'func': null,\n // See below\n 'important': /\\B!(?:important|optional)\\b/i,\n 'keyword': {\n pattern: /(^|\\s+)(?:(?:if|else|for|return|unless)(?=\\s+|$)|@[\\w-]+)/,\n lookbehind: true\n },\n 'hexcode': /#[\\da-f]{3,6}/i,\n 'number': /\\b\\d+(?:\\.\\d+)?%?/,\n 'boolean': /\\b(?:true|false)\\b/,\n 'operator': [// We want non-word chars around \"-\" because it is\n // accepted in property names.\n /~|[+!\\/%<>?=]=?|[-:]=|\\*[*=]?|\\.+|&&|\\|\\||\\B-\\B|\\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\\b/],\n 'punctuation': /[{}()\\[\\];:,]/\n };\n inside['interpolation'] = {\n pattern: /\\{[^\\r\\n}:]+\\}/,\n alias: 'variable',\n inside: {\n 'delimiter': {\n pattern: /^{|}$/,\n alias: 'punctuation'\n },\n rest: inside\n }\n };\n inside['func'] = {\n pattern: /[\\w-]+\\([^)]*\\).*/,\n inside: {\n 'function': /^[^(]+/,\n rest: inside\n }\n };\n Prism.languages.stylus = {\n 'comment': {\n pattern: /(^|[^\\\\])(\\/\\*[\\s\\S]*?\\*\\/|\\/\\/.*)/,\n lookbehind: true\n },\n 'atrule-declaration': {\n pattern: /(^\\s*)@.+/m,\n lookbehind: true,\n inside: {\n 'atrule': /^@[\\w-]+/,\n rest: inside\n }\n },\n 'variable-declaration': {\n pattern: /(^[ \\t]*)[\\w$-]+\\s*.?=[ \\t]*(?:(?:\\{[^}]*\\}|.+)|$)/m,\n lookbehind: true,\n inside: {\n 'variable': /^\\S+/,\n rest: inside\n }\n },\n 'statement': {\n pattern: /(^[ \\t]*)(?:if|else|for|return|unless)[ \\t]+.+/m,\n lookbehind: true,\n inside: {\n keyword: /^\\S+/,\n rest: inside\n }\n },\n // A property/value pair cannot end with a comma or a brace\n // It cannot have indented content unless it ended with a semicolon\n 'property-declaration': {\n pattern: /((?:^|\\{)([ \\t]*))(?:[\\w-]|\\{[^}\\r\\n]+\\})+(?:\\s*:\\s*|[ \\t]+)[^{\\r\\n]*(?:;|[^{\\r\\n,](?=$)(?!(\\r?\\n|\\r)(?:\\{|\\2[ \\t]+)))/m,\n lookbehind: true,\n inside: {\n 'property': {\n pattern: /^[^\\s:]+/,\n inside: {\n 'interpolation': inside.interpolation\n }\n },\n rest: inside\n }\n },\n // A selector can contain parentheses only as part of a pseudo-element\n // It can span multiple lines.\n // It must end with a comma or an accolade or have indented content.\n 'selector': {\n pattern: /(^[ \\t]*)(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)(?:(?:\\r?\\n|\\r)(?:\\1(?:(?=\\S)(?:[^{}\\r\\n:()]|::?[\\w-]+(?:\\([^)\\r\\n]*\\))?|\\{[^}\\r\\n]+\\})+)))*(?:,$|\\{|(?=(?:\\r?\\n|\\r)(?:\\{|\\1[ \\t]+)))/m,\n lookbehind: true,\n inside: {\n 'interpolation': inside.interpolation,\n 'punctuation': /[{},]/\n }\n },\n 'func': inside.func,\n 'string': inside.string,\n 'interpolation': inside.interpolation,\n 'punctuation': /[{}()\\[\\];:.]/\n };\n})(Prism);\n/* \"prismjs/components/prism-tsx\" */\n\n\nvar typescript = Prism.util.clone(Prism.languages.typescript);\nPrism.languages.tsx = Prism.languages.extend('jsx', typescript);\n/* \"prismjs/components/prism-wasm\" */\n\nPrism.languages.wasm = {\n 'comment': [/\\(;[\\s\\S]*?;\\)/, {\n pattern: /;;.*/,\n greedy: true\n }],\n 'string': {\n pattern: /\"(?:\\\\[\\s\\S]|[^\"\\\\])*\"/,\n greedy: true\n },\n 'keyword': [{\n pattern: /\\b(?:align|offset)=/,\n inside: {\n 'operator': /=/\n }\n }, {\n pattern: /\\b(?:(?:f32|f64|i32|i64)(?:\\.(?:abs|add|and|ceil|clz|const|convert_[su]\\/i(?:32|64)|copysign|ctz|demote\\/f64|div(?:_[su])?|eqz?|extend_[su]\\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|nearest|neg?|or|popcnt|promote\\/f32|reinterpret\\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|store(?:8|16|32)?|sqrt|sub|trunc(?:_[su]\\/f(?:32|64))?|wrap\\/i64|xor))?|memory\\.(?:grow|size))\\b/,\n inside: {\n 'punctuation': /\\./\n }\n }, /\\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\\b/],\n 'variable': /\\$[\\w!#$%&'*+\\-./:<=>?@\\\\^_`|~]+/i,\n 'number': /[+-]?\\b(?:\\d(?:_?\\d)*(?:\\.\\d(?:_?\\d)*)?(?:[eE][+-]?\\d(?:_?\\d)*)?|0x[\\da-fA-F](?:_?[\\da-fA-F])*(?:\\.[\\da-fA-F](?:_?[\\da-fA-D])*)?(?:[pP][+-]?\\d(?:_?\\d)*)?)\\b|\\binf\\b|\\bnan(?::0x[\\da-fA-F](?:_?[\\da-fA-D])*)?\\b/,\n 'punctuation': /[()]/\n};\n/* \"prismjs/components/prism-yaml\" */\n\nPrism.languages.yaml = {\n 'scalar': {\n pattern: /([\\-:]\\s*(?:![^\\s]+)?[ \\t]*[|>])[ \\t]*(?:((?:\\r?\\n|\\r)[ \\t]+)[^\\r\\n]+(?:\\2[^\\r\\n]+)*)/,\n lookbehind: true,\n alias: 'string'\n },\n 'comment': /#.*/,\n 'key': {\n pattern: /(\\s*(?:^|[:\\-,[{\\r\\n?])[ \\t]*(?:![^\\s]+)?[ \\t]*)[^\\r\\n{[\\]},#\\s]+?(?=\\s*:\\s)/,\n lookbehind: true,\n alias: 'atrule'\n },\n 'directive': {\n pattern: /(^[ \\t]*)%.+/m,\n lookbehind: true,\n alias: 'important'\n },\n 'datetime': {\n pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:\\d{4}-\\d\\d?-\\d\\d?(?:[tT]|[ \\t]+)\\d\\d?:\\d{2}:\\d{2}(?:\\.\\d*)?[ \\t]*(?:Z|[-+]\\d\\d?(?::\\d{2})?)?|\\d{4}-\\d{2}-\\d{2}|\\d\\d?:\\d{2}(?::\\d{2}(?:\\.\\d*)?)?)(?=[ \\t]*(?:$|,|]|}))/m,\n lookbehind: true,\n alias: 'number'\n },\n 'boolean': {\n pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:true|false)[ \\t]*(?=$|,|]|})/im,\n lookbehind: true,\n alias: 'important'\n },\n 'null': {\n pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(?:null|~)[ \\t]*(?=$|,|]|})/im,\n lookbehind: true,\n alias: 'important'\n },\n 'string': {\n pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)(\"|')(?:(?!\\2)[^\\\\\\r\\n]|\\\\.)*\\2(?=[ \\t]*(?:$|,|]|}|\\s*#))/m,\n lookbehind: true,\n greedy: true\n },\n 'number': {\n pattern: /([:\\-,[{]\\s*(?:![^\\s]+)?[ \\t]*)[+-]?(?:0x[\\da-f]+|0o[0-7]+|(?:\\d+\\.?\\d*|\\.?\\d+)(?:e[+-]?\\d+)?|\\.inf|\\.nan)[ \\t]*(?=$|,|]|})/im,\n lookbehind: true\n },\n 'tag': /![^\\s]+/,\n 'important': /[&*][\\w]+/,\n 'punctuation': /---|[:[\\]{}\\-,|>?]|\\.\\.\\./\n};\nPrism.languages.yml = Prism.languages.yaml;\nexport default Prism;","// Duotone Dark\n// Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes)\n// Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-evening-dark.css)\n// Generated with Base16 Builder (https://github.com/base16-builder/base16-builder)\nvar theme = {\n plain: {\n backgroundColor: \"#2a2734\",\n color: \"#9a86fd\"\n },\n styles: [{\n types: [\"comment\", \"prolog\", \"doctype\", \"cdata\", \"punctuation\"],\n style: {\n color: \"#6c6783\"\n }\n }, {\n types: [\"namespace\"],\n style: {\n opacity: 0.7\n }\n }, {\n types: [\"tag\", \"operator\", \"number\"],\n style: {\n color: \"#e09142\"\n }\n }, {\n types: [\"property\", \"function\"],\n style: {\n color: \"#9a86fd\"\n }\n }, {\n types: [\"tag-id\", \"selector\", \"atrule-id\"],\n style: {\n color: \"#eeebff\"\n }\n }, {\n types: [\"attr-name\"],\n style: {\n color: \"#c4b9fe\"\n }\n }, {\n types: [\"boolean\", \"string\", \"entity\", \"url\", \"attr-value\", \"keyword\", \"control\", \"directive\", \"unit\", \"statement\", \"regex\", \"at-rule\", \"placeholder\", \"variable\"],\n style: {\n color: \"#ffcc99\"\n }\n }, {\n types: [\"deleted\"],\n style: {\n textDecorationLine: \"line-through\"\n }\n }, {\n types: [\"inserted\"],\n style: {\n textDecorationLine: \"underline\"\n }\n }, {\n types: [\"italic\"],\n style: {\n fontStyle: \"italic\"\n }\n }, {\n types: [\"important\", \"bold\"],\n style: {\n fontWeight: \"bold\"\n }\n }, {\n types: [\"important\"],\n style: {\n color: \"#c4b9fe\"\n }\n }]\n};\nexport default theme;","import Prism from '../prism/index.js';\nexport { default as Prism } from '../prism/index.js';\nimport theme from '../themes/duotoneDark';\nimport { Component } from 'react';\nvar defaultProps = {\n // $FlowFixMe\n Prism: Prism,\n theme: theme\n};\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nvar newlineRe = /\\r\\n|\\r|\\n/; // Empty lines need to contain a single empty token, denoted with { empty: true }\n\nvar normalizeEmptyLines = function normalizeEmptyLines(line) {\n if (line.length === 0) {\n line.push({\n types: [\"plain\"],\n content: \"\",\n empty: true\n });\n } else if (line.length === 1 && line[0].content === \"\") {\n line[0].empty = true;\n }\n};\n\nvar appendTypes = function appendTypes(types, add) {\n var typesSize = types.length;\n\n if (typesSize > 0 && types[typesSize - 1] === add) {\n return types;\n }\n\n return types.concat(add);\n}; // Takes an array of Prism's tokens and groups them by line, turning plain\n// strings into tokens as well. Tokens can become recursive in some cases,\n// which means that their types are concatenated. Plain-string tokens however\n// are always of type \"plain\".\n// This is not recursive to avoid exceeding the call-stack limit, since it's unclear\n// how nested Prism's tokens can become\n\n\nvar normalizeTokens = function normalizeTokens(tokens) {\n var typeArrStack = [[]];\n var tokenArrStack = [tokens];\n var tokenArrIndexStack = [0];\n var tokenArrSizeStack = [tokens.length];\n var i = 0;\n var stackIndex = 0;\n var currentLine = [];\n var acc = [currentLine];\n\n while (stackIndex > -1) {\n while ((i = tokenArrIndexStack[stackIndex]++) < tokenArrSizeStack[stackIndex]) {\n var content = void 0;\n var types = typeArrStack[stackIndex];\n var tokenArr = tokenArrStack[stackIndex];\n var token = tokenArr[i]; // Determine content and append type to types if necessary\n\n if (typeof token === \"string\") {\n types = stackIndex > 0 ? types : [\"plain\"];\n content = token;\n } else {\n types = appendTypes(types, token.type);\n\n if (token.alias) {\n types = appendTypes(types, token.alias);\n }\n\n content = token.content;\n } // If token.content is an array, increase the stack depth and repeat this while-loop\n\n\n if (typeof content !== \"string\") {\n stackIndex++;\n typeArrStack.push(types);\n tokenArrStack.push(content);\n tokenArrIndexStack.push(0);\n tokenArrSizeStack.push(content.length);\n continue;\n } // Split by newlines\n\n\n var splitByNewlines = content.split(newlineRe);\n var newlineCount = splitByNewlines.length;\n currentLine.push({\n types: types,\n content: splitByNewlines[0]\n }); // Create a new line for each string on a new line\n\n for (var i$1 = 1; i$1 < newlineCount; i$1++) {\n normalizeEmptyLines(currentLine);\n acc.push(currentLine = []);\n currentLine.push({\n types: types,\n content: splitByNewlines[i$1]\n });\n }\n } // Decreate the stack depth\n\n\n stackIndex--;\n typeArrStack.pop();\n tokenArrStack.pop();\n tokenArrIndexStack.pop();\n tokenArrSizeStack.pop();\n }\n\n normalizeEmptyLines(currentLine);\n return acc;\n};\n\nvar themeToDict = function themeToDict(theme, language) {\n var plain = theme.plain; // $FlowFixMe\n\n var base = Object.create(null);\n var themeDict = theme.styles.reduce(function (acc, themeEntry) {\n var languages = themeEntry.languages;\n var style = themeEntry.style;\n\n if (languages && !languages.includes(language)) {\n return acc;\n }\n\n themeEntry.types.forEach(function (type) {\n // $FlowFixMe\n var accStyle = _extends({}, acc[type], style);\n\n acc[type] = accStyle;\n });\n return acc;\n }, base); // $FlowFixMe\n\n themeDict.root = plain; // $FlowFixMe\n\n themeDict.plain = _extends({}, plain, {\n backgroundColor: null\n });\n return themeDict;\n};\n\nfunction objectWithoutProperties(obj, exclude) {\n var target = {};\n\n for (var k in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k];\n }\n\n return target;\n}\n\nvar Highlight = /*@__PURE__*/function (Component) {\n function Highlight() {\n var this$1 = this;\n var args = [],\n len = arguments.length;\n\n while (len--) {\n args[len] = arguments[len];\n }\n\n Component.apply(this, args);\n\n _defineProperty(this, \"getThemeDict\", function (props) {\n if (this$1.themeDict !== undefined && props.theme === this$1.prevTheme && props.language === this$1.prevLanguage) {\n return this$1.themeDict;\n }\n\n this$1.prevTheme = props.theme;\n this$1.prevLanguage = props.language;\n var themeDict = props.theme ? themeToDict(props.theme, props.language) : undefined;\n return this$1.themeDict = themeDict;\n });\n\n _defineProperty(this, \"getLineProps\", function (ref) {\n var key = ref.key;\n var className = ref.className;\n var style = ref.style;\n var rest$1 = objectWithoutProperties(ref, [\"key\", \"className\", \"style\", \"line\"]);\n var rest = rest$1;\n\n var output = _extends({}, rest, {\n className: \"token-line\",\n style: undefined,\n key: undefined\n });\n\n var themeDict = this$1.getThemeDict(this$1.props);\n\n if (themeDict !== undefined) {\n output.style = themeDict.plain;\n }\n\n if (style !== undefined) {\n output.style = output.style !== undefined ? _extends({}, output.style, style) : style;\n }\n\n if (key !== undefined) {\n output.key = key;\n }\n\n if (className) {\n output.className += \" \" + className;\n }\n\n return output;\n });\n\n _defineProperty(this, \"getStyleForToken\", function (ref) {\n var types = ref.types;\n var empty = ref.empty;\n var typesSize = types.length;\n var themeDict = this$1.getThemeDict(this$1.props);\n\n if (themeDict === undefined) {\n return undefined;\n } else if (typesSize === 1 && types[0] === \"plain\") {\n return empty ? {\n display: \"inline-block\"\n } : undefined;\n } else if (typesSize === 1 && !empty) {\n return themeDict[types[0]];\n }\n\n var baseStyle = empty ? {\n display: \"inline-block\"\n } : {}; // $FlowFixMe\n\n var typeStyles = types.map(function (type) {\n return themeDict[type];\n });\n return Object.assign.apply(Object, [baseStyle].concat(typeStyles));\n });\n\n _defineProperty(this, \"getTokenProps\", function (ref) {\n var key = ref.key;\n var className = ref.className;\n var style = ref.style;\n var token = ref.token;\n var rest$1 = objectWithoutProperties(ref, [\"key\", \"className\", \"style\", \"token\"]);\n var rest = rest$1;\n\n var output = _extends({}, rest, {\n className: \"token \" + token.types.join(\" \"),\n children: token.content,\n style: this$1.getStyleForToken(token),\n key: undefined\n });\n\n if (style !== undefined) {\n output.style = output.style !== undefined ? _extends({}, output.style, style) : style;\n }\n\n if (key !== undefined) {\n output.key = key;\n }\n\n if (className) {\n output.className += \" \" + className;\n }\n\n return output;\n });\n }\n\n if (Component) Highlight.__proto__ = Component;\n Highlight.prototype = Object.create(Component && Component.prototype);\n Highlight.prototype.constructor = Highlight;\n\n Highlight.prototype.render = function render() {\n var ref = this.props;\n var Prism = ref.Prism;\n var language = ref.language;\n var code = ref.code;\n var children = ref.children;\n var themeDict = this.getThemeDict(this.props);\n var grammar = Prism.languages[language];\n var mixedTokens = grammar !== undefined ? Prism.tokenize(code, grammar, language) : [code];\n var tokens = normalizeTokens(mixedTokens);\n return children({\n tokens: tokens,\n className: \"prism-code language-\" + language,\n style: themeDict !== undefined ? themeDict.root : {},\n getLineProps: this.getLineProps,\n getTokenProps: this.getTokenProps\n });\n };\n\n return Highlight;\n}(Component);\n\nexport default Highlight;\nexport { defaultProps };","'use strict';\n\nmodule.exports = function getDefinitions(node) {\n var defs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return (node.children || []).reduce(function (definitions, child) {\n if (child.type === 'definition') {\n definitions[child.identifier] = {\n href: child.url,\n title: child.title\n };\n }\n\n return getDefinitions(child, definitions);\n }, defs);\n};","// .dirname, .basename, and .extname methods are extracted from Node.js v8.11.1,\n// backported and transplited with Babel, with backwards-compat fixes\n// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n// resolves . and .. elements in a path array with directory names there\n// must be no slashes, empty elements, or device names (c:\\) in the array\n// (so also no leading and trailing slashes - it does not distinguish\n// relative and absolute paths)\nfunction normalizeArray(parts, allowAboveRoot) {\n // if the path tries to go above the root, `up` ends up > 0\n var up = 0;\n\n for (var i = parts.length - 1; i >= 0; i--) {\n var last = parts[i];\n\n if (last === '.') {\n parts.splice(i, 1);\n } else if (last === '..') {\n parts.splice(i, 1);\n up++;\n } else if (up) {\n parts.splice(i, 1);\n up--;\n }\n } // if the path is allowed to go above the root, restore leading ..s\n\n\n if (allowAboveRoot) {\n for (; up--; up) {\n parts.unshift('..');\n }\n }\n\n return parts;\n} // path.resolve([from ...], to)\n// posix version\n\n\nexports.resolve = function () {\n var resolvedPath = '',\n resolvedAbsolute = false;\n\n for (var i = arguments.length - 1; i >= -1 && !resolvedAbsolute; i--) {\n var path = i >= 0 ? arguments[i] : process.cwd(); // Skip empty and invalid entries\n\n if (typeof path !== 'string') {\n throw new TypeError('Arguments to path.resolve must be strings');\n } else if (!path) {\n continue;\n }\n\n resolvedPath = path + '/' + resolvedPath;\n resolvedAbsolute = path.charAt(0) === '/';\n } // At this point the path should be resolved to a full absolute path, but\n // handle relative paths to be safe (might happen when process.cwd() fails)\n // Normalize the path\n\n\n resolvedPath = normalizeArray(filter(resolvedPath.split('/'), function (p) {\n return !!p;\n }), !resolvedAbsolute).join('/');\n return (resolvedAbsolute ? '/' : '') + resolvedPath || '.';\n}; // path.normalize(path)\n// posix version\n\n\nexports.normalize = function (path) {\n var isAbsolute = exports.isAbsolute(path),\n trailingSlash = substr(path, -1) === '/'; // Normalize the path\n\n path = normalizeArray(filter(path.split('/'), function (p) {\n return !!p;\n }), !isAbsolute).join('/');\n\n if (!path && !isAbsolute) {\n path = '.';\n }\n\n if (path && trailingSlash) {\n path += '/';\n }\n\n return (isAbsolute ? '/' : '') + path;\n}; // posix version\n\n\nexports.isAbsolute = function (path) {\n return path.charAt(0) === '/';\n}; // posix version\n\n\nexports.join = function () {\n var paths = Array.prototype.slice.call(arguments, 0);\n return exports.normalize(filter(paths, function (p, index) {\n if (typeof p !== 'string') {\n throw new TypeError('Arguments to path.join must be strings');\n }\n\n return p;\n }).join('/'));\n}; // path.relative(from, to)\n// posix version\n\n\nexports.relative = function (from, to) {\n from = exports.resolve(from).substr(1);\n to = exports.resolve(to).substr(1);\n\n function trim(arr) {\n var start = 0;\n\n for (; start < arr.length; start++) {\n if (arr[start] !== '') break;\n }\n\n var end = arr.length - 1;\n\n for (; end >= 0; end--) {\n if (arr[end] !== '') break;\n }\n\n if (start > end) return [];\n return arr.slice(start, end - start + 1);\n }\n\n var fromParts = trim(from.split('/'));\n var toParts = trim(to.split('/'));\n var length = Math.min(fromParts.length, toParts.length);\n var samePartsLength = length;\n\n for (var i = 0; i < length; i++) {\n if (fromParts[i] !== toParts[i]) {\n samePartsLength = i;\n break;\n }\n }\n\n var outputParts = [];\n\n for (var i = samePartsLength; i < fromParts.length; i++) {\n outputParts.push('..');\n }\n\n outputParts = outputParts.concat(toParts.slice(samePartsLength));\n return outputParts.join('/');\n};\n\nexports.sep = '/';\nexports.delimiter = ':';\n\nexports.dirname = function (path) {\n if (typeof path !== 'string') path = path + '';\n if (path.length === 0) return '.';\n var code = path.charCodeAt(0);\n var hasRoot = code === 47\n /*/*/\n ;\n var end = -1;\n var matchedSlash = true;\n\n for (var i = path.length - 1; i >= 1; --i) {\n code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n if (!matchedSlash) {\n end = i;\n break;\n }\n } else {\n // We saw the first non-path separator\n matchedSlash = false;\n }\n }\n\n if (end === -1) return hasRoot ? '/' : '.';\n\n if (hasRoot && end === 1) {\n // return '//';\n // Backwards-compat fix:\n return '/';\n }\n\n return path.slice(0, end);\n};\n\nfunction basename(path) {\n if (typeof path !== 'string') path = path + '';\n var start = 0;\n var end = -1;\n var matchedSlash = true;\n var i;\n\n for (i = path.length - 1; i >= 0; --i) {\n if (path.charCodeAt(i) === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n start = i + 1;\n break;\n }\n } else if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // path component\n matchedSlash = false;\n end = i + 1;\n }\n }\n\n if (end === -1) return '';\n return path.slice(start, end);\n} // Uses a mixed approach for backwards-compatibility, as ext behavior changed\n// in new Node.js versions, so only basename() above is backported here\n\n\nexports.basename = function (path, ext) {\n var f = basename(path);\n\n if (ext && f.substr(-1 * ext.length) === ext) {\n f = f.substr(0, f.length - ext.length);\n }\n\n return f;\n};\n\nexports.extname = function (path) {\n if (typeof path !== 'string') path = path + '';\n var startDot = -1;\n var startPart = 0;\n var end = -1;\n var matchedSlash = true; // Track the state of characters (if any) we see before our first dot and\n // after any path separator we find\n\n var preDotState = 0;\n\n for (var i = path.length - 1; i >= 0; --i) {\n var code = path.charCodeAt(i);\n\n if (code === 47\n /*/*/\n ) {\n // If we reached a path separator that was not part of a set of path\n // separators at the end of the string, stop now\n if (!matchedSlash) {\n startPart = i + 1;\n break;\n }\n\n continue;\n }\n\n if (end === -1) {\n // We saw the first non-path separator, mark this as the end of our\n // extension\n matchedSlash = false;\n end = i + 1;\n }\n\n if (code === 46\n /*.*/\n ) {\n // If this is our first dot, mark it as the start of our extension\n if (startDot === -1) startDot = i;else if (preDotState !== 1) preDotState = 1;\n } else if (startDot !== -1) {\n // We saw a non-dot and non-path separator before our dot, so we should\n // have a good chance at having a non-empty extension\n preDotState = -1;\n }\n }\n\n if (startDot === -1 || end === -1 || // We saw a non-dot character immediately before the dot\n preDotState === 0 || // The (right-most) trimmed path component is exactly '..'\n preDotState === 1 && startDot === end - 1 && startDot === startPart + 1) {\n return '';\n }\n\n return path.slice(startDot, end);\n};\n\nfunction filter(xs, f) {\n if (xs.filter) return xs.filter(f);\n var res = [];\n\n for (var i = 0; i < xs.length; i++) {\n if (f(xs[i], i, xs)) res.push(xs[i]);\n }\n\n return res;\n} // String.prototype.substr - negative index don't work in IE8\n\n\nvar substr = 'ab'.substr(-1) === 'b' ? function (str, start, len) {\n return str.substr(start, len);\n} : function (str, start, len) {\n if (start < 0) start = str.length + start;\n return str.substr(start, len);\n};","/* eslint-disable react/prop-types, react/no-multi-comp */\n'use strict';\n\nvar xtend = require('xtend');\n\nvar React = require('react');\n\nvar supportsStringRender = parseInt((React.version || '16').slice(0, 2), 10) >= 16;\nvar createElement = React.createElement;\nmodule.exports = {\n break: 'br',\n paragraph: 'p',\n emphasis: 'em',\n strong: 'strong',\n thematicBreak: 'hr',\n blockquote: 'blockquote',\n delete: 'del',\n link: 'a',\n image: 'img',\n linkReference: 'a',\n imageReference: 'img',\n table: SimpleRenderer.bind(null, 'table'),\n tableHead: SimpleRenderer.bind(null, 'thead'),\n tableBody: SimpleRenderer.bind(null, 'tbody'),\n tableRow: SimpleRenderer.bind(null, 'tr'),\n tableCell: TableCell,\n root: Root,\n text: TextRenderer,\n list: List,\n listItem: ListItem,\n definition: NullRenderer,\n heading: Heading,\n inlineCode: InlineCode,\n code: CodeBlock,\n html: Html,\n virtualHtml: VirtualHtml,\n parsedHtml: ParsedHtml\n};\n\nfunction TextRenderer(props) {\n return supportsStringRender ? props.children : createElement('span', null, props.children);\n}\n\nfunction Root(props) {\n var useFragment = !props.className;\n var root = useFragment ? React.Fragment || 'div' : 'div';\n return createElement(root, useFragment ? null : props, props.children);\n}\n\nfunction SimpleRenderer(tag, props) {\n return createElement(tag, getCoreProps(props), props.children);\n}\n\nfunction TableCell(props) {\n var style = props.align ? {\n textAlign: props.align\n } : undefined;\n var coreProps = getCoreProps(props);\n return createElement(props.isHeader ? 'th' : 'td', style ? xtend({\n style: style\n }, coreProps) : coreProps, props.children);\n}\n\nfunction Heading(props) {\n return createElement(\"h\".concat(props.level), getCoreProps(props), props.children);\n}\n\nfunction List(props) {\n var attrs = getCoreProps(props);\n\n if (props.start !== null && props.start !== 1 && props.start !== undefined) {\n attrs.start = props.start.toString();\n }\n\n return createElement(props.ordered ? 'ol' : 'ul', attrs, props.children);\n}\n\nfunction ListItem(props) {\n var checkbox = null;\n\n if (props.checked !== null && props.checked !== undefined) {\n var checked = props.checked;\n checkbox = createElement('input', {\n type: 'checkbox',\n checked: checked,\n readOnly: true\n });\n }\n\n return createElement('li', getCoreProps(props), checkbox, props.children);\n}\n\nfunction CodeBlock(props) {\n var className = props.language && \"language-\".concat(props.language);\n var code = createElement('code', className ? {\n className: className\n } : null, props.value);\n return createElement('pre', getCoreProps(props), code);\n}\n\nfunction InlineCode(props) {\n return createElement('code', getCoreProps(props), props.children);\n}\n\nfunction Html(props) {\n if (props.skipHtml) {\n return null;\n }\n\n var tag = props.isBlock ? 'div' : 'span';\n\n if (props.escapeHtml) {\n var comp = React.Fragment || tag;\n return createElement(comp, null, props.value);\n }\n\n var nodeProps = {\n dangerouslySetInnerHTML: {\n __html: props.value\n }\n };\n return createElement(tag, nodeProps);\n}\n\nfunction ParsedHtml(props) {\n return props['data-sourcepos'] ? React.cloneElement(props.element, {\n 'data-sourcepos': props['data-sourcepos']\n }) : props.element;\n}\n\nfunction VirtualHtml(props) {\n return createElement(props.tag, getCoreProps(props), props.children);\n}\n\nfunction NullRenderer() {\n return null;\n}\n\nfunction getCoreProps(props) {\n return props['data-sourcepos'] ? {\n 'data-sourcepos': props['data-sourcepos']\n } : {};\n}","'use strict';\n\nvar React = require('react');\n\nvar xtend = require('xtend');\n\nvar ReactIs = require('react-is');\n\nvar defaultNodePosition = {\n start: {\n line: 1,\n column: 1,\n offset: 0\n },\n end: {\n line: 1,\n column: 1,\n offset: 0\n }\n};\n\nfunction astToReact(node, options) {\n var parent = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var index = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;\n var renderer = options.renderers[node.type]; // nodes generated by plugins may not have position data\n // much of the code after this point will attempt to access properties of the node.position\n // this will set the node position to the parent node's position to prevent errors\n\n if (node.position === undefined) {\n node.position = parent.node && parent.node.position || defaultNodePosition;\n }\n\n var pos = node.position.start;\n var key = [node.type, pos.line, pos.column, index].join('-');\n\n if (!ReactIs.isValidElementType(renderer)) {\n throw new Error(\"Renderer for type `\".concat(node.type, \"` not defined or is not renderable\"));\n }\n\n var nodeProps = getNodeProps(node, key, options, renderer, parent, index);\n return React.createElement(renderer, nodeProps, nodeProps.children || resolveChildren() || undefined);\n\n function resolveChildren() {\n return node.children && node.children.map(function (childNode, i) {\n return astToReact(childNode, options, {\n node: node,\n props: nodeProps\n }, i);\n });\n }\n} // eslint-disable-next-line max-params, complexity\n\n\nfunction getNodeProps(node, key, opts, renderer, parent, index) {\n var props = {\n key: key\n };\n var isTagRenderer = typeof renderer === 'string'; // `sourcePos` is true if the user wants source information (line/column info from markdown source)\n\n if (opts.sourcePos && node.position) {\n props['data-sourcepos'] = flattenPosition(node.position);\n }\n\n if (opts.rawSourcePos && !isTagRenderer) {\n props.sourcePosition = node.position;\n } // If `includeNodeIndex` is true, pass node index info to all non-tag renderers\n\n\n if (opts.includeNodeIndex && parent.node && parent.node.children && !isTagRenderer) {\n props.index = parent.node.children.indexOf(node);\n props.parentChildCount = parent.node.children.length;\n }\n\n var ref = node.identifier !== null && node.identifier !== undefined ? opts.definitions[node.identifier] || {} : null;\n\n switch (node.type) {\n case 'root':\n assignDefined(props, {\n className: opts.className\n });\n break;\n\n case 'text':\n props.nodeKey = key;\n props.children = node.value;\n break;\n\n case 'heading':\n props.level = node.depth;\n break;\n\n case 'list':\n props.start = node.start;\n props.ordered = node.ordered;\n props.tight = !node.loose;\n props.depth = node.depth;\n break;\n\n case 'listItem':\n props.checked = node.checked;\n props.tight = !node.loose;\n props.ordered = node.ordered;\n props.index = node.index;\n props.children = getListItemChildren(node, parent).map(function (childNode, i) {\n return astToReact(childNode, opts, {\n node: node,\n props: props\n }, i);\n });\n break;\n\n case 'definition':\n assignDefined(props, {\n identifier: node.identifier,\n title: node.title,\n url: node.url\n });\n break;\n\n case 'code':\n assignDefined(props, {\n language: node.lang && node.lang.split(/\\s/, 1)[0]\n });\n break;\n\n case 'inlineCode':\n props.children = node.value;\n props.inline = true;\n break;\n\n case 'link':\n assignDefined(props, {\n title: node.title || undefined,\n target: typeof opts.linkTarget === 'function' ? opts.linkTarget(node.url, node.children, node.title) : opts.linkTarget,\n href: opts.transformLinkUri ? opts.transformLinkUri(node.url, node.children, node.title) : node.url\n });\n break;\n\n case 'image':\n assignDefined(props, {\n alt: node.alt || undefined,\n title: node.title || undefined,\n src: opts.transformImageUri ? opts.transformImageUri(node.url, node.children, node.title, node.alt) : node.url\n });\n break;\n\n case 'linkReference':\n assignDefined(props, xtend(ref, {\n href: opts.transformLinkUri ? opts.transformLinkUri(ref.href) : ref.href\n }));\n break;\n\n case 'imageReference':\n assignDefined(props, {\n src: opts.transformImageUri && ref.href ? opts.transformImageUri(ref.href, node.children, ref.title, node.alt) : ref.href,\n title: ref.title || undefined,\n alt: node.alt || undefined\n });\n break;\n\n case 'table':\n case 'tableHead':\n case 'tableBody':\n props.columnAlignment = node.align;\n break;\n\n case 'tableRow':\n props.isHeader = parent.node.type === 'tableHead';\n props.columnAlignment = parent.props.columnAlignment;\n break;\n\n case 'tableCell':\n assignDefined(props, {\n isHeader: parent.props.isHeader,\n align: parent.props.columnAlignment[index]\n });\n break;\n\n case 'virtualHtml':\n props.tag = node.tag;\n break;\n\n case 'html':\n // @todo find a better way than this\n props.isBlock = node.position.start.line !== node.position.end.line;\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n break;\n\n case 'parsedHtml':\n {\n var parsedChildren;\n\n if (node.children) {\n parsedChildren = node.children.map(function (child, i) {\n return astToReact(child, opts, {\n node: node,\n props: props\n }, i);\n });\n }\n\n props.escapeHtml = opts.escapeHtml;\n props.skipHtml = opts.skipHtml;\n props.element = mergeNodeChildren(node, parsedChildren);\n break;\n }\n\n default:\n assignDefined(props, xtend(node, {\n type: undefined,\n position: undefined,\n children: undefined\n }));\n }\n\n if (!isTagRenderer && node.value) {\n props.value = node.value;\n }\n\n return props;\n}\n\nfunction assignDefined(target, attrs) {\n for (var key in attrs) {\n if (typeof attrs[key] !== 'undefined') {\n target[key] = attrs[key];\n }\n }\n}\n\nfunction mergeNodeChildren(node, parsedChildren) {\n var el = node.element;\n\n if (Array.isArray(el)) {\n var Fragment = React.Fragment || 'div';\n return React.createElement(Fragment, null, el);\n }\n\n if (el.props.children || parsedChildren) {\n var children = React.Children.toArray(el.props.children).concat(parsedChildren);\n return React.cloneElement(el, null, children);\n }\n\n return React.cloneElement(el, null);\n}\n\nfunction flattenPosition(pos) {\n return [pos.start.line, ':', pos.start.column, '-', pos.end.line, ':', pos.end.column].map(String).join('');\n}\n\nfunction getListItemChildren(node, parent) {\n if (node.loose) {\n return node.children;\n }\n\n if (parent.node && node.index > 0 && parent.node.children[node.index - 1].loose) {\n return node.children;\n }\n\n return unwrapParagraphs(node);\n}\n\nfunction unwrapParagraphs(node) {\n return node.children.reduce(function (array, child) {\n return array.concat(child.type === 'paragraph' ? child.children || [] : [child]);\n }, []);\n}\n\nmodule.exports = astToReact;","'use strict';\n\nvar xtend = require('xtend');\n\nvar removePosition = require('unist-util-remove-position');\n\nmodule.exports = parse;\nvar C_NEWLINE = '\\n';\nvar EXPRESSION_LINE_BREAKS = /\\r\\n|\\r/g;\n/* Parse the bound file. */\n\nfunction parse() {\n var self = this;\n var value = String(self.file);\n var start = {\n line: 1,\n column: 1,\n offset: 0\n };\n var content = xtend(start);\n var node;\n /* Clean non-unix newlines: `\\r\\n` and `\\r` are all\n * changed to `\\n`. This should not affect positional\n * information. */\n\n value = value.replace(EXPRESSION_LINE_BREAKS, C_NEWLINE);\n\n if (value.charCodeAt(0) === 0xFEFF) {\n value = value.slice(1);\n content.column++;\n content.offset++;\n }\n\n node = {\n type: 'root',\n children: self.tokenizeBlock(value, content),\n position: {\n start: start,\n end: self.eof || xtend(start)\n }\n };\n\n if (!self.options.position) {\n removePosition(node, true);\n }\n\n return node;\n}","'use strict';\n\nmodule.exports = visitParents;\n\nvar convert = require('unist-util-is/convert');\n\nvar CONTINUE = true;\nvar SKIP = 'skip';\nvar EXIT = false;\nvisitParents.CONTINUE = CONTINUE;\nvisitParents.SKIP = SKIP;\nvisitParents.EXIT = EXIT;\n\nfunction visitParents(tree, test, visitor, reverse) {\n var is;\n\n if (typeof test === 'function' && typeof visitor !== 'function') {\n reverse = visitor;\n visitor = test;\n test = null;\n }\n\n is = convert(test);\n one(tree, null, []); // Visit a single node.\n\n function one(node, index, parents) {\n var result = [];\n var subresult;\n\n if (!test || is(node, index, parents[parents.length - 1] || null)) {\n result = toResult(visitor(node, parents));\n\n if (result[0] === EXIT) {\n return result;\n }\n }\n\n if (node.children && result[0] !== SKIP) {\n subresult = toResult(all(node.children, parents.concat(node)));\n return subresult[0] === EXIT ? subresult : result;\n }\n\n return result;\n } // Visit children in `parent`.\n\n\n function all(children, parents) {\n var min = -1;\n var step = reverse ? -1 : 1;\n var index = (reverse ? children.length : min) + step;\n var result;\n\n while (index > min && index < children.length) {\n result = one(children[index], index, parents);\n\n if (result[0] === EXIT) {\n return result;\n }\n\n index = typeof result[1] === 'number' ? result[1] : index + step;\n }\n }\n}\n\nfunction toResult(value) {\n if (value !== null && typeof value === 'object' && 'length' in value) {\n return value;\n }\n\n if (typeof value === 'number') {\n return [CONTINUE, value];\n }\n\n return [value];\n}","'use strict';\n\nmodule.exports = bail;\n\nfunction bail(err) {\n if (err) {\n throw err;\n }\n}","'use strict';\n\nvar alphabetical = require('is-alphabetical');\n\nvar decimal = require('is-decimal');\n\nmodule.exports = alphanumerical;\n/* Check if the given character code, or the character\n * code at the first character, is alphanumerical. */\n\nfunction alphanumerical(character) {\n return alphabetical(character) || decimal(character);\n}","\"use strict\";\n\nvar protocols = ['http', 'https', 'mailto', 'tel'];\n\nmodule.exports = function uriTransformer(uri) {\n var url = (uri || '').trim();\n var first = url.charAt(0);\n\n if (first === '#' || first === '/') {\n return url;\n }\n\n var colon = url.indexOf(':');\n\n if (colon === -1) {\n return url;\n }\n\n var length = protocols.length;\n var index = -1;\n\n while (++index < length) {\n var protocol = protocols[index];\n\n if (colon === protocol.length && url.slice(0, protocol.length).toLowerCase() === protocol) {\n return url;\n }\n }\n\n index = url.indexOf('?');\n\n if (index !== -1 && colon > index) {\n return url;\n }\n\n index = url.indexOf('#');\n\n if (index !== -1 && colon > index) {\n return url;\n } // eslint-disable-next-line no-script-url\n\n\n return 'javascript:void(0)';\n};","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n var index = value.indexOf('\\n', fromIndex);\n\n while (index > fromIndex) {\n if (value.charAt(index - 1) !== ' ') {\n break;\n }\n\n index--;\n }\n\n return index;\n}","'use strict';\n\nmodule.exports = convert;\n\nfunction convert(test) {\n if (typeof test === 'string') {\n return typeFactory(test);\n }\n\n if (test === null || test === undefined) {\n return ok;\n }\n\n if (typeof test === 'object') {\n return ('length' in test ? anyFactory : matchesFactory)(test);\n }\n\n if (typeof test === 'function') {\n return test;\n }\n\n throw new Error('Expected function, string, or object as test');\n}\n\nfunction convertAll(tests) {\n var results = [];\n var length = tests.length;\n var index = -1;\n\n while (++index < length) {\n results[index] = convert(tests[index]);\n }\n\n return results;\n} // Utility assert each property in `test` is represented in `node`, and each\n// values are strictly equal.\n\n\nfunction matchesFactory(test) {\n return matches;\n\n function matches(node) {\n var key;\n\n for (key in test) {\n if (node[key] !== test[key]) {\n return false;\n }\n }\n\n return true;\n }\n}\n\nfunction anyFactory(tests) {\n var checks = convertAll(tests);\n var length = checks.length;\n return matches;\n\n function matches() {\n var index = -1;\n\n while (++index < length) {\n if (checks[index].apply(this, arguments)) {\n return true;\n }\n }\n\n return false;\n }\n} // Utility to convert a string into a function which checks a given node’s type\n// for said string.\n\n\nfunction typeFactory(test) {\n return type;\n\n function type(node) {\n return Boolean(node && node.type === test);\n }\n} // Utility to return true.\n\n\nfunction ok() {\n return true;\n}","'use strict';\n\nmodule.exports = interrupt;\n\nfunction interrupt(interruptors, tokenizers, ctx, params) {\n var bools = ['pedantic', 'commonmark'];\n var count = bools.length;\n var length = interruptors.length;\n var index = -1;\n var interruptor;\n var config;\n var fn;\n var offset;\n var bool;\n var ignore;\n\n while (++index < length) {\n interruptor = interruptors[index];\n config = interruptor[1] || {};\n fn = interruptor[0];\n offset = -1;\n ignore = false;\n\n while (++offset < count) {\n bool = bools[offset];\n\n if (config[bool] !== undefined && config[bool] !== ctx.options[bool]) {\n ignore = true;\n break;\n }\n }\n\n if (ignore) {\n continue;\n }\n\n if (tokenizers[fn].apply(ctx, params)) {\n return true;\n }\n }\n\n return false;\n}","'use strict';\n\nmodule.exports = trimTrailingLines;\nvar line = '\\n';\n/* Remove final newline characters from `value`. */\n\nfunction trimTrailingLines(value) {\n var val = String(value);\n var index = val.length;\n\n while (val.charAt(--index) === line) {\n /* Empty */\n }\n\n return val.slice(0, index + 1);\n}","'use strict';\n\nvar VMessage = require('vfile-message');\n\nvar VFile = require('./core.js');\n\nmodule.exports = VFile;\nvar proto = VFile.prototype;\nproto.message = message;\nproto.info = info;\nproto.fail = fail;\n/* Slight backwards compatibility. Remove in the future. */\n\nproto.warn = message;\n/* Create a message with `reason` at `position`.\n * When an error is passed in as `reason`, copies the stack. */\n\nfunction message(reason, position, origin) {\n var filePath = this.path;\n var message = new VMessage(reason, position, origin);\n\n if (filePath) {\n message.name = filePath + ':' + message.name;\n message.file = filePath;\n }\n\n message.fatal = false;\n this.messages.push(message);\n return message;\n}\n/* Fail. Creates a vmessage, associates it with the file,\n * and throws it. */\n\n\nfunction fail() {\n var message = this.message.apply(this, arguments);\n message.fatal = true;\n throw message;\n}\n/* Info. Creates a vmessage, associates it with the file,\n * and marks the fatality as null. */\n\n\nfunction info() {\n var message = this.message.apply(this, arguments);\n message.fatal = null;\n return message;\n}","'use strict';\n\nvar trim = require('trim');\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/strong');\n\nmodule.exports = strong;\nstrong.locator = locate;\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\n\nfunction strong(eat, value, silent) {\n var self = this;\n var index = 0;\n var character = value.charAt(index);\n var now;\n var pedantic;\n var marker;\n var queue;\n var subvalue;\n var length;\n var prev;\n\n if (character !== C_ASTERISK && character !== C_UNDERSCORE || value.charAt(++index) !== character) {\n return;\n }\n\n pedantic = self.options.pedantic;\n marker = character;\n subvalue = marker + marker;\n length = value.length;\n index++;\n queue = '';\n character = '';\n\n if (pedantic && whitespace(value.charAt(index))) {\n return;\n }\n\n while (index < length) {\n prev = character;\n character = value.charAt(index);\n\n if (character === marker && value.charAt(index + 1) === marker && (!pedantic || !whitespace(prev))) {\n character = value.charAt(index + 2);\n\n if (character !== marker) {\n if (!trim(queue)) {\n return;\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n now = eat.now();\n now.column += 2;\n now.offset += 2;\n return eat(subvalue + queue + subvalue)({\n type: 'strong',\n children: self.tokenizeInline(queue, now)\n });\n }\n }\n\n if (!pedantic && character === '\\\\') {\n queue += character;\n character = value.charAt(++index);\n }\n\n queue += character;\n index++;\n }\n}","'use strict';\n\nmodule.exports = locate;\n\nfunction locate(value, fromIndex) {\n return value.indexOf('`', fromIndex);\n}","var toString = Object.prototype.toString;\nmodule.exports = isString;\n\nfunction isString(obj) {\n return toString.call(obj) === \"[object String]\";\n}","'use strict';\n\nvar attributeName = '[a-zA-Z_:][a-zA-Z0-9:._-]*';\nvar unquoted = \"[^\\\"'=<>`\\\\u0000-\\\\u0020]+\";\nvar singleQuoted = '\\'[^\\']*\\'';\nvar doubleQuoted = '\"[^\"]*\"';\nvar attributeValue = '(?:' + unquoted + '|' + singleQuoted + '|' + doubleQuoted + ')';\nvar attribute = '(?:\\\\s+' + attributeName + '(?:\\\\s*=\\\\s*' + attributeValue + ')?)';\nvar openTag = '<[A-Za-z][A-Za-z0-9\\\\-]*' + attribute + '*\\\\s*\\\\/?>';\nvar closeTag = '<\\\\/[A-Za-z][A-Za-z0-9\\\\-]*\\\\s*>';\nvar comment = '<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->';\nvar processing = '<[?].*?[?]>';\nvar declaration = '<![A-Za-z]+\\\\s+[^>]*>';\nvar cdata = '<!\\\\[CDATA\\\\[[\\\\s\\\\S]*?\\\\]\\\\]>';\nexports.openCloseTag = new RegExp('^(?:' + openTag + '|' + closeTag + ')');\nexports.tag = new RegExp('^(?:' + openTag + '|' + closeTag + '|' + comment + '|' + processing + '|' + declaration + '|' + cdata + ')');","'use strict';\n\nmodule.exports = {\n position: true,\n gfm: true,\n commonmark: false,\n footnotes: false,\n pedantic: false,\n blocks: require('./block-elements.json')\n};","'use strict';\n\nvar AlgoliaSearch = require('../../AlgoliaSearch.js');\n\nvar createAlgoliasearch = require('../createAlgoliasearch.js');\n\nmodule.exports = createAlgoliasearch(AlgoliaSearch, 'Browser');","'use strict';\n\nvar whitespace = require('is-whitespace-character');\n\nvar locate = require('../locate/code-inline');\n\nmodule.exports = inlineCode;\ninlineCode.locator = locate;\nvar C_TICK = '`';\n/* Tokenise inline code. */\n\nfunction inlineCode(eat, value, silent) {\n var length = value.length;\n var index = 0;\n var queue = '';\n var tickQueue = '';\n var contentQueue;\n var subqueue;\n var count;\n var openingCount;\n var subvalue;\n var character;\n var found;\n var next;\n\n while (index < length) {\n if (value.charAt(index) !== C_TICK) {\n break;\n }\n\n queue += C_TICK;\n index++;\n }\n\n if (!queue) {\n return;\n }\n\n subvalue = queue;\n openingCount = index;\n queue = '';\n next = value.charAt(index);\n count = 0;\n\n while (index < length) {\n character = next;\n next = value.charAt(index + 1);\n\n if (character === C_TICK) {\n count++;\n tickQueue += character;\n } else {\n count = 0;\n queue += character;\n }\n\n if (count && next !== C_TICK) {\n if (count === openingCount) {\n subvalue += queue + tickQueue;\n found = true;\n break;\n }\n\n queue += tickQueue;\n tickQueue = '';\n }\n\n index++;\n }\n\n if (!found) {\n if (openingCount % 2 !== 0) {\n return;\n }\n\n queue = '';\n }\n /* istanbul ignore if - never used (yet) */\n\n\n if (silent) {\n return true;\n }\n\n contentQueue = '';\n subqueue = '';\n length = queue.length;\n index = -1;\n\n while (++index < length) {\n character = queue.charAt(index);\n\n if (whitespace(character)) {\n subqueue += character;\n continue;\n }\n\n if (subqueue) {\n if (contentQueue) {\n contentQueue += subqueue;\n }\n\n subqueue = '';\n }\n\n contentQueue += character;\n }\n\n return eat(subvalue)({\n type: 'inlineCode',\n value: contentQueue\n });\n}","'use strict';\n\nmodule.exports = thematicBreak;\nvar C_NEWLINE = '\\n';\nvar C_TAB = '\\t';\nvar C_SPACE = ' ';\nvar C_ASTERISK = '*';\nvar C_UNDERSCORE = '_';\nvar C_DASH = '-';\nvar THEMATIC_BREAK_MARKER_COUNT = 3;\n\nfunction thematicBreak(eat, value, silent) {\n var index = -1;\n var length = value.length + 1;\n var subvalue = '';\n var character;\n var marker;\n var markerCount;\n var queue;\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character !== C_TAB && character !== C_SPACE) {\n break;\n }\n\n subvalue += character;\n }\n\n if (character !== C_ASTERISK && character !== C_DASH && character !== C_UNDERSCORE) {\n return;\n }\n\n marker = character;\n subvalue += character;\n markerCount = 1;\n queue = '';\n\n while (++index < length) {\n character = value.charAt(index);\n\n if (character === marker) {\n markerCount++;\n subvalue += queue + marker;\n queue = '';\n } else if (character === C_SPACE) {\n queue += character;\n } else if (markerCount >= THEMATIC_BREAK_MARKER_COUNT && (!character || character === C_NEWLINE)) {\n subvalue += queue;\n\n if (silent) {\n return true;\n }\n\n return eat(subvalue)({\n type: 'thematicBreak'\n });\n } else {\n return;\n }\n }\n}","'use strict';\n\nvar path = require('path');\n\nvar replace = require('replace-ext');\n\nvar buffer = require('is-buffer');\n\nmodule.exports = VFile;\nvar own = {}.hasOwnProperty;\nvar proto = VFile.prototype;\nproto.toString = toString;\n/* Order of setting (least specific to most), we need this because\n * otherwise `{stem: 'a', path: '~/b.js'}` would throw, as a path\n * is needed before a stem can be set. */\n\nvar order = ['history', 'path', 'basename', 'stem', 'extname', 'dirname'];\n/* Construct a new file. */\n\nfunction VFile(options) {\n var prop;\n var index;\n var length;\n\n if (!options) {\n options = {};\n } else if (typeof options === 'string' || buffer(options)) {\n options = {\n contents: options\n };\n } else if ('message' in options && 'messages' in options) {\n return options;\n }\n\n if (!(this instanceof VFile)) {\n return new VFile(options);\n }\n\n this.data = {};\n this.messages = [];\n this.history = [];\n this.cwd = process.cwd();\n /* Set path related properties in the correct order. */\n\n index = -1;\n length = order.length;\n\n while (++index < length) {\n prop = order[index];\n\n if (own.call(options, prop)) {\n this[prop] = options[prop];\n }\n }\n /* Set non-path related properties. */\n\n\n for (prop in options) {\n if (order.indexOf(prop) === -1) {\n this[prop] = options[prop];\n }\n }\n}\n/* Access full path (`~/index.min.js`). */\n\n\nObject.defineProperty(proto, 'path', {\n get: function get() {\n return this.history[this.history.length - 1];\n },\n set: function set(path) {\n assertNonEmpty(path, 'path');\n\n if (path !== this.path) {\n this.history.push(path);\n }\n }\n});\n/* Access parent path (`~`). */\n\nObject.defineProperty(proto, 'dirname', {\n get: function get() {\n return typeof this.path === 'string' ? path.dirname(this.path) : undefined;\n },\n set: function set(dirname) {\n assertPath(this.path, 'dirname');\n this.path = path.join(dirname || '', this.basename);\n }\n});\n/* Access basename (`index.min.js`). */\n\nObject.defineProperty(proto, 'basename', {\n get: function get() {\n return typeof this.path === 'string' ? path.basename(this.path) : undefined;\n },\n set: function set(basename) {\n assertNonEmpty(basename, 'basename');\n assertPart(basename, 'basename');\n this.path = path.join(this.dirname || '', basename);\n }\n});\n/* Access extname (`.js`). */\n\nObject.defineProperty(proto, 'extname', {\n get: function get() {\n return typeof this.path === 'string' ? path.extname(this.path) : undefined;\n },\n set: function set(extname) {\n var ext = extname || '';\n assertPart(ext, 'extname');\n assertPath(this.path, 'extname');\n\n if (ext) {\n if (ext.charAt(0) !== '.') {\n throw new Error('`extname` must start with `.`');\n }\n\n if (ext.indexOf('.', 1) !== -1) {\n throw new Error('`extname` cannot contain multiple dots');\n }\n }\n\n this.path = replace(this.path, ext);\n }\n});\n/* Access stem (`index.min`). */\n\nObject.defineProperty(proto, 'stem', {\n get: function get() {\n return typeof this.path === 'string' ? path.basename(this.path, this.extname) : undefined;\n },\n set: function set(stem) {\n assertNonEmpty(stem, 'stem');\n assertPart(stem, 'stem');\n this.path = path.join(this.dirname || '', stem + (this.extname || ''));\n }\n});\n/* Get the value of the file. */\n\nfunction toString(encoding) {\n var value = this.contents || '';\n return buffer(value) ? value.toString(encoding) : String(value);\n}\n/* Assert that `part` is not a path (i.e., does\n * not contain `path.sep`). */\n\n\nfunction assertPart(part, name) {\n if (part.indexOf(path.sep) !== -1) {\n throw new Error('`' + name + '` cannot be a path: did not expect `' + path.sep + '`');\n }\n}\n/* Assert that `part` is not empty. */\n\n\nfunction assertNonEmpty(part, name) {\n if (!part) {\n throw new Error('`' + name + '` cannot be empty');\n }\n}\n/* Assert `path` exists. */\n\n\nfunction assertPath(path, name) {\n if (!path) {\n throw new Error('Setting `' + name + '` requires `path` to be set too');\n }\n}","export default `\n/*\n\nName: Base16 Atelier Sulphurpool Light\nAuthor: Bram de Haan (https://atelierbram.github.io/syntax-highlighting/atelier-schemes/sulphurpool)\n\nPrism template by Bram de Haan (https://atelierbram.github.io/syntax-highlighting/prism/)\nOriginal Base16 color scheme by Chris Kempson (https://github.com/chriskempson/base16)\n\n*/\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n font-family: Consolas, Menlo, Monaco, \"Andale Mono WT\", \"Andale Mono\",\n \"Lucida Console\", \"Lucida Sans Typewriter\", \"DejaVu Sans Mono\",\n \"Bitstream Vera Sans Mono\", \"Liberation Mono\", \"Nimbus Mono L\",\n \"Courier New\", Courier, monospace;\n font-size: 14px;\n line-height: 1.375;\n direction: ltr;\n text-align: left;\n white-space: pre;\n word-spacing: normal;\n word-break: normal;\n -moz-tab-size: 4;\n -o-tab-size: 4;\n tab-size: 4;\n -webkit-hyphens: none;\n -moz-hyphens: none;\n -ms-hyphens: none;\n hyphens: none;\n background: #f5f7ff;\n color: #5e6687;\n}\n\npre[class*=\"language-\"]::-moz-selection,\npre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection,\ncode[class*=\"language-\"] ::-moz-selection {\n text-shadow: none;\n background: #dfe2f1;\n}\n\npre[class*=\"language-\"]::selection,\npre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection,\ncode[class*=\"language-\"] ::selection {\n text-shadow: none;\n background: #dfe2f1;\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n padding: 1em;\n margin: 0.5em 0;\n overflow: auto;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n padding: 0.1em;\n border-radius: 0.3em;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n color: #898ea4;\n}\n\n.token.punctuation {\n color: #5e6687;\n}\n\n.token.namespace {\n opacity: 0.7;\n}\n\n.token.operator,\n.token.boolean,\n.token.number {\n color: #c76b29;\n}\n\n.token.property {\n color: #c08b30;\n}\n\n.token.tag {\n color: #3d8fd1;\n}\n\n.token.string {\n color: #22a2c9;\n}\n\n.token.selector {\n color: #6679cc;\n}\n\n.token.attr-name {\n color: #c76b29;\n}\n\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n color: #22a2c9;\n}\n\n.token.attr-value,\n.token.keyword,\n.token.control,\n.token.directive,\n.token.unit {\n color: #ac9739;\n}\n\n.token.statement,\n.token.regex,\n.token.atrule {\n color: #22a2c9;\n}\n\n.token.placeholder,\n.token.variable {\n color: #3d8fd1;\n}\n\n.token.deleted {\n text-decoration: line-through;\n}\n\n.token.inserted {\n border-bottom: 1px dotted #202746;\n text-decoration: none;\n}\n\n.token.italic {\n font-style: italic;\n}\n\n.token.important,\n.token.bold {\n font-weight: bold;\n}\n\n.token.important {\n color: #c94922;\n}\n\n.token.entity {\n cursor: help;\n}\n\npre > code.highlight {\n outline: 0.4em solid #c94922;\n outline-offset: 0.4em;\n}\n\n/* overrides color-values for the Line Numbers plugin\n * http://prismjs.com/plugins/line-numbers/\n */\n.line-numbers .line-numbers-rows {\n border-right-color: #dfe2f1;\n}\n\n.line-numbers-rows > span:before {\n color: #979db4;\n}\n\n/* overrides color-values for the Line Highlight plugin\n * http://prismjs.com/plugins/line-highlight/\n */\n.line-highlight {\n background: rgba(107, 115, 148, 0.2);\n background: -webkit-linear-gradient(\n left,\n rgba(107, 115, 148, 0.2) 70%,\n rgba(107, 115, 148, 0)\n );\n background: linear-gradient(\n to right,\n rgba(107, 115, 148, 0.2) 70%,\n rgba(107, 115, 148, 0)\n );\n}\n`\n"],"sourceRoot":""}
|