diff --git a/dist/template.min.js b/dist/template.min.js index f90c108..edba4dd 100644 --- a/dist/template.min.js +++ b/dist/template.min.js @@ -1,4 +1,4 @@ -var dl=function(){"use strict";function t(t){return"undefined"==typeof t||null===t}function e(t){return"object"==typeof t&&null!==t}function n(e){return Array.isArray(e)?e:t(e)?[]:[e]}function i(t,e){var n,i,r,o;if(e)for(o=Object.keys(e),n=0,i=o.length;n=0&&(e=e.slice(1)),".inf"===e?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(t){r.unshift(parseFloat(t,10))}),e=0,i=1,r.forEach(function(t){e+=t*i,i*=60}),n*e):n*parseFloat(e,10)}function E(t,e){var n;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(rn.isNegativeZero(t))return"-0.0";return n=t.toString(10),sn.test(n)?n.replace("e",".e"):n}function j(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!==0||rn.isNegativeZero(t))}function L(t){return null!==t&&(null!==fn.exec(t)||null!==gn.exec(t))}function O(t){var e,n,i,r,o,a,s,l,c,u,p=0,h=null;if(e=fn.exec(t),null===e&&(e=gn.exec(t)),null===e)throw new Error("Date resolve error");if(n=+e[1],i=+e[2]-1,r=+e[3],!e[4])return new Date(Date.UTC(n,i,r));if(o=+e[4],a=+e[5],s=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+="0";p=+p}return e[9]&&(l=+e[10],c=+(e[11]||0),h=6e4*(60*l+c),"-"===e[9]&&(h=-h)),u=new Date(Date.UTC(n,i,r,o,a,s,p)),h&&u.setTime(u.getTime()-h),u}function I(t){return t.toISOString()}function T(t){return"<<"===t||null===t}function M(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function N(t,e){return e={exports:{}},t(e,e.exports),e.exports}function F(t){if(null===t)return!1;var e,n,i=0,r=t.length,o=An;for(n=0;n64)){if(e<0)return!1;i+=6}return i%8===0}function q(t){var e,n,i=t.replace(/[\r\n=]/g,""),r=i.length,o=An,a=0,s=[];for(e=0;e>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|o.indexOf(i.charAt(e));return n=r%4*6,0===n?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===n?(s.push(a>>10&255),s.push(a>>2&255)):12===n&&s.push(a>>4&255),Pe?new Pe(s):s}function z(t){var e,n,i="",r=0,o=t.length,a=An;for(e=0;e>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]),r=(r<<8)+t[e];return n=o%3,0===n?(i+=a[r>>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]):2===n?(i+=a[r>>10&63],i+=a[r>>4&63],i+=a[r<<2&63],i+=a[64]):1===n&&(i+=a[r>>2&63],i+=a[r<<4&63],i+=a[64],i+=a[64]),i}function D(t){return Pe&&Pe.isBuffer(t)}function $(t){if(null===t)return!0;var e,n,i,r,o,a=[],s=t;for(e=0,n=s.length;e3)return!1;if("/"!==e[e.length-i.length-1])return!1}return!0}function V(t){var e=t,n=/\/([gim]*)$/.exec(t),i="";return"/"===e[0]&&(n&&(i=n[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function Z(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function X(t){return"[object RegExp]"===Object.prototype.toString.call(t)}function Q(t){if(null===t)return!1;try{var e="("+t+")",n=kn.parse(e,{range:!0});return"Program"===n.type&&1===n.body.length&&"ExpressionStatement"===n.body[0].type&&"FunctionExpression"===n.body[0].expression.type}catch(t){return!1}}function tt(t){var e,n="("+t+")",i=kn.parse(n,{range:!0}),r=[];if("Program"!==i.type||1!==i.body.length||"ExpressionStatement"!==i.body[0].type||"FunctionExpression"!==i.body[0].expression.type)throw new Error("Failed to resolve function");return i.body[0].expression.params.forEach(function(t){r.push(t.name)}),e=i.body[0].expression.body.range,new Function(r,n.slice(e[0]+1,e[1]-1))}function et(t){return t.toString()}function nt(t){return"[object Function]"===Object.prototype.toString.call(t)}function it(t){return 10===t||13===t}function rt(t){return 9===t||32===t}function ot(t){return 9===t||32===t||10===t||13===t}function at(t){return 44===t||91===t||93===t||123===t||125===t}function st(t){var e;return 48<=t&&t<=57?t-48:(e=32|t,97<=e&&e<=102?e-97+10:-1)}function lt(t){return 120===t?2:117===t?4:85===t?8:0}function ct(t){return 48<=t&&t<=57?t-48:-1}function ut(t){return 48===t?"\0":97===t?"":98===t?"\b":116===t?"\t":9===t?"\t":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"…":95===t?" ":76===t?"\u2028":80===t?"\u2029":""}function pt(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}function ht(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||Vn,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function dt(t,e){return new Gn(e,new Kn(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function ft(t,e){throw dt(t,e)}function gt(t,e){t.onWarning&&t.onWarning.call(null,dt(t,e))}function mt(t,e,n,i){var r,o,a,s;if(e1&&(t.result+=Yn.repeat("\n",e-1))}function At(t,e,n){var i,r,o,a,s,l,c,u,p,h=t.kind,d=t.result;if(p=t.input.charCodeAt(t.position),ot(p)||at(p)||35===p||38===p||42===p||33===p||124===p||62===p||39===p||34===p||37===p||64===p||96===p)return!1;if((63===p||45===p)&&(r=t.input.charCodeAt(t.position+1),ot(r)||n&&at(r)))return!1;for(t.kind="scalar",t.result="",o=a=t.position,s=!1;0!==p;){if(58===p){if(r=t.input.charCodeAt(t.position+1),ot(r)||n&&at(r))break}else if(35===p){if(i=t.input.charCodeAt(t.position-1),ot(i))break}else{if(t.position===t.lineStart&&kt(t)||n&&at(p))break;if(it(p)){if(l=t.line,c=t.lineStart,u=t.lineIndent,vt(t,!1,-1),t.lineIndent>=e){s=!0,p=t.input.charCodeAt(t.position);continue}t.position=a,t.line=l,t.lineStart=c,t.lineIndent=u;break}}s&&(mt(t,o,a,!1),wt(t,t.line-l),o=a=t.position,s=!1),rt(p)||(a=t.position+1),p=t.input.charCodeAt(++t.position)}return mt(t,o,a,!1),!!t.result||(t.kind=h,t.result=d,!1)}function Ct(t,e){var n,i,r;if(n=t.input.charCodeAt(t.position),39!==n)return!1;for(t.kind="scalar",t.result="",t.position++,i=r=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(mt(t,i,t.position,!0),n=t.input.charCodeAt(++t.position),39!==n)return!0;i=t.position,t.position++,r=t.position}else it(n)?(mt(t,i,r,!0),wt(t,vt(t,!1,e)),i=r=t.position):t.position===t.lineStart&&kt(t)?ft(t,"unexpected end of the document within a single quoted scalar"):(t.position++,r=t.position);ft(t,"unexpected end of the stream within a single quoted scalar")}function St(t,e){var n,i,r,o,a,s;if(s=t.input.charCodeAt(t.position),34!==s)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;0!==(s=t.input.charCodeAt(t.position));){if(34===s)return mt(t,n,t.position,!0),t.position++,!0;if(92===s){if(mt(t,n,t.position,!0),s=t.input.charCodeAt(++t.position),it(s))vt(t,!1,e);else if(s<256&&ui[s])t.result+=pi[s],t.position++;else if((a=lt(s))>0){for(r=a,o=0;r>0;r--)s=t.input.charCodeAt(++t.position),(a=st(s))>=0?o=(o<<4)+a:ft(t,"expected hexadecimal character");t.result+=pt(o),t.position++}else ft(t,"unknown escape sequence");n=i=t.position}else it(s)?(mt(t,n,i,!0),wt(t,vt(t,!1,e)),n=i=t.position):t.position===t.lineStart&&kt(t)?ft(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}ft(t,"unexpected end of the stream within a double quoted scalar")}function _t(t,e){var n,i,r,o,a,s,l,c,u,p,h,d=!0,f=t.tag,g=t.anchor,m={};if(h=t.input.charCodeAt(t.position),91===h)o=93,l=!1,i=[];else{if(123!==h)return!1;o=125,l=!0,i={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=i),h=t.input.charCodeAt(++t.position);0!==h;){if(vt(t,!0,e),h=t.input.charCodeAt(t.position),h===o)return t.position++,t.tag=f,t.anchor=g,t.kind=l?"mapping":"sequence",t.result=i,!0;d||ft(t,"missed comma between flow collection entries"),u=c=p=null,a=s=!1,63===h&&(r=t.input.charCodeAt(t.position+1),ot(r)&&(a=s=!0,t.position++,vt(t,!0,e))),n=t.line,Mt(t,e,Xn,!1,!0),u=t.tag,c=t.result,vt(t,!0,e),h=t.input.charCodeAt(t.position),!s&&t.line!==n||58!==h||(a=!0,h=t.input.charCodeAt(++t.position),vt(t,!0,e),Mt(t,e,Xn,!1,!0),p=t.result),l?yt(t,i,m,u,c,p):a?i.push(yt(t,null,m,u,c,p)):i.push(c),vt(t,!0,e),h=t.input.charCodeAt(t.position),44===h?(d=!0,h=t.input.charCodeAt(++t.position)):d=!1}ft(t,"unexpected end of the stream within a flow collection")}function Et(t,e){var n,i,r,o,a=ni,s=!1,l=!1,c=e,u=0,p=!1;if(o=t.input.charCodeAt(t.position),124===o)i=!1;else{if(62!==o)return!1;i=!0}for(t.kind="scalar",t.result="";0!==o;)if(o=t.input.charCodeAt(++t.position),43===o||45===o)ni===a?a=43===o?ri:ii:ft(t,"repeat of a chomping mode identifier");else{if(!((r=ct(o))>=0))break;0===r?ft(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?ft(t,"repeat of an indentation width identifier"):(c=e+r-1,l=!0)}if(rt(o)){do o=t.input.charCodeAt(++t.position);while(rt(o));if(35===o)do o=t.input.charCodeAt(++t.position);while(!it(o)&&0!==o)}for(;0!==o;){for(xt(t),t.lineIndent=0,o=t.input.charCodeAt(t.position);(!l||t.lineIndentc&&(c=t.lineIndent),it(o))u++;else{if(t.lineIndente)&&0!==r)ft(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(Mt(t,e,ei,!0,r)&&(f?h=t.result:d=t.result),f||(yt(t,c,u,p,h,d),p=h=d=null),vt(t,!0,-1),a=t.input.charCodeAt(t.position)),t.lineIndent>e&&0!==a)ft(t,"bad indentation of a mapping entry");else if(t.lineIndente?d=1:t.lineIndent===e?d=0:t.lineIndente?d=1:t.lineIndent===e?d=0:t.lineIndent tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result)?(t.result=u.construct(t.result),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):ft(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):ft(t,"unknown tag !<"+t.tag+">");return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||g}function Nt(t){var e,n,i,r,o=t.position,a=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};0!==(r=t.input.charCodeAt(t.position))&&(vt(t,!0,-1),r=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==r));){for(a=!0,r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!ot(r);)r=t.input.charCodeAt(++t.position);for(n=t.input.slice(e,t.position),i=[],n.length<1&&ft(t,"directive name must not be less than one character in length");0!==r;){for(;rt(r);)r=t.input.charCodeAt(++t.position);if(35===r){do r=t.input.charCodeAt(++t.position);while(0!==r&&!it(r));break}if(it(r))break;for(e=t.position;0!==r&&!ot(r);)r=t.input.charCodeAt(++t.position);i.push(t.input.slice(e,t.position))}0!==r&&xt(t),Zn.call(di,n)?di[n](t,n,i):gt(t,'unknown document directive "'+n+'"')}return vt(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,vt(t,!0,-1)):a&&ft(t,"directives end mark is expected"),Mt(t,t.lineIndent-1,ei,!1,!0),vt(t,!0,-1),t.checkLineBreaks&&ai.test(t.input.slice(o,t.position))&>(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&kt(t)?void(46===t.input.charCodeAt(t.position)&&(t.position+=3,vt(t,!0,-1))):void(t.positioni&&" "!==t[u+1],u=o);else if(!Gt(a))return Qi;p=p&&Kt(a)}l=l||c&&o-u-1>i&&" "!==t[u+1]}return s||l?" "===t[0]&&n>9?Qi:l?Xi:Zi:p&&!r(t)?Ji:Vi}function Zt(t,e,n,i){t.dump=function(){function r(e){return Ht(t,e)}if(0===e.length)return"''";if(!t.noCompatMode&&Ki.indexOf(e)!==-1)return"'"+e+"'";var o=t.indent*Math.max(1,n),a=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),s=i||t.flowLevel>-1&&n>=t.flowLevel;switch(Vt(e,s,t.indent,a,r)){case Ji:return e;case Vi:return"'"+e.replace(/'/g,"''")+"'";case Zi:return"|"+Xt(e,t.indent)+Qt(Wt(e,o));case Xi:return">"+Xt(e,t.indent)+Qt(Wt(te(e,a),o));case Qi:return'"'+ne(e,a)+'"';default:throw new vi("impossible error: invalid scalar style")}}()}function Xt(t,e){var n=" "===t[0]?String(e):"",i="\n"===t[t.length-1],r=i&&("\n"===t[t.length-2]||"\n"===t),o=r?"+":i?"":"-";return n+o+"\n"}function Qt(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function te(t,e){for(var n,i,r=/(\n+)([^\n]*)/g,o=function(){var n=t.indexOf("\n");return n=n!==-1?n:t.length,r.lastIndex=n,ee(t.slice(0,n),e)}(),a="\n"===t[0]||" "===t[0];i=r.exec(t);){var s=i[1],l=i[2];n=" "===l[0],o+=s+(a||n||""===l?"":"\n")+ee(l,e),a=n}return o}function ee(t,e){if(""===t||" "===t[0])return t;for(var n,i,r=/ [^ ]/g,o=0,a=0,s=0,l="";n=r.exec(t);)s=n.index,s-o>e&&(i=a>o?a:s,l+="\n"+t.slice(o,i),o=i+1),a=s;return l+="\n",l+=t.length-o>e&&a>o?t.slice(o,a)+"\n"+t.slice(a+1):t.slice(o),l.slice(1)}function ne(t){for(var e,n,i="",r=0;r1024&&(s+="? "),s+=t.dump+": ",le(t,e,a,!1,!1)&&(s+=t.dump,l+=s));t.tag=c,t.dump="{"+l+"}"}function ae(t,e,n,i){var r,o,a,s,l,c,u="",p=t.tag,h=Object.keys(n);if(t.sortKeys===!0)h.sort();else if("function"==typeof t.sortKeys)h.sort(t.sortKeys);else if(t.sortKeys)throw new vi("sortKeys must be a boolean or a function");for(r=0,o=h.length;r1024,l&&(c+=t.dump&&_i===t.dump.charCodeAt(0)?"?":"? "),c+=t.dump,l&&(c+=Bt(t,e)),le(t,e+1,s,!0,l)&&(c+=t.dump&&_i===t.dump.charCodeAt(0)?":":": ",c+=t.dump,u+=c));t.tag=p,t.dump=u||"{}"}function se(t,e,n){var i,r,o,a,s,l;for(r=n?t.explicitTypes:t.implicitTypes,o=0,a=r.length;o tag resolver accepts not "'+l+'" style');i=s.represent[l](e,l)}t.dump=i}return!0}return!1}function le(t,e,n,i,r,o){t.tag=null,t.dump=n,se(t,n,!1)||se(t,n,!0);var a=Ai.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var s,l,c="[object Object]"===a||"[object Array]"===a;if(c&&(s=t.duplicates.indexOf(n),l=s!==-1),(null!==t.tag&&"?"!==t.tag||l||2!==t.indent&&e>0)&&(r=!1),l&&t.usedDuplicates[s])t.dump="*ref_"+s;else{if(c&&l&&!t.usedDuplicates[s]&&(t.usedDuplicates[s]=!0),"[object Object]"===a)i&&0!==Object.keys(t.dump).length?(ae(t,e,t.dump,r),l&&(t.dump="&ref_"+s+t.dump)):(oe(t,e,t.dump),l&&(t.dump="&ref_"+s+" "+t.dump));else if("[object Array]"===a)i&&0!==t.dump.length?(re(t,e,t.dump,r),l&&(t.dump="&ref_"+s+t.dump)):(ie(t,e,t.dump),l&&(t.dump="&ref_"+s+" "+t.dump));else{if("[object String]"!==a){if(t.skipInvalid)return!1;throw new vi("unacceptable kind of an object to dump "+a)}"?"!==t.tag&&Zt(t,t.dump,e,o)}null!==t.tag&&"?"!==t.tag&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function ce(t,e){var n,i,r=[],o=[];for(ue(t,r,o),n=0,i=o.length;n code[class*="language-"],\npre[class*="language-"] {\n}\n\n/* Inline code */\n:not(pre) > code[class*="language-"] {\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: slategray;\n}\n\n.token.punctuation {\n\tcolor: #999;\n}\n\n.namespace {\n\topacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n\tcolor: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n\tcolor: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n\tcolor: #a67f59;\n\tbackground: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n\tcolor: #07a;\n}\n\n.token.function {\n\tcolor: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n\tcolor: #e90;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n',we=function(t){ -var e=t.createElement("style");e.textContent=ye+xe+ve+ke,t.querySelector("head").appendChild(e)},Ae=t,Ce=e,Se=n,_e=r,Ee=o,je=i,Le={isNothing:Ae,isObject:Ce,toArray:Se,repeat:_e,isNegativeZero:Ee,extend:je};a.prototype=Object.create(Error.prototype),a.prototype.constructor=a,a.prototype.toString=function(t){var e=this.name+": ";return e+=this.reason||"(unknown reason)",!t&&this.mark&&(e+=" "+this.mark.toString()),e};var Oe=a,Ie=Le;s.prototype.getSnippet=function(t,e){var n,i,r,o,a,s=this;if(!this.buffer)return null;for(t=t||4,e=e||75,n="",i=this.position;i>0&&"\0\r\n…\u2028\u2029".indexOf(this.buffer.charAt(i-1))===-1;)if(i-=1,s.position-i>e/2-1){n=" ... ",i+=5;break}for(r="",o=this.position;oe/2-1){r=" ... ",o-=5;break}return a=this.buffer.slice(i,o),Ie.repeat(" ",t)+n+a+r+"\n"+Ie.repeat(" ",t+this.position-i+n.length)+"^"},s.prototype.toString=function(t){var e,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),t||(e=this.getSnippet(),e&&(n+=":\n"+e)),n};var Te=s,Me=Oe,Ne=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Fe=["scalar","sequence","mapping"],qe=c,ze=Le,De=Oe,$e=qe;h.DEFAULT=null,h.create=function(){var t,e;switch(arguments.length){case 1:t=h.DEFAULT,e=arguments[0];break;case 2:t=arguments[0],e=arguments[1];break;default:throw new De("Wrong number of arguments for Schema.create function")}if(t=ze.toArray(t),e=ze.toArray(e),!t.every(function(t){return t instanceof h}))throw new De("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!e.every(function(t){return t instanceof $e}))throw new De("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new h({include:t,explicit:e})};var Pe,Re=h,Ue=qe,We=new Ue("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}}),Be=qe,He=new Be("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}}),Ye=qe,Ge=new Ye("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}}),Ke=Re,Je=new Ke({explicit:[We,He,Ge]}),Ve=qe,Ze=new Ve("tag:yaml.org,2002:null",{kind:"scalar",resolve:d,construct:f,predicate:g,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"}),Xe=qe,Qe=new Xe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:m,construct:b,predicate:y,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"}),tn=Le,en=qe,nn=new en("tag:yaml.org,2002:int",{kind:"scalar",resolve:w,construct:A,predicate:C,represent:{binary:function(t){return"0b"+t.toString(2)},octal:function(t){return"0"+t.toString(8)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return"0x"+t.toString(16).toUpperCase()}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),rn=Le,on=qe,an=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),sn=/^[-+]?[0-9]+e/,ln=new on("tag:yaml.org,2002:float",{kind:"scalar",resolve:S,construct:_,predicate:j,represent:E,defaultStyle:"lowercase"}),cn=Re,un=new cn({include:[Je],implicit:[Ze,Qe,nn,ln]}),pn=Re,hn=new pn({include:[un]}),dn=qe,fn=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),gn=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),mn=new dn("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:L,construct:O,instanceOf:Date,represent:I}),bn=qe,yn=new bn("tag:yaml.org,2002:merge",{kind:"scalar",resolve:T}),xn="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};try{var vn=M;Pe=vn("buffer").Buffer}catch(t){}var kn,wn=qe,An="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",Cn=new wn("tag:yaml.org,2002:binary",{kind:"scalar",resolve:F,construct:q,predicate:D,represent:z}),Sn=qe,_n=Object.prototype.hasOwnProperty,En=Object.prototype.toString,jn=new Sn("tag:yaml.org,2002:omap",{kind:"sequence",resolve:$,construct:P}),Ln=qe,On=Object.prototype.toString,In=new Ln("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:R,construct:U}),Tn=qe,Mn=Object.prototype.hasOwnProperty,Nn=new Tn("tag:yaml.org,2002:set",{kind:"mapping",resolve:W,construct:B}),Fn=Re,qn=new Fn({include:[hn],implicit:[mn,yn],explicit:[Cn,jn,In,Nn]}),zn=qe,Dn=new zn("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:H,construct:Y,predicate:K,represent:G}),$n=qe,Pn=new $n("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:J,construct:V,predicate:X,represent:Z});try{var Rn=M;kn=Rn("esprima")}catch(t){"undefined"!=typeof window&&(kn=window.esprima)}for(var Un=qe,Wn=new Un("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Q,construct:tt,predicate:nt,represent:et}),Bn=Re,Hn=Bn.DEFAULT=new Bn({include:[qn],explicit:[Dn,Pn,Wn]}),Yn=Le,Gn=Oe,Kn=Te,Jn=qn,Vn=Hn,Zn=Object.prototype.hasOwnProperty,Xn=1,Qn=2,ti=3,ei=4,ni=1,ii=2,ri=3,oi=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,ai=/[\x85\u2028\u2029]/,si=/[,\[\]\{\}]/,li=/^(?:!|!!|![a-z\-]+!)$/i,ci=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i,ui=new Array(256),pi=new Array(256),hi=0;hi<256;hi++)ui[hi]=ut(hi)?1:0,pi[hi]=ut(hi);var di={YAML:function(t,e,n){var i,r,o;null!==t.version&&ft(t,"duplication of %YAML directive"),1!==n.length&&ft(t,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),null===i&&ft(t,"ill-formed argument of the YAML directive"),r=parseInt(i[1],10),o=parseInt(i[2],10),1!==r&&ft(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=o<2,1!==o&&2!==o&>(t,"unsupported YAML version of the document")},TAG:function(t,e,n){var i,r;2!==n.length&&ft(t,"TAG directive accepts exactly two arguments"),i=n[0],r=n[1],li.test(i)||ft(t,"ill-formed tag handle (first argument) of the TAG directive"),Zn.call(t.tagMap,i)&&ft(t,'there is a previously declared suffix for "'+i+'" tag handle'),ci.test(r)||ft(t,"ill-formed tag prefix (second argument) of the TAG directive"),t.tagMap[i]=r}},fi=qt,gi=zt,mi=Dt,bi=$t,yi={loadAll:fi,load:gi,safeLoadAll:mi,safeLoad:bi},xi=Le,vi=Oe,ki=Hn,wi=qn,Ai=Object.prototype.toString,Ci=Object.prototype.hasOwnProperty,Si=9,_i=10,Ei=32,ji=33,Li=34,Oi=35,Ii=37,Ti=38,Mi=39,Ni=42,Fi=44,qi=45,zi=58,Di=62,$i=63,Pi=64,Ri=91,Ui=93,Wi=96,Bi=123,Hi=124,Yi=125,Gi={};Gi[0]="\\0",Gi[7]="\\a",Gi[8]="\\b",Gi[9]="\\t",Gi[10]="\\n",Gi[11]="\\v",Gi[12]="\\f",Gi[13]="\\r",Gi[27]="\\e",Gi[34]='\\"',Gi[92]="\\\\",Gi[133]="\\N",Gi[160]="\\_",Gi[8232]="\\L",Gi[8233]="\\P";var Ki=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],Ji=1,Vi=2,Zi=3,Xi=4,Qi=5,tr=pe,er=he,nr={dump:tr,safeDump:er},ir=yi,rr=nr,or=qe,ar=Re,sr=Je,lr=un,cr=hn,ur=qn,pr=Hn,hr=ir.load,dr=ir.loadAll,fr=ir.safeLoad,gr=ir.safeLoadAll,mr=rr.dump,br=rr.safeDump,yr=Oe,xr=Je,vr=qn,kr=Hn,wr=de("scan"),Ar=de("parse"),Cr=de("compose"),Sr=de("addConstructor"),_r={Type:or,Schema:ar,FAILSAFE_SCHEMA:sr,JSON_SCHEMA:lr,CORE_SCHEMA:cr,DEFAULT_SAFE_SCHEMA:ur,DEFAULT_FULL_SCHEMA:pr,load:hr,loadAll:dr,safeLoad:fr,safeLoadAll:gr,dump:mr,safeDump:br,YAMLException:yr,MINIMAL_SCHEMA:xr,SAFE_SCHEMA:vr,DEFAULT_SCHEMA:kr,scan:wr,parse:Ar,compose:Cr,addConstructor:Sr},Er=_r,jr=Er,Lr=function(t,e){var n=t.querySelector('script[type="text/front-matter"]');if(n){var i=n.textContent,r=jr.safeLoad(i);e.title=r.title,e.description=r.description,e.authors=r.authors.map(function(t,e){var n={},i=Object.keys(t)[0],o=i.split(" ");if(n.firstName=o.slice(0,o.length-1).join(" "),n.lastName=o[o.length-1],n.personalURL=t[i],r.affiliations[e]){var a=Object.keys(r.affiliations[e])[0];n.affiliation=a,n.affiliationURL=r.affiliations[e][a]}return n})}},Or=N(function(t,e){!function(t){function e(){this.months=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],this.notKey=[",","{","}"," ","="],this.pos=0,this.input="",this.entries=new Array,this.currentEntry="",this.setInput=function(t){this.input=t},this.getEntries=function(){return this.entries},this.isWhitespace=function(t){return" "==t||"\r"==t||"\t"==t||"\n"==t},this.match=function(t,e){if(void 0!=e&&null!=e||(e=!0),this.skipWhitespace(e),this.input.substring(this.pos,this.pos+t.length)!=t)throw"Token mismatch, expected "+t+", found "+this.input.substring(this.pos);this.pos+=t.length,this.skipWhitespace(e)},this.tryMatch=function(t,e){return void 0!=e&&null!=e||(e=!0),this.skipWhitespace(e),this.input.substring(this.pos,this.pos+t.length)==t},this.matchAt=function(){for(var t=this;this.input.length>this.pos&&"@"!=this.input[this.pos];)t.pos++;return"@"==this.input[this.pos]},this.skipWhitespace=function(t){for(var e=this;this.isWhitespace(this.input[this.pos]);)e.pos++;if("%"==this.input[this.pos]&&1==t){for(;"\n"!=this.input[this.pos];)e.pos++;this.skipWhitespace(t)}},this.value_braces=function(){var t=this,e=0;this.match("{",!1);for(var n=this.pos,i=!1;;){if(!i)if("}"==t.input[t.pos]){if(!(e>0)){var r=t.pos;return t.match("}",!1),t.input.substring(n,r)}e--}else if("{"==t.input[t.pos])e++;else if(t.pos>=t.input.length-1)throw"Unterminated value";i="\\"==t.input[t.pos]&&0==i,t.pos++}},this.value_comment=function(){for(var t=this,e="",n=0;!this.tryMatch("}",!1)||0!=n;){if(e+=t.input[t.pos],"{"==t.input[t.pos]&&n++,"}"==t.input[t.pos]&&n--,t.pos>=t.input.length-1)throw"Unterminated value:"+t.input.substring(start);t.pos++}return e},this.value_quotes=function(){var t=this;this.match('"',!1);for(var e=this.pos,n=!1;;){if(!n){if('"'==t.input[t.pos]){var i=t.pos;return t.match('"',!1),t.input.substring(e,i)}if(t.pos>=t.input.length-1)throw"Unterminated value:"+t.input.substring(e)}n="\\"==t.input[t.pos]&&0==n,t.pos++}},this.single_value=function(){var t=this.pos;if(this.tryMatch("{"))return this.value_braces();if(this.tryMatch('"'))return this.value_quotes();var e=this.key();if(e.match("^[0-9]+$"))return e;if(this.months.indexOf(e.toLowerCase())>=0)return e.toLowerCase();throw"Value expected:"+this.input.substring(t)+" for key: "+e},this.value=function(){var t=this,e=[];for(e.push(this.single_value());this.tryMatch("#");)t.match("#"),e.push(t.single_value());return e.join("")},this.key=function(){for(var t=this,e=this.pos;;){if(t.pos>=t.input.length)throw"Runaway key";if(t.notKey.indexOf(t.input[t.pos])>=0)return t.input.substring(e,t.pos);t.pos++}},this.key_equals_value=function(){var t=this.key();if(this.tryMatch("=")){this.match("=");var e=this.value();return[t,e]}throw"... = value expected, equals sign missing:"+this.input.substring(this.pos)},this.key_value_list=function(){var t=this,e=this.key_equals_value();for(this.currentEntry.entryTags={},this.currentEntry.entryTags[e[0]]=e[1];this.tryMatch(",")&&(t.match(","),!t.tryMatch("}"));)e=t.key_equals_value(),t.currentEntry.entryTags[e[0]]=e[1]},this.entry_body=function(t){this.currentEntry={},this.currentEntry.citationKey=this.key(),this.currentEntry.entryType=t.substring(1),this.match(","),this.key_value_list(),this.entries.push(this.currentEntry)},this.directive=function(){return this.match("@"),"@"+this.key()},this.preamble=function(){this.currentEntry={},this.currentEntry.entryType="PREAMBLE",this.currentEntry.entry=this.value_comment(),this.entries.push(this.currentEntry)},this.comment=function(){this.currentEntry={},this.currentEntry.entryType="COMMENT",this.currentEntry.entry=this.value_comment(),this.entries.push(this.currentEntry)},this.entry=function(t){this.entry_body(t)},this.bibtex=function(){for(var t=this;this.matchAt();){var e=t.directive();t.match("{"),"@STRING"==e?t.string():"@PREAMBLE"==e?t.preamble():"@COMMENT"==e?t.comment():t.entry(e),t.match("}")}}}t.toJSON=function(t){var n=new e;return n.setInput(t),n.bibtex(),n.entries},t.toBibtex=function(t){var e="";for(var n in t){if(e+="@"+t[n].entryType,e+="{",t[n].citationKey&&(e+=t[n].citationKey+", "),t[n].entry&&(e+=t[n].entry),t[n].entryTags){var i="";for(var r in t[n].entryTags)0!=i.length&&(i+=", "),i+=r+"= {"+t[n].entryTags[r]+"}";e+=i}e+="}\n\n"}return e}}(e)}),Ir=function(t,e){var n=t.querySelector('script[type="text/bibliography"]');if(n){var i=n.textContent,r={};Or.toJSON(i).forEach(function(t){r[t.citationKey]=t.entryTags,r[t.citationKey].type=t.entryType});var o={},a=[].slice.apply(t.querySelectorAll("dt-cite"));a.forEach(function(t){var e=t.getAttribute("key").split(",");e.forEach(function(t){r[t]?o[t]=r[t]:console.warn("No bibliography entry found for: "+t)})}),e.citations=o}},Tr=function(t,e){var n=t.querySelector("head");if(fe(n,'\n \n \n \n \n '+e.title+"\n "),fe(n,'\n \n \n \n '),e.authors.forEach(function(t){fe(n,'\n ')}),fe(n,'\n \n \n \n \n \n \n \n \n '),fe(n,'\n \n \n \n \n \n \n \n \n '),fe(n,'\n \n \n \n \n \n \n \n \n \n \n \n \n '),e.authors.forEach(function(t){fe(n,'\n \n \n ')}),e.citations){var i=Object.keys(e.citations);i.forEach(function(t){console.log(t),fe(n,'\n \n ')})}},Mr='\n \n\n',Nr='\n\n\n\n',Fr=function(t,e){t.querySelector("dt-header").innerHTML=Nr},qr='\n\n\n
\n

References

\n \n

Errors, Reuse, and Citation

\n

If you see mistakes or want to suggest changes, please submit a pull request on github.

\n

Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don\'t fall under this license and can be recognized by a note in their caption: “Figure from …”.

\n

For attribution in academic contexts, please cite this work as

\n
\n  

BibTeX citation

\n
\n
\n',zr=function(t,e){var n=t.querySelector("dt-appendix");n&&(n.innerHTML=qr)},Dr='\n\n\n
\n is dedicated to clear explanations of machine learning\n
\n",$r=function(t,e){var n=t.querySelector("dt-footer");n&&(n.innerHTML=Dr)},Pr=function(t,e){function n(t){if(!(t in e.citations))return"?";var n=e.citations[t],i=n.author.split(" and ");i=i.map(function(t){return t.split(",")[0].trim()});var r=n.year;return 1==i.length?i[0]+", "+r:2==i.length?i[0]+" & "+i[1]+", "+r:i.length>2?i[0]+", et al., "+r:void 0}function i(t){if(t){var e=t.author.split(" and "),n="",i=e.map(function(t){var e=t.split(",")[0].trim(),n=t.split(",")[1];if(void 0!=n){var i=n.trim().split(" ").map(function(t){return t.trim()[0]});return e+", "+i.join(".")+"."}return e});if(e.length>1?(n+=i.slice(0,e.length-1).join(", "),n+=" and "+i[e.length-1]):n+=i[0],n+=", "+t.year+". ",n+=t.title+". ",n+=t.journal||t.booktitle||"","volume"in t){var r=t.issue||t.number;r=void 0!=r?"("+r+")":"",n+=", Vol "+t.volume+r}return"pages"in t&&(n+=", pp. "+t.pages),n+=". "}return"?"}var r=[];e.citations&&(r=Object.keys(e.citations).map(function(t){return e.citations[t]}),r.sort(function(t,e){return t.author.localeCompare(e.author)}));var o=[].slice.apply(t.querySelectorAll("dt-cite"));o.forEach(function(t){var e=t.textContent.split(","),i=e.map(n).join(", ");t.innerHTML=i});var a=t.querySelector("dt-bibliography");if(a){var s=t.createElement("ol");r.forEach(function(e){var n=t.createElement("li");n.textContent=i(e),s.appendChild(n)}),a.appendChild(s)}},Rr=N(function(t,e){(function(){function e(t){this.tokens=[],this.tokens.links={},this.options=t||u.defaults,this.rules=p.normal,this.options.gfm&&(this.options.tables?this.rules=p.tables:this.rules=p.gfm)}function n(t,e){if(this.options=e||u.defaults,this.links=t,this.rules=h.normal,this.renderer=this.options.renderer||new i,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=h.breaks:this.rules=h.gfm:this.options.pedantic&&(this.rules=h.pedantic)}function i(t){this.options=t||{}}function r(t){this.tokens=[],this.token=null,this.options=t||u.defaults,this.options.renderer=this.options.renderer||new i,this.renderer=this.options.renderer,this.renderer.options=this.options}function o(t,e){return t.replace(e?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function a(t){return t.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g,function(t,e){return e=e.toLowerCase(),"colon"===e?":":"#"===e.charAt(0)?"x"===e.charAt(1)?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):""})}function s(t,e){return t=t.source,e=e||"",function n(i,r){return i?(r=r.source||r,r=r.replace(/(^|[^\[])\^/g,"$1"),t=t.replace(i,r),n):new RegExp(t,e)}}function l(){}function c(t){for(var e,n,i=arguments,r=1;rAn error occured:

"+o(t.message+"",!0)+"
";throw t}}var p={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:l,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:l,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:l,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};p.bullet=/(?:[*+-]|\d+\.)/,p.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,p.item=s(p.item,"gm")(/bull/g,p.bullet)(),p.list=s(p.list)(/bull/g,p.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+p.def.source+")")(),p.blockquote=s(p.blockquote)("def",p.def)(),p._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",p.html=s(p.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,p._tag)(),p.paragraph=s(p.paragraph)("hr",p.hr)("heading",p.heading)("lheading",p.lheading)("blockquote",p.blockquote)("tag","<"+p._tag)("def",p.def)(),p.normal=c({},p),p.gfm=c({},p.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),p.gfm.paragraph=s(p.paragraph)("(?!","(?!"+p.gfm.fences.source.replace("\\1","\\2")+"|"+p.list.source.replace("\\1","\\3")+"|")(),p.tables=c({},p.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),e.rules=p,e.lex=function(t,n){var i=new e(n);return i.lex(t)},e.prototype.lex=function(t){return t=t.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(t,!0)},e.prototype.token=function(t,e,n){for(var i,r,o,a,s,l,c,u,h,d=this,t=t.replace(/^ +$/gm,"");t;)if((o=d.rules.newline.exec(t))&&(t=t.substring(o[0].length),o[0].length>1&&d.tokens.push({type:"space"})),o=d.rules.code.exec(t))t=t.substring(o[0].length),o=o[0].replace(/^ {4}/gm,""),d.tokens.push({type:"code",text:d.options.pedantic?o:o.replace(/\n+$/,"")});else if(o=d.rules.fences.exec(t))t=t.substring(o[0].length),d.tokens.push({type:"code",lang:o[2],text:o[3]||""});else if(o=d.rules.heading.exec(t))t=t.substring(o[0].length),d.tokens.push({type:"heading",depth:o[1].length,text:o[2]});else if(e&&(o=d.rules.nptable.exec(t))){for(t=t.substring(o[0].length),l={type:"table",header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3].replace(/\n$/,"").split("\n")},u=0;u ?/gm,""),d.token(o,e,!0),d.tokens.push({type:"blockquote_end"});else if(o=d.rules.list.exec(t)){for(t=t.substring(o[0].length),a=o[2],d.tokens.push({type:"list_start",ordered:a.length>1}),o=o[0].match(d.rules.item),i=!1,h=o.length,u=0;u1&&s.length>1||(t=o.slice(u+1).join("\n")+t,u=h-1)),r=i||/\n\n(?!\s*$)/.test(l),u!==h-1&&(i="\n"===l.charAt(l.length-1),r||(r=i)),d.tokens.push({type:r?"loose_item_start":"list_item_start"}),d.token(l,!1,n),d.tokens.push({type:"list_item_end"});d.tokens.push({type:"list_end"})}else if(o=d.rules.html.exec(t))t=t.substring(o[0].length),d.tokens.push({type:d.options.sanitize?"paragraph":"html",pre:!d.options.sanitizer&&("pre"===o[1]||"script"===o[1]||"style"===o[1]),text:o[0]});else if(!n&&e&&(o=d.rules.def.exec(t)))t=t.substring(o[0].length),d.tokens.links[o[1].toLowerCase()]={href:o[2],title:o[3]};else if(e&&(o=d.rules.table.exec(t))){for(t=t.substring(o[0].length),l={type:"table",header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3].replace(/(?: *\| *)?\n$/,"").split("\n")},u=0;u])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:l,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:l,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,h.link=s(h.link)("inside",h._inside)("href",h._href)(),h.reflink=s(h.reflink)("inside",h._inside)(),h.normal=c({},h),h.pedantic=c({},h.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),h.gfm=c({},h.normal,{escape:s(h.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:s(h.text)("]|","~]|")("|","|https?://|")()}),h.breaks=c({},h.gfm,{br:s(h.br)("{2,}","*")(),text:s(h.gfm.text)("{2,}","*")()}),n.rules=h,n.output=function(t,e,i){var r=new n(e,i);return r.output(t)},n.prototype.output=function(t){for(var e,n,i,r,a=this,s="";t;)if(r=a.rules.escape.exec(t))t=t.substring(r[0].length),s+=r[1];else if(r=a.rules.autolink.exec(t))t=t.substring(r[0].length),"@"===r[2]?(n=":"===r[1].charAt(6)?a.mangle(r[1].substring(7)):a.mangle(r[1]),i=a.mangle("mailto:")+n):(n=o(r[1]),i=n),s+=a.renderer.link(i,null,n);else if(a.inLink||!(r=a.rules.url.exec(t))){if(r=a.rules.tag.exec(t))!a.inLink&&/^/i.test(r[0])&&(a.inLink=!1),t=t.substring(r[0].length),s+=a.options.sanitize?a.options.sanitizer?a.options.sanitizer(r[0]):o(r[0]):r[0];else if(r=a.rules.link.exec(t))t=t.substring(r[0].length),a.inLink=!0,s+=a.outputLink(r,{href:r[2],title:r[3]}),a.inLink=!1;else if((r=a.rules.reflink.exec(t))||(r=a.rules.nolink.exec(t))){if(t=t.substring(r[0].length),e=(r[2]||r[1]).replace(/\s+/g," "),e=a.links[e.toLowerCase()],!e||!e.href){s+=r[0].charAt(0),t=r[0].substring(1)+t;continue}a.inLink=!0,s+=a.outputLink(r,e),a.inLink=!1}else if(r=a.rules.strong.exec(t))t=t.substring(r[0].length),s+=a.renderer.strong(a.output(r[2]||r[1]));else if(r=a.rules.em.exec(t))t=t.substring(r[0].length),s+=a.renderer.em(a.output(r[2]||r[1]));else if(r=a.rules.code.exec(t))t=t.substring(r[0].length),s+=a.renderer.codespan(o(r[2],!0));else if(r=a.rules.br.exec(t))t=t.substring(r[0].length),s+=a.renderer.br();else if(r=a.rules.del.exec(t))t=t.substring(r[0].length),s+=a.renderer.del(a.output(r[1]));else if(r=a.rules.text.exec(t))t=t.substring(r[0].length),s+=a.renderer.text(o(a.smartypants(r[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else t=t.substring(r[0].length),n=o(r[1]),i=n,s+=a.renderer.link(i,null,n);return s},n.prototype.outputLink=function(t,e){var n=o(e.href),i=e.title?o(e.title):null;return"!"!==t[0].charAt(0)?this.renderer.link(n,i,this.output(t[1])):this.renderer.image(n,i,o(t[1])); -},n.prototype.smartypants=function(t){return this.options.smartypants?t.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):t},n.prototype.mangle=function(t){if(!this.options.mangle)return t;for(var e,n="",i=t.length,r=0;r.5&&(e="x"+e.toString(16)),n+="&#"+e+";";return n},i.prototype.code=function(t,e,n){if(this.options.highlight){var i=this.options.highlight(t,e);null!=i&&i!==t&&(n=!0,t=i)}return e?'
'+(n?t:o(t,!0))+"\n
\n":"
"+(n?t:o(t,!0))+"\n
"},i.prototype.blockquote=function(t){return"
\n"+t+"
\n"},i.prototype.html=function(t){return t},i.prototype.heading=function(t,e,n){return"'+t+"\n"},i.prototype.hr=function(){return this.options.xhtml?"
\n":"
\n"},i.prototype.list=function(t,e){var n=e?"ol":"ul";return"<"+n+">\n"+t+"\n"},i.prototype.listitem=function(t){return"
  • "+t+"
  • \n"},i.prototype.paragraph=function(t){return"

    "+t+"

    \n"},i.prototype.table=function(t,e){return"\n\n"+t+"\n\n"+e+"\n
    \n"},i.prototype.tablerow=function(t){return"\n"+t+"\n"},i.prototype.tablecell=function(t,e){var n=e.header?"th":"td",i=e.align?"<"+n+' style="text-align:'+e.align+'">':"<"+n+">";return i+t+"\n"},i.prototype.strong=function(t){return""+t+""},i.prototype.em=function(t){return""+t+""},i.prototype.codespan=function(t){return""+t+""},i.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},i.prototype.del=function(t){return""+t+""},i.prototype.link=function(t,e,n){if(this.options.sanitize){try{var i=decodeURIComponent(a(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0===i.indexOf("javascript:")||0===i.indexOf("vbscript:"))return""}var r='
    "},i.prototype.image=function(t,e,n){var i=''+n+'":">"},i.prototype.text=function(t){return t},r.parse=function(t,e,n){var i=new r(e,n);return i.parse(t)},r.prototype.parse=function(t){var e=this;this.inline=new n(t.links,this.options,this.renderer),this.tokens=t.reverse();for(var i="";this.next();)i+=e.tok();return i},r.prototype.next=function(){return this.token=this.tokens.pop()},r.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},r.prototype.parseText=function(){for(var t=this,e=this.token.text;"text"===this.peek().type;)e+="\n"+t.next().text;return this.inline.output(e)},r.prototype.tok=function(){var t=this;switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,n,i,r,o,a="",s="";for(i="",e=0;et.length)break t;if(!(x instanceof r)){u.lastIndex=0;var v=u.exec(x),k=1;if(!v&&d&&b!=o.length-1){if(u.lastIndex=y,v=u.exec(t),!v)break;for(var w=v.index+(h?v[1].length:0),A=v.index+v[0].length,C=b,S=y,_=o.length;C<_&&S=S&&(++b,y=S);if(o[b]instanceof r||o[C-1].greedy)continue;k=C-b,x=t.slice(y,S),v.index-=y}if(v){h&&(f=v[1].length);var w=v.index+f,v=v[0].slice(f),A=w+v.length,E=x.slice(0,w),j=x.slice(A),L=[b,k];E&&L.push(E);var O=new r(s,p?i.tokenize(v,p):v,g,v,d);L.push(O),j&&L.push(j),Array.prototype.splice.apply(o,L)}}}}}return o},hooks:{all:{},add:function(t,e){var n=i.hooks.all;n[t]=n[t]||[],n[t].push(e)},run:function(t,e){var n=i.hooks.all[t];if(n&&n.length)for(var r,o=0;r=n[o++];)r(e)}}},r=i.Token=function(t,e,n,i,r){this.type=t,this.content=e,this.alias=n,this.length=0|(i||"").length,this.greedy=!!r};if(r.stringify=function(t,e,n){if("string"==typeof t)return t;if("Array"===i.util.type(t))return t.map(function(n){return r.stringify(n,e,t)}).join("");var o={type:t.type,content:r.stringify(t.content,e,n),tag:"span",classes:["token",t.type],attributes:{},language:e,parent:n};if("comment"==o.type&&(o.attributes.spellcheck="true"),t.alias){var a="Array"===i.util.type(t.alias)?t.alias:[t.alias];Array.prototype.push.apply(o.classes,a)}i.hooks.run("wrap",o);var s=Object.keys(o.attributes).map(function(t){return t+'="'+(o.attributes[t]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+(s?" "+s:"")+">"+o.content+""},!e.document)return e.addEventListener?(e.addEventListener("message",function(t){var n=JSON.parse(t.data),r=n.language,o=n.code,a=n.immediateClose;e.postMessage(i.highlight(o,i.languages[r],r)),a&&e.close()},!1),e.Prism):e.Prism;var o=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return o&&(i.filename=o.src,document.addEventListener&&!o.hasAttribute("data-manual")&&("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(i.highlightAll):window.setTimeout(i.highlightAll,16):document.addEventListener("DOMContentLoaded",i.highlightAll))),e.Prism}();t.exports&&(t.exports=n),"undefined"!=typeof xn&&(xn.Prism=n),n.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},n.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))}),n.languages.xml=n.languages.markup,n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},n.languages.css.atrule.inside.rest=n.util.clone(n.languages.css),n.languages.markup&&(n.languages.insertBefore("markup","tag",{style:{pattern:/()[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:n.languages.css,alias:"language-css"}}),n.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:n.languages.css}},alias:"language-css"}},n.languages.markup.tag)),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{keyword:/\b(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|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/}),n.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),n.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}}}),n.languages.markup&&n.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:n.languages.javascript,alias:"language-javascript"}}),n.languages.js=n.languages.javascript,function(){"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.forEach&&Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(e){for(var i,r=e.getAttribute("data-src"),o=e,a=/\blang(?:uage)?-(?!\*)(\w+)\b/i;o&&!a.test(o.className);)o=o.parentNode;if(o&&(i=(e.className.match(a)||[,""])[1]),!i){var s=(r.match(/\.(\w+)$/)||[,""])[1];i=t[s]||s}var l=document.createElement("code");l.className="language-"+i,e.textContent="",l.textContent="Loading…",e.appendChild(l);var c=new XMLHttpRequest;c.open("GET",r,!0),c.onreadystatechange=function(){4==c.readyState&&(c.status<400&&c.responseText?(l.textContent=c.responseText,n.highlightElement(l)):c.status>=400?l.textContent="✖ Error "+c.status+" while fetching file: "+c.statusText:l.textContent="✖ Error: File does not exist or is empty")},c.send(null)})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}()}),Br=function(t,e){var n=[].slice.call(t.querySelectorAll("dt-code"));n.forEach(function(e){var n=e.textContent;e.innerHTML="";var i=e.getAttribute("language"),r=t.createElement("code");if(""===e.getAttribute("block")){n=n.replace(/\n/,"");var o=n.match(/\s*/);n=n.replace(new RegExp("\n"+o,"g"),"\n"),n=n.trim();var a=t.createElement("pre");a.appendChild(r),e.appendChild(a)}else e.appendChild(r);var s=n;Wr.languages[i]&&(r.setAttribute("class","language-"+i),s=Wr.highlight(n,Wr.languages[i])),r.innerHTML=s})},Hr={title:"Experiments in Handwriting with a Neural Network",description:"Several interactive visualizations of a generative model of handwriting. Some are fun, some are serious.",url:"http://distill.pub/2016/handwriting/",github:"https://github.com/distillpub/post--handwriting",firstPublished:"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)",lastPublished:"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)",authors:[{firstName:"Shan",lastName:"Carter",personalURL:"http://shancarter.com",affiliation:"Google Brain",affiliationURL:"http://g.co/brain"},{firstName:"David",lastName:"Ha",personalURL:"https://github.com/hardmaru",affiliation:"Google Brain",affiliationURL:"http://g.co/brain"},{firstName:"Ian",lastName:"Johnson",personalURL:"https://github.com/enjalot",affiliation:"Google Cloud",affiliationURL:""},{firstName:"Chris",lastName:"Olah",personalURL:"http://colah.github.io/",affiliation:"Google Brain",affiliationURL:"http://g.co/brain"}],journal:{title:"Distill",full_title:"Distill",abbrev_title:"Distill",url:"http://distill.pub",doi:"00.0000/dstl",issn:"0000-0000"}};return window.document&&me(window.document,Hr),me}(); +var dl=function(){"use strict";function t(t){return"undefined"==typeof t||null===t}function e(t){return"object"==typeof t&&null!==t}function n(e){return Array.isArray(e)?e:t(e)?[]:[e]}function i(t,e){var n,i,r,o;if(e)for(o=Object.keys(e),n=0,i=o.length;n=0&&(e=e.slice(1)),".inf"===e?1===n?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY:".nan"===e?NaN:e.indexOf(":")>=0?(e.split(":").forEach(function(t){r.unshift(parseFloat(t,10))}),e=0,i=1,r.forEach(function(t){e+=t*i,i*=60}),n*e):n*parseFloat(e,10)}function E(t,e){var n;if(isNaN(t))switch(e){case"lowercase":return".nan";case"uppercase":return".NAN";case"camelcase":return".NaN"}else if(Number.POSITIVE_INFINITY===t)switch(e){case"lowercase":return".inf";case"uppercase":return".INF";case"camelcase":return".Inf"}else if(Number.NEGATIVE_INFINITY===t)switch(e){case"lowercase":return"-.inf";case"uppercase":return"-.INF";case"camelcase":return"-.Inf"}else if(rn.isNegativeZero(t))return"-0.0";return n=t.toString(10),sn.test(n)?n.replace("e",".e"):n}function j(t){return"[object Number]"===Object.prototype.toString.call(t)&&(t%1!==0||rn.isNegativeZero(t))}function O(t){return null!==t&&(null!==fn.exec(t)||null!==gn.exec(t))}function L(t){var e,n,i,r,o,a,s,l,c,u,p=0,h=null;if(e=fn.exec(t),null===e&&(e=gn.exec(t)),null===e)throw new Error("Date resolve error");if(n=+e[1],i=+e[2]-1,r=+e[3],!e[4])return new Date(Date.UTC(n,i,r));if(o=+e[4],a=+e[5],s=+e[6],e[7]){for(p=e[7].slice(0,3);p.length<3;)p+="0";p=+p}return e[9]&&(l=+e[10],c=+(e[11]||0),h=6e4*(60*l+c),"-"===e[9]&&(h=-h)),u=new Date(Date.UTC(n,i,r,o,a,s,p)),h&&u.setTime(u.getTime()-h),u}function I(t){return t.toISOString()}function T(t){return"<<"===t||null===t}function M(){throw new Error("Dynamic requires are not currently supported by rollup-plugin-commonjs")}function F(t,e){return e={exports:{}},t(e,e.exports),e.exports}function N(t){if(null===t)return!1;var e,n,i=0,r=t.length,o=An;for(n=0;n64)){if(e<0)return!1;i+=6}return i%8===0}function q(t){var e,n,i=t.replace(/[\r\n=]/g,""),r=i.length,o=An,a=0,s=[];for(e=0;e>16&255),s.push(a>>8&255),s.push(255&a)),a=a<<6|o.indexOf(i.charAt(e));return n=r%4*6,0===n?(s.push(a>>16&255),s.push(a>>8&255),s.push(255&a)):18===n?(s.push(a>>10&255),s.push(a>>2&255)):12===n&&s.push(a>>4&255),Pe?new Pe(s):s}function z(t){var e,n,i="",r=0,o=t.length,a=An;for(e=0;e>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]),r=(r<<8)+t[e];return n=o%3,0===n?(i+=a[r>>18&63],i+=a[r>>12&63],i+=a[r>>6&63],i+=a[63&r]):2===n?(i+=a[r>>10&63],i+=a[r>>4&63],i+=a[r<<2&63],i+=a[64]):1===n&&(i+=a[r>>2&63],i+=a[r<<4&63],i+=a[64],i+=a[64]),i}function $(t){return Pe&&Pe.isBuffer(t)}function D(t){if(null===t)return!0;var e,n,i,r,o,a=[],s=t;for(e=0,n=s.length;e3)return!1;if("/"!==e[e.length-i.length-1])return!1}return!0}function J(t){var e=t,n=/\/([gim]*)$/.exec(t),i="";return"/"===e[0]&&(n&&(i=n[1]),e=e.slice(1,e.length-i.length-1)),new RegExp(e,i)}function Z(t){var e="/"+t.source+"/";return t.global&&(e+="g"),t.multiline&&(e+="m"),t.ignoreCase&&(e+="i"),e}function X(t){return"[object RegExp]"===Object.prototype.toString.call(t)}function Q(t){if(null===t)return!1;try{var e="("+t+")",n=kn.parse(e,{range:!0});return"Program"===n.type&&1===n.body.length&&"ExpressionStatement"===n.body[0].type&&"FunctionExpression"===n.body[0].expression.type}catch(t){return!1}}function tt(t){var e,n="("+t+")",i=kn.parse(n,{range:!0}),r=[];if("Program"!==i.type||1!==i.body.length||"ExpressionStatement"!==i.body[0].type||"FunctionExpression"!==i.body[0].expression.type)throw new Error("Failed to resolve function");return i.body[0].expression.params.forEach(function(t){r.push(t.name)}),e=i.body[0].expression.body.range,new Function(r,n.slice(e[0]+1,e[1]-1))}function et(t){return t.toString()}function nt(t){return"[object Function]"===Object.prototype.toString.call(t)}function it(t){return 10===t||13===t}function rt(t){return 9===t||32===t}function ot(t){return 9===t||32===t||10===t||13===t}function at(t){return 44===t||91===t||93===t||123===t||125===t}function st(t){var e;return 48<=t&&t<=57?t-48:(e=32|t,97<=e&&e<=102?e-97+10:-1)}function lt(t){return 120===t?2:117===t?4:85===t?8:0}function ct(t){return 48<=t&&t<=57?t-48:-1}function ut(t){return 48===t?"\0":97===t?"":98===t?"\b":116===t?"\t":9===t?"\t":110===t?"\n":118===t?"\v":102===t?"\f":114===t?"\r":101===t?"":32===t?" ":34===t?'"':47===t?"/":92===t?"\\":78===t?"…":95===t?" ":76===t?"\u2028":80===t?"\u2029":""}function pt(t){return t<=65535?String.fromCharCode(t):String.fromCharCode((t-65536>>10)+55296,(t-65536&1023)+56320)}function ht(t,e){this.input=t,this.filename=e.filename||null,this.schema=e.schema||Jn,this.onWarning=e.onWarning||null,this.legacy=e.legacy||!1,this.json=e.json||!1,this.listener=e.listener||null,this.implicitTypes=this.schema.compiledImplicit,this.typeMap=this.schema.compiledTypeMap,this.length=t.length,this.position=0,this.line=0,this.lineStart=0,this.lineIndent=0,this.documents=[]}function dt(t,e){return new Kn(e,new Gn(t.filename,t.input,t.position,t.line,t.position-t.lineStart))}function ft(t,e){throw dt(t,e)}function gt(t,e){t.onWarning&&t.onWarning.call(null,dt(t,e))}function mt(t,e,n,i){var r,o,a,s;if(e1&&(t.result+=Yn.repeat("\n",e-1))}function At(t,e,n){var i,r,o,a,s,l,c,u,p,h=t.kind,d=t.result;if(p=t.input.charCodeAt(t.position),ot(p)||at(p)||35===p||38===p||42===p||33===p||124===p||62===p||39===p||34===p||37===p||64===p||96===p)return!1;if((63===p||45===p)&&(r=t.input.charCodeAt(t.position+1),ot(r)||n&&at(r)))return!1;for(t.kind="scalar",t.result="",o=a=t.position,s=!1;0!==p;){if(58===p){if(r=t.input.charCodeAt(t.position+1),ot(r)||n&&at(r))break}else if(35===p){if(i=t.input.charCodeAt(t.position-1),ot(i))break}else{if(t.position===t.lineStart&&kt(t)||n&&at(p))break;if(it(p)){if(l=t.line,c=t.lineStart,u=t.lineIndent,vt(t,!1,-1),t.lineIndent>=e){s=!0,p=t.input.charCodeAt(t.position);continue}t.position=a,t.line=l,t.lineStart=c,t.lineIndent=u;break}}s&&(mt(t,o,a,!1),wt(t,t.line-l),o=a=t.position,s=!1),rt(p)||(a=t.position+1),p=t.input.charCodeAt(++t.position)}return mt(t,o,a,!1),!!t.result||(t.kind=h,t.result=d,!1)}function Ct(t,e){var n,i,r;if(n=t.input.charCodeAt(t.position),39!==n)return!1;for(t.kind="scalar",t.result="",t.position++,i=r=t.position;0!==(n=t.input.charCodeAt(t.position));)if(39===n){if(mt(t,i,t.position,!0),n=t.input.charCodeAt(++t.position),39!==n)return!0;i=t.position,t.position++,r=t.position}else it(n)?(mt(t,i,r,!0),wt(t,vt(t,!1,e)),i=r=t.position):t.position===t.lineStart&&kt(t)?ft(t,"unexpected end of the document within a single quoted scalar"):(t.position++,r=t.position);ft(t,"unexpected end of the stream within a single quoted scalar")}function St(t,e){var n,i,r,o,a,s;if(s=t.input.charCodeAt(t.position),34!==s)return!1;for(t.kind="scalar",t.result="",t.position++,n=i=t.position;0!==(s=t.input.charCodeAt(t.position));){if(34===s)return mt(t,n,t.position,!0),t.position++,!0;if(92===s){if(mt(t,n,t.position,!0),s=t.input.charCodeAt(++t.position),it(s))vt(t,!1,e);else if(s<256&&ui[s])t.result+=pi[s],t.position++;else if((a=lt(s))>0){for(r=a,o=0;r>0;r--)s=t.input.charCodeAt(++t.position),(a=st(s))>=0?o=(o<<4)+a:ft(t,"expected hexadecimal character");t.result+=pt(o),t.position++}else ft(t,"unknown escape sequence");n=i=t.position}else it(s)?(mt(t,n,i,!0),wt(t,vt(t,!1,e)),n=i=t.position):t.position===t.lineStart&&kt(t)?ft(t,"unexpected end of the document within a double quoted scalar"):(t.position++,i=t.position)}ft(t,"unexpected end of the stream within a double quoted scalar")}function _t(t,e){var n,i,r,o,a,s,l,c,u,p,h,d=!0,f=t.tag,g=t.anchor,m={};if(h=t.input.charCodeAt(t.position),91===h)o=93,l=!1,i=[];else{if(123!==h)return!1;o=125,l=!0,i={}}for(null!==t.anchor&&(t.anchorMap[t.anchor]=i),h=t.input.charCodeAt(++t.position);0!==h;){if(vt(t,!0,e),h=t.input.charCodeAt(t.position),h===o)return t.position++,t.tag=f,t.anchor=g,t.kind=l?"mapping":"sequence",t.result=i,!0;d||ft(t,"missed comma between flow collection entries"),u=c=p=null,a=s=!1,63===h&&(r=t.input.charCodeAt(t.position+1),ot(r)&&(a=s=!0,t.position++,vt(t,!0,e))),n=t.line,Mt(t,e,Xn,!1,!0),u=t.tag,c=t.result,vt(t,!0,e),h=t.input.charCodeAt(t.position),!s&&t.line!==n||58!==h||(a=!0,h=t.input.charCodeAt(++t.position),vt(t,!0,e),Mt(t,e,Xn,!1,!0),p=t.result),l?yt(t,i,m,u,c,p):a?i.push(yt(t,null,m,u,c,p)):i.push(c),vt(t,!0,e),h=t.input.charCodeAt(t.position),44===h?(d=!0,h=t.input.charCodeAt(++t.position)):d=!1}ft(t,"unexpected end of the stream within a flow collection")}function Et(t,e){var n,i,r,o,a=ni,s=!1,l=!1,c=e,u=0,p=!1;if(o=t.input.charCodeAt(t.position),124===o)i=!1;else{if(62!==o)return!1;i=!0}for(t.kind="scalar",t.result="";0!==o;)if(o=t.input.charCodeAt(++t.position),43===o||45===o)ni===a?a=43===o?ri:ii:ft(t,"repeat of a chomping mode identifier");else{if(!((r=ct(o))>=0))break;0===r?ft(t,"bad explicit indentation width of a block scalar; it cannot be less than one"):l?ft(t,"repeat of an indentation width identifier"):(c=e+r-1,l=!0)}if(rt(o)){do o=t.input.charCodeAt(++t.position);while(rt(o));if(35===o)do o=t.input.charCodeAt(++t.position);while(!it(o)&&0!==o)}for(;0!==o;){for(xt(t),t.lineIndent=0,o=t.input.charCodeAt(t.position);(!l||t.lineIndentc&&(c=t.lineIndent),it(o))u++;else{if(t.lineIndente)&&0!==r)ft(t,"bad indentation of a sequence entry");else if(t.lineIndente)&&(Mt(t,e,ei,!0,r)&&(f?h=t.result:d=t.result),f||(yt(t,c,u,p,h,d),p=h=d=null),vt(t,!0,-1),a=t.input.charCodeAt(t.position)),t.lineIndent>e&&0!==a)ft(t,"bad indentation of a mapping entry");else if(t.lineIndente?d=1:t.lineIndent===e?d=0:t.lineIndente?d=1:t.lineIndent===e?d=0:t.lineIndent tag; it should be "'+u.kind+'", not "'+t.kind+'"'),u.resolve(t.result)?(t.result=u.construct(t.result),null!==t.anchor&&(t.anchorMap[t.anchor]=t.result)):ft(t,"cannot resolve a node with !<"+t.tag+"> explicit tag")):ft(t,"unknown tag !<"+t.tag+">");return null!==t.listener&&t.listener("close",t),null!==t.tag||null!==t.anchor||g}function Ft(t){var e,n,i,r,o=t.position,a=!1;for(t.version=null,t.checkLineBreaks=t.legacy,t.tagMap={},t.anchorMap={};0!==(r=t.input.charCodeAt(t.position))&&(vt(t,!0,-1),r=t.input.charCodeAt(t.position),!(t.lineIndent>0||37!==r));){for(a=!0,r=t.input.charCodeAt(++t.position),e=t.position;0!==r&&!ot(r);)r=t.input.charCodeAt(++t.position);for(n=t.input.slice(e,t.position),i=[],n.length<1&&ft(t,"directive name must not be less than one character in length");0!==r;){for(;rt(r);)r=t.input.charCodeAt(++t.position);if(35===r){do r=t.input.charCodeAt(++t.position);while(0!==r&&!it(r));break}if(it(r))break;for(e=t.position;0!==r&&!ot(r);)r=t.input.charCodeAt(++t.position);i.push(t.input.slice(e,t.position))}0!==r&&xt(t),Zn.call(di,n)?di[n](t,n,i):gt(t,'unknown document directive "'+n+'"')}return vt(t,!0,-1),0===t.lineIndent&&45===t.input.charCodeAt(t.position)&&45===t.input.charCodeAt(t.position+1)&&45===t.input.charCodeAt(t.position+2)?(t.position+=3,vt(t,!0,-1)):a&&ft(t,"directives end mark is expected"),Mt(t,t.lineIndent-1,ei,!1,!0),vt(t,!0,-1),t.checkLineBreaks&&ai.test(t.input.slice(o,t.position))&>(t,"non-ASCII line breaks are interpreted as content"),t.documents.push(t.result),t.position===t.lineStart&&kt(t)?void(46===t.input.charCodeAt(t.position)&&(t.position+=3,vt(t,!0,-1))):void(t.positioni&&" "!==t[u+1],u=o);else if(!Kt(a))return Qi;p=p&&Gt(a)}l=l||c&&o-u-1>i&&" "!==t[u+1]}return s||l?" "===t[0]&&n>9?Qi:l?Xi:Zi:p&&!r(t)?Vi:Ji}function Zt(t,e,n,i){t.dump=function(){function r(e){return Ht(t,e)}if(0===e.length)return"''";if(!t.noCompatMode&&Gi.indexOf(e)!==-1)return"'"+e+"'";var o=t.indent*Math.max(1,n),a=t.lineWidth===-1?-1:Math.max(Math.min(t.lineWidth,40),t.lineWidth-o),s=i||t.flowLevel>-1&&n>=t.flowLevel;switch(Jt(e,s,t.indent,a,r)){case Vi:return e;case Ji:return"'"+e.replace(/'/g,"''")+"'";case Zi:return"|"+Xt(e,t.indent)+Qt(Ut(e,o));case Xi:return">"+Xt(e,t.indent)+Qt(Ut(te(e,a),o));case Qi:return'"'+ne(e,a)+'"';default:throw new vi("impossible error: invalid scalar style")}}()}function Xt(t,e){var n=" "===t[0]?String(e):"",i="\n"===t[t.length-1],r=i&&("\n"===t[t.length-2]||"\n"===t),o=r?"+":i?"":"-";return n+o+"\n"}function Qt(t){return"\n"===t[t.length-1]?t.slice(0,-1):t}function te(t,e){for(var n,i,r=/(\n+)([^\n]*)/g,o=function(){var n=t.indexOf("\n");return n=n!==-1?n:t.length,r.lastIndex=n,ee(t.slice(0,n),e)}(),a="\n"===t[0]||" "===t[0];i=r.exec(t);){var s=i[1],l=i[2];n=" "===l[0],o+=s+(a||n||""===l?"":"\n")+ee(l,e),a=n}return o}function ee(t,e){if(""===t||" "===t[0])return t;for(var n,i,r=/ [^ ]/g,o=0,a=0,s=0,l="";n=r.exec(t);)s=n.index,s-o>e&&(i=a>o?a:s,l+="\n"+t.slice(o,i),o=i+1),a=s;return l+="\n",l+=t.length-o>e&&a>o?t.slice(o,a)+"\n"+t.slice(a+1):t.slice(o),l.slice(1)}function ne(t){for(var e,n,i="",r=0;r1024&&(s+="? "),s+=t.dump+": ",le(t,e,a,!1,!1)&&(s+=t.dump,l+=s));t.tag=c,t.dump="{"+l+"}"}function ae(t,e,n,i){var r,o,a,s,l,c,u="",p=t.tag,h=Object.keys(n);if(t.sortKeys===!0)h.sort();else if("function"==typeof t.sortKeys)h.sort(t.sortKeys);else if(t.sortKeys)throw new vi("sortKeys must be a boolean or a function");for(r=0,o=h.length;r1024,l&&(c+=t.dump&&_i===t.dump.charCodeAt(0)?"?":"? "),c+=t.dump,l&&(c+=Bt(t,e)),le(t,e+1,s,!0,l)&&(c+=t.dump&&_i===t.dump.charCodeAt(0)?":":": ",c+=t.dump,u+=c));t.tag=p,t.dump=u||"{}"}function se(t,e,n){var i,r,o,a,s,l;for(r=n?t.explicitTypes:t.implicitTypes,o=0,a=r.length;o tag resolver accepts not "'+l+'" style');i=s.represent[l](e,l)}t.dump=i}return!0}return!1}function le(t,e,n,i,r,o){t.tag=null,t.dump=n,se(t,n,!1)||se(t,n,!0);var a=Ai.call(t.dump);i&&(i=t.flowLevel<0||t.flowLevel>e);var s,l,c="[object Object]"===a||"[object Array]"===a;if(c&&(s=t.duplicates.indexOf(n),l=s!==-1),(null!==t.tag&&"?"!==t.tag||l||2!==t.indent&&e>0)&&(r=!1),l&&t.usedDuplicates[s])t.dump="*ref_"+s;else{if(c&&l&&!t.usedDuplicates[s]&&(t.usedDuplicates[s]=!0),"[object Object]"===a)i&&0!==Object.keys(t.dump).length?(ae(t,e,t.dump,r),l&&(t.dump="&ref_"+s+t.dump)):(oe(t,e,t.dump),l&&(t.dump="&ref_"+s+" "+t.dump));else if("[object Array]"===a)i&&0!==t.dump.length?(re(t,e,t.dump,r),l&&(t.dump="&ref_"+s+t.dump)):(ie(t,e,t.dump),l&&(t.dump="&ref_"+s+" "+t.dump));else{if("[object String]"!==a){if(t.skipInvalid)return!1;throw new vi("unacceptable kind of an object to dump "+a)}"?"!==t.tag&&Zt(t,t.dump,e,o)}null!==t.tag&&"?"!==t.tag&&(t.dump="!<"+t.tag+"> "+t.dump)}return!0}function ce(t,e){var n,i,r=[],o=[];for(ue(t,r,o),n=0,i=o.length;n code[class*="language-"],\npre[class*="language-"] {\n}\n\n/* Inline code */\n:not(pre) > code[class*="language-"] {\n\twhite-space: normal;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n\tcolor: slategray;\n}\n\n.token.punctuation {\n\tcolor: #999;\n}\n\n.namespace {\n\topacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n\tcolor: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n\tcolor: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n\tcolor: #a67f59;\n\tbackground: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n\tcolor: #07a;\n}\n\n.token.function {\n\tcolor: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n\tcolor: #e90;\n}\n\n.token.important,\n.token.bold {\n\tfont-weight: bold;\n}\n.token.italic {\n\tfont-style: italic;\n}\n\n.token.entity {\n\tcursor: help;\n}\n',we=function(t){ +var e=t.createElement("style");e.textContent=ye+xe+ve+ke,t.querySelector("head").appendChild(e)},Ae=t,Ce=e,Se=n,_e=r,Ee=o,je=i,Oe={isNothing:Ae,isObject:Ce,toArray:Se,repeat:_e,isNegativeZero:Ee,extend:je};a.prototype=Object.create(Error.prototype),a.prototype.constructor=a,a.prototype.toString=function(t){var e=this.name+": ";return e+=this.reason||"(unknown reason)",!t&&this.mark&&(e+=" "+this.mark.toString()),e};var Le=a,Ie=Oe;s.prototype.getSnippet=function(t,e){var n,i,r,o,a,s=this;if(!this.buffer)return null;for(t=t||4,e=e||75,n="",i=this.position;i>0&&"\0\r\n…\u2028\u2029".indexOf(this.buffer.charAt(i-1))===-1;)if(i-=1,s.position-i>e/2-1){n=" ... ",i+=5;break}for(r="",o=this.position;oe/2-1){r=" ... ",o-=5;break}return a=this.buffer.slice(i,o),Ie.repeat(" ",t)+n+a+r+"\n"+Ie.repeat(" ",t+this.position-i+n.length)+"^"},s.prototype.toString=function(t){var e,n="";return this.name&&(n+='in "'+this.name+'" '),n+="at line "+(this.line+1)+", column "+(this.column+1),t||(e=this.getSnippet(),e&&(n+=":\n"+e)),n};var Te=s,Me=Le,Fe=["kind","resolve","construct","instanceOf","predicate","represent","defaultStyle","styleAliases"],Ne=["scalar","sequence","mapping"],qe=c,ze=Oe,$e=Le,De=qe;h.DEFAULT=null,h.create=function(){var t,e;switch(arguments.length){case 1:t=h.DEFAULT,e=arguments[0];break;case 2:t=arguments[0],e=arguments[1];break;default:throw new $e("Wrong number of arguments for Schema.create function")}if(t=ze.toArray(t),e=ze.toArray(e),!t.every(function(t){return t instanceof h}))throw new $e("Specified list of super schemas (or a single Schema object) contains a non-Schema object.");if(!e.every(function(t){return t instanceof De}))throw new $e("Specified list of YAML types (or a single Type object) contains a non-Type object.");return new h({include:t,explicit:e})};var Pe,We=h,Re=qe,Ue=new Re("tag:yaml.org,2002:str",{kind:"scalar",construct:function(t){return null!==t?t:""}}),Be=qe,He=new Be("tag:yaml.org,2002:seq",{kind:"sequence",construct:function(t){return null!==t?t:[]}}),Ye=qe,Ke=new Ye("tag:yaml.org,2002:map",{kind:"mapping",construct:function(t){return null!==t?t:{}}}),Ge=We,Ve=new Ge({explicit:[Ue,He,Ke]}),Je=qe,Ze=new Je("tag:yaml.org,2002:null",{kind:"scalar",resolve:d,construct:f,predicate:g,represent:{canonical:function(){return"~"},lowercase:function(){return"null"},uppercase:function(){return"NULL"},camelcase:function(){return"Null"}},defaultStyle:"lowercase"}),Xe=qe,Qe=new Xe("tag:yaml.org,2002:bool",{kind:"scalar",resolve:m,construct:b,predicate:y,represent:{lowercase:function(t){return t?"true":"false"},uppercase:function(t){return t?"TRUE":"FALSE"},camelcase:function(t){return t?"True":"False"}},defaultStyle:"lowercase"}),tn=Oe,en=qe,nn=new en("tag:yaml.org,2002:int",{kind:"scalar",resolve:w,construct:A,predicate:C,represent:{binary:function(t){return"0b"+t.toString(2)},octal:function(t){return"0"+t.toString(8)},decimal:function(t){return t.toString(10)},hexadecimal:function(t){return"0x"+t.toString(16).toUpperCase()}},defaultStyle:"decimal",styleAliases:{binary:[2,"bin"],octal:[8,"oct"],decimal:[10,"dec"],hexadecimal:[16,"hex"]}}),rn=Oe,on=qe,an=new RegExp("^(?:[-+]?(?:[0-9][0-9_]*)\\.[0-9_]*(?:[eE][-+][0-9]+)?|\\.[0-9_]+(?:[eE][-+][0-9]+)?|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\.[0-9_]*|[-+]?\\.(?:inf|Inf|INF)|\\.(?:nan|NaN|NAN))$"),sn=/^[-+]?[0-9]+e/,ln=new on("tag:yaml.org,2002:float",{kind:"scalar",resolve:S,construct:_,predicate:j,represent:E,defaultStyle:"lowercase"}),cn=We,un=new cn({include:[Ve],implicit:[Ze,Qe,nn,ln]}),pn=We,hn=new pn({include:[un]}),dn=qe,fn=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9])-([0-9][0-9])$"),gn=new RegExp("^([0-9][0-9][0-9][0-9])-([0-9][0-9]?)-([0-9][0-9]?)(?:[Tt]|[ \\t]+)([0-9][0-9]?):([0-9][0-9]):([0-9][0-9])(?:\\.([0-9]*))?(?:[ \\t]*(Z|([-+])([0-9][0-9]?)(?::([0-9][0-9]))?))?$"),mn=new dn("tag:yaml.org,2002:timestamp",{kind:"scalar",resolve:O,construct:L,instanceOf:Date,represent:I}),bn=qe,yn=new bn("tag:yaml.org,2002:merge",{kind:"scalar",resolve:T}),xn="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};try{var vn=M;Pe=vn("buffer").Buffer}catch(t){}var kn,wn=qe,An="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\n\r",Cn=new wn("tag:yaml.org,2002:binary",{kind:"scalar",resolve:N,construct:q,predicate:$,represent:z}),Sn=qe,_n=Object.prototype.hasOwnProperty,En=Object.prototype.toString,jn=new Sn("tag:yaml.org,2002:omap",{kind:"sequence",resolve:D,construct:P}),On=qe,Ln=Object.prototype.toString,In=new On("tag:yaml.org,2002:pairs",{kind:"sequence",resolve:W,construct:R}),Tn=qe,Mn=Object.prototype.hasOwnProperty,Fn=new Tn("tag:yaml.org,2002:set",{kind:"mapping",resolve:U,construct:B}),Nn=We,qn=new Nn({include:[hn],implicit:[mn,yn],explicit:[Cn,jn,In,Fn]}),zn=qe,$n=new zn("tag:yaml.org,2002:js/undefined",{kind:"scalar",resolve:H,construct:Y,predicate:G,represent:K}),Dn=qe,Pn=new Dn("tag:yaml.org,2002:js/regexp",{kind:"scalar",resolve:V,construct:J,predicate:X,represent:Z});try{var Wn=M;kn=Wn("esprima")}catch(t){"undefined"!=typeof window&&(kn=window.esprima)}for(var Rn=qe,Un=new Rn("tag:yaml.org,2002:js/function",{kind:"scalar",resolve:Q,construct:tt,predicate:nt,represent:et}),Bn=We,Hn=Bn.DEFAULT=new Bn({include:[qn],explicit:[$n,Pn,Un]}),Yn=Oe,Kn=Le,Gn=Te,Vn=qn,Jn=Hn,Zn=Object.prototype.hasOwnProperty,Xn=1,Qn=2,ti=3,ei=4,ni=1,ii=2,ri=3,oi=/[\x00-\x08\x0B\x0C\x0E-\x1F\x7F-\x84\x86-\x9F\uFFFE\uFFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/,ai=/[\x85\u2028\u2029]/,si=/[,\[\]\{\}]/,li=/^(?:!|!!|![a-z\-]+!)$/i,ci=/^(?:!|[^,\[\]\{\}])(?:%[0-9a-f]{2}|[0-9a-z\-#;\/\?:@&=\+\$,_\.!~\*'\(\)\[\]])*$/i,ui=new Array(256),pi=new Array(256),hi=0;hi<256;hi++)ui[hi]=ut(hi)?1:0,pi[hi]=ut(hi);var di={YAML:function(t,e,n){var i,r,o;null!==t.version&&ft(t,"duplication of %YAML directive"),1!==n.length&&ft(t,"YAML directive accepts exactly one argument"),i=/^([0-9]+)\.([0-9]+)$/.exec(n[0]),null===i&&ft(t,"ill-formed argument of the YAML directive"),r=parseInt(i[1],10),o=parseInt(i[2],10),1!==r&&ft(t,"unacceptable YAML version of the document"),t.version=n[0],t.checkLineBreaks=o<2,1!==o&&2!==o&>(t,"unsupported YAML version of the document")},TAG:function(t,e,n){var i,r;2!==n.length&&ft(t,"TAG directive accepts exactly two arguments"),i=n[0],r=n[1],li.test(i)||ft(t,"ill-formed tag handle (first argument) of the TAG directive"),Zn.call(t.tagMap,i)&&ft(t,'there is a previously declared suffix for "'+i+'" tag handle'),ci.test(r)||ft(t,"ill-formed tag prefix (second argument) of the TAG directive"),t.tagMap[i]=r}},fi=qt,gi=zt,mi=$t,bi=Dt,yi={loadAll:fi,load:gi,safeLoadAll:mi,safeLoad:bi},xi=Oe,vi=Le,ki=Hn,wi=qn,Ai=Object.prototype.toString,Ci=Object.prototype.hasOwnProperty,Si=9,_i=10,Ei=32,ji=33,Oi=34,Li=35,Ii=37,Ti=38,Mi=39,Fi=42,Ni=44,qi=45,zi=58,$i=62,Di=63,Pi=64,Wi=91,Ri=93,Ui=96,Bi=123,Hi=124,Yi=125,Ki={};Ki[0]="\\0",Ki[7]="\\a",Ki[8]="\\b",Ki[9]="\\t",Ki[10]="\\n",Ki[11]="\\v",Ki[12]="\\f",Ki[13]="\\r",Ki[27]="\\e",Ki[34]='\\"',Ki[92]="\\\\",Ki[133]="\\N",Ki[160]="\\_",Ki[8232]="\\L",Ki[8233]="\\P";var Gi=["y","Y","yes","Yes","YES","on","On","ON","n","N","no","No","NO","off","Off","OFF"],Vi=1,Ji=2,Zi=3,Xi=4,Qi=5,tr=pe,er=he,nr={dump:tr,safeDump:er},ir=yi,rr=nr,or=qe,ar=We,sr=Ve,lr=un,cr=hn,ur=qn,pr=Hn,hr=ir.load,dr=ir.loadAll,fr=ir.safeLoad,gr=ir.safeLoadAll,mr=rr.dump,br=rr.safeDump,yr=Le,xr=Ve,vr=qn,kr=Hn,wr=de("scan"),Ar=de("parse"),Cr=de("compose"),Sr=de("addConstructor"),_r={Type:or,Schema:ar,FAILSAFE_SCHEMA:sr,JSON_SCHEMA:lr,CORE_SCHEMA:cr,DEFAULT_SAFE_SCHEMA:ur,DEFAULT_FULL_SCHEMA:pr,load:hr,loadAll:dr,safeLoad:fr,safeLoadAll:gr,dump:mr,safeDump:br,YAMLException:yr,MINIMAL_SCHEMA:xr,SAFE_SCHEMA:vr,DEFAULT_SCHEMA:kr,scan:wr,parse:Ar,compose:Cr,addConstructor:Sr},Er=_r,jr=Er,Or=function(t,e){var n=t.querySelector('script[type="text/front-matter"]');if(n){var i=n.textContent,r=jr.safeLoad(i);e.title=r.title,e.description=r.description,e.published=new Date(r.published),e.updated=new Date(r.published||r.updated),e.authors=r.authors.map(function(t,e){var n={},i=Object.keys(t)[0],o=i.split(" ");if(n.firstName=o.slice(0,o.length-1).join(" "),n.lastName=o[o.length-1],n.personalURL=t[i],r.affiliations[e]){var a=Object.keys(r.affiliations[e])[0];n.affiliation=a,n.affiliationURL=r.affiliations[e][a]}return n})}},Lr=F(function(t,e){!function(t){function e(){this.months=["jan","feb","mar","apr","may","jun","jul","aug","sep","oct","nov","dec"],this.notKey=[",","{","}"," ","="],this.pos=0,this.input="",this.entries=new Array,this.currentEntry="",this.setInput=function(t){this.input=t},this.getEntries=function(){return this.entries},this.isWhitespace=function(t){return" "==t||"\r"==t||"\t"==t||"\n"==t},this.match=function(t,e){if(void 0!=e&&null!=e||(e=!0),this.skipWhitespace(e),this.input.substring(this.pos,this.pos+t.length)!=t)throw"Token mismatch, expected "+t+", found "+this.input.substring(this.pos);this.pos+=t.length,this.skipWhitespace(e)},this.tryMatch=function(t,e){return void 0!=e&&null!=e||(e=!0),this.skipWhitespace(e),this.input.substring(this.pos,this.pos+t.length)==t},this.matchAt=function(){for(var t=this;this.input.length>this.pos&&"@"!=this.input[this.pos];)t.pos++;return"@"==this.input[this.pos]},this.skipWhitespace=function(t){for(var e=this;this.isWhitespace(this.input[this.pos]);)e.pos++;if("%"==this.input[this.pos]&&1==t){for(;"\n"!=this.input[this.pos];)e.pos++;this.skipWhitespace(t)}},this.value_braces=function(){var t=this,e=0;this.match("{",!1);for(var n=this.pos,i=!1;;){if(!i)if("}"==t.input[t.pos]){if(!(e>0)){var r=t.pos;return t.match("}",!1),t.input.substring(n,r)}e--}else if("{"==t.input[t.pos])e++;else if(t.pos>=t.input.length-1)throw"Unterminated value";i="\\"==t.input[t.pos]&&0==i,t.pos++}},this.value_comment=function(){for(var t=this,e="",n=0;!this.tryMatch("}",!1)||0!=n;){if(e+=t.input[t.pos],"{"==t.input[t.pos]&&n++,"}"==t.input[t.pos]&&n--,t.pos>=t.input.length-1)throw"Unterminated value:"+t.input.substring(start);t.pos++}return e},this.value_quotes=function(){var t=this;this.match('"',!1);for(var e=this.pos,n=!1;;){if(!n){if('"'==t.input[t.pos]){var i=t.pos;return t.match('"',!1),t.input.substring(e,i)}if(t.pos>=t.input.length-1)throw"Unterminated value:"+t.input.substring(e)}n="\\"==t.input[t.pos]&&0==n,t.pos++}},this.single_value=function(){var t=this.pos;if(this.tryMatch("{"))return this.value_braces();if(this.tryMatch('"'))return this.value_quotes();var e=this.key();if(e.match("^[0-9]+$"))return e;if(this.months.indexOf(e.toLowerCase())>=0)return e.toLowerCase();throw"Value expected:"+this.input.substring(t)+" for key: "+e},this.value=function(){var t=this,e=[];for(e.push(this.single_value());this.tryMatch("#");)t.match("#"),e.push(t.single_value());return e.join("")},this.key=function(){for(var t=this,e=this.pos;;){if(t.pos>=t.input.length)throw"Runaway key";if(t.notKey.indexOf(t.input[t.pos])>=0)return t.input.substring(e,t.pos);t.pos++}},this.key_equals_value=function(){var t=this.key();if(this.tryMatch("=")){this.match("=");var e=this.value();return[t,e]}throw"... = value expected, equals sign missing:"+this.input.substring(this.pos)},this.key_value_list=function(){var t=this,e=this.key_equals_value();for(this.currentEntry.entryTags={},this.currentEntry.entryTags[e[0]]=e[1];this.tryMatch(",")&&(t.match(","),!t.tryMatch("}"));)e=t.key_equals_value(),t.currentEntry.entryTags[e[0]]=e[1]},this.entry_body=function(t){this.currentEntry={},this.currentEntry.citationKey=this.key(),this.currentEntry.entryType=t.substring(1),this.match(","),this.key_value_list(),this.entries.push(this.currentEntry)},this.directive=function(){return this.match("@"),"@"+this.key()},this.preamble=function(){this.currentEntry={},this.currentEntry.entryType="PREAMBLE",this.currentEntry.entry=this.value_comment(),this.entries.push(this.currentEntry)},this.comment=function(){this.currentEntry={},this.currentEntry.entryType="COMMENT",this.currentEntry.entry=this.value_comment(),this.entries.push(this.currentEntry)},this.entry=function(t){this.entry_body(t)},this.bibtex=function(){for(var t=this;this.matchAt();){var e=t.directive();t.match("{"),"@STRING"==e?t.string():"@PREAMBLE"==e?t.preamble():"@COMMENT"==e?t.comment():t.entry(e),t.match("}")}}}t.toJSON=function(t){var n=new e;return n.setInput(t),n.bibtex(),n.entries},t.toBibtex=function(t){var e="";for(var n in t){if(e+="@"+t[n].entryType,e+="{",t[n].citationKey&&(e+=t[n].citationKey+", "),t[n].entry&&(e+=t[n].entry),t[n].entryTags){var i="";for(var r in t[n].entryTags)0!=i.length&&(i+=", "),i+=r+"= {"+t[n].entryTags[r]+"}";e+=i}e+="}\n\n"}return e}}(e)}),Ir=function(t,e){var n=t.querySelector('script[type="text/bibliography"]');if(n){var i=n.textContent,r={};Lr.toJSON(i).forEach(function(t){r[t.citationKey]=t.entryTags,r[t.citationKey].type=t.entryType});var o={},a=[].slice.apply(t.querySelectorAll("dt-cite"));a.forEach(function(t){var e=t.getAttribute("key").split(",");e.forEach(function(t){r[t]?o[t]=r[t]:console.warn("No bibliography entry found for: "+t)})}),e.citations=o}},Tr=function(t,e){e.authors=e.authors||[],e.published&&(e.volume=e.published.getFullYear()-2015,e.issue=e.published.getMonth()+1)},Mr=function(t,e){function n(t,e){e&&r('')}var i=t.querySelector("head"),r=function(t){return fe(i,t)};r('\n \n \n \n \n '+e.title+"\n "),r('\n \n \n \n '),e.authors.forEach(function(t){fe(i,'\n ')}),r('\n \n \n \n \n \n \n \n \n '),r('\n \n \n \n \n \n \n \n \n '),r("\n \n ");var o=e.journal||{},a=function(t){return t<10?"0"+t:t},s=e.published.getFullYear(),l=a(e.published.getMonth()+1),c=a(e.published.getDate());if(n("citation_title",e.title),n("citation_publication_date",e.published?s+"/"+l+"/"+c:void 0),n("citation_fulltext_html_url",e.url),n("citation_volume",e.volume),n("citation_issue",e.issue),n("citation_firstpage",e.doiSuffix?"e"+e.doiSuffix:void 0),n("citation_doi",e.doi),n("citation_journal_title",o.name),n("citation_journal_abbrev",o.nameAbbrev),n("citation_issn",o.issn),n("citation_publisher",o.publisher),(e.authors||[]).forEach(function(t){n("citation_author",t.lastName+", "+t.firstName),n("citation_author_institution",t.affiliation)}),e.citations){var u=Object.keys(e.citations);u.forEach(function(t){return n("citation_reference",ge(e.citations[t]))})}},Fr='\n \n\n',Nr='\n\n\n\n',qr=function(t,e){t.querySelector("dt-header").innerHTML=Nr},zr='\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please submit a pull request on github.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don\'t fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n',$r=function(t,e){var n=t.querySelector("dt-appendix");n&&(n.innerHTML=zr)},Dr='\n\n\n
    \n is dedicated to clear explanations of machine learning\n
    \n",Pr=function(t,e){var n=t.querySelector("dt-footer");n&&(n.innerHTML=Dr)},Wr=function(t,e){function n(t){if(console.log(t,e.citations),!(t in e.citations))return"?";var n=e.citations[t],i=n.author.split(" and ");i=i.map(function(t){return t.split(",")[0].trim()});var r=n.year;return 1==i.length?i[0]+", "+r:2==i.length?i[0]+" & "+i[1]+", "+r:i.length>2?i[0]+", et al., "+r:void 0}function i(t){if(t){var e=t.author.split(" and "),n="",i=e.map(function(t){var e=t.split(",")[0].trim(),n=t.split(",")[1];if(void 0!=n){var i=n.trim().split(" ").map(function(t){return t.trim()[0]});return e+", "+i.join(".")+"."}return e});if(e.length>1?(n+=i.slice(0,e.length-1).join(", "),n+=" and "+i[e.length-1]):n+=i[0],n+=", "+t.year+". ",n+=t.title+". ",n+=t.journal||t.booktitle||"","volume"in t){var r=t.issue||t.number;r=void 0!=r?"("+r+")":"",n+=", Vol "+t.volume+r}return"pages"in t&&(n+=", pp. "+t.pages),n+=". "}return"?"}var r=[];e.citations&&(r=Object.keys(e.citations).map(function(t){return e.citations[t]}),r.sort(function(t,e){return t.author.localeCompare(e.author)}));var o=[].slice.apply(t.querySelectorAll("dt-cite"));console.log(o),o.forEach(function(t){var e=t.getAttribute("key").split(",");console.log(e);var i=e.map(n).join(", ");t.innerHTML=i});var a=t.querySelector("dt-bibliography");if(a){var s=t.createElement("ol");r.forEach(function(e){var n=t.createElement("li");n.textContent=i(e),s.appendChild(n)}),a.appendChild(s)}},Rr=F(function(t,e){(function(){function e(t){this.tokens=[],this.tokens.links={},this.options=t||u.defaults,this.rules=p.normal,this.options.gfm&&(this.options.tables?this.rules=p.tables:this.rules=p.gfm)}function n(t,e){if(this.options=e||u.defaults,this.links=t,this.rules=h.normal,this.renderer=this.options.renderer||new i,this.renderer.options=this.options,!this.links)throw new Error("Tokens array requires a `links` property.");this.options.gfm?this.options.breaks?this.rules=h.breaks:this.rules=h.gfm:this.options.pedantic&&(this.rules=h.pedantic)}function i(t){this.options=t||{}}function r(t){this.tokens=[],this.token=null,this.options=t||u.defaults,this.options.renderer=this.options.renderer||new i,this.renderer=this.options.renderer,this.renderer.options=this.options}function o(t,e){return t.replace(e?/&/g:/&(?!#?\w+;)/g,"&").replace(//g,">").replace(/"/g,""").replace(/'/g,"'")}function a(t){return t.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/g,function(t,e){return e=e.toLowerCase(),"colon"===e?":":"#"===e.charAt(0)?"x"===e.charAt(1)?String.fromCharCode(parseInt(e.substring(2),16)):String.fromCharCode(+e.substring(1)):""})}function s(t,e){return t=t.source,e=e||"",function n(i,r){return i?(r=r.source||r,r=r.replace(/(^|[^\[])\^/g,"$1"),t=t.replace(i,r),n):new RegExp(t,e)}}function l(){}function c(t){for(var e,n,i=arguments,r=1;rAn error occured:

    "+o(t.message+"",!0)+"
    ";throw t}}var p={newline:/^\n+/,code:/^( {4}[^\n]+\n*)+/,fences:l,hr:/^( *[-*_]){3,} *(?:\n+|$)/,heading:/^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,nptable:l,lheading:/^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,blockquote:/^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,list:/^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,html:/^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,def:/^ *\[([^\]]+)\]: *]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,table:l,paragraph:/^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,text:/^[^\n]+/};p.bullet=/(?:[*+-]|\d+\.)/,p.item=/^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/,p.item=s(p.item,"gm")(/bull/g,p.bullet)(),p.list=s(p.list)(/bull/g,p.bullet)("hr","\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))")("def","\\n+(?="+p.def.source+")")(),p.blockquote=s(p.blockquote)("def",p.def)(),p._tag="(?!(?:a|em|strong|small|s|cite|q|dfn|abbr|data|time|code|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b",p.html=s(p.html)("comment",//)("closed",/<(tag)[\s\S]+?<\/\1>/)("closing",/])*?>/)(/tag/g,p._tag)(),p.paragraph=s(p.paragraph)("hr",p.hr)("heading",p.heading)("lheading",p.lheading)("blockquote",p.blockquote)("tag","<"+p._tag)("def",p.def)(),p.normal=c({},p),p.gfm=c({},p.normal,{fences:/^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,paragraph:/^/,heading:/^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/}),p.gfm.paragraph=s(p.paragraph)("(?!","(?!"+p.gfm.fences.source.replace("\\1","\\2")+"|"+p.list.source.replace("\\1","\\3")+"|")(),p.tables=c({},p.gfm,{nptable:/^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,table:/^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/}),e.rules=p,e.lex=function(t,n){var i=new e(n);return i.lex(t)},e.prototype.lex=function(t){return t=t.replace(/\r\n|\r/g,"\n").replace(/\t/g," ").replace(/\u00a0/g," ").replace(/\u2424/g,"\n"),this.token(t,!0)},e.prototype.token=function(t,e,n){for(var i,r,o,a,s,l,c,u,h,d=this,t=t.replace(/^ +$/gm,"");t;)if((o=d.rules.newline.exec(t))&&(t=t.substring(o[0].length),o[0].length>1&&d.tokens.push({type:"space"})),o=d.rules.code.exec(t))t=t.substring(o[0].length),o=o[0].replace(/^ {4}/gm,""),d.tokens.push({type:"code",text:d.options.pedantic?o:o.replace(/\n+$/,"")});else if(o=d.rules.fences.exec(t))t=t.substring(o[0].length),d.tokens.push({type:"code",lang:o[2],text:o[3]||""});else if(o=d.rules.heading.exec(t))t=t.substring(o[0].length),d.tokens.push({type:"heading",depth:o[1].length,text:o[2]});else if(e&&(o=d.rules.nptable.exec(t))){for(t=t.substring(o[0].length),l={type:"table",header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3].replace(/\n$/,"").split("\n")},u=0;u ?/gm,""),d.token(o,e,!0),d.tokens.push({type:"blockquote_end"});else if(o=d.rules.list.exec(t)){for(t=t.substring(o[0].length),a=o[2],d.tokens.push({type:"list_start",ordered:a.length>1}),o=o[0].match(d.rules.item),i=!1,h=o.length,u=0;u1&&s.length>1||(t=o.slice(u+1).join("\n")+t,u=h-1)),r=i||/\n\n(?!\s*$)/.test(l),u!==h-1&&(i="\n"===l.charAt(l.length-1),r||(r=i)),d.tokens.push({type:r?"loose_item_start":"list_item_start"}),d.token(l,!1,n),d.tokens.push({type:"list_item_end"});d.tokens.push({type:"list_end"})}else if(o=d.rules.html.exec(t))t=t.substring(o[0].length),d.tokens.push({type:d.options.sanitize?"paragraph":"html",pre:!d.options.sanitizer&&("pre"===o[1]||"script"===o[1]||"style"===o[1]),text:o[0]});else if(!n&&e&&(o=d.rules.def.exec(t)))t=t.substring(o[0].length),d.tokens.links[o[1].toLowerCase()]={href:o[2],title:o[3]};else if(e&&(o=d.rules.table.exec(t))){for(t=t.substring(o[0].length),l={type:"table",header:o[1].replace(/^ *| *\| *$/g,"").split(/ *\| */),align:o[2].replace(/^ *|\| *$/g,"").split(/ *\| */),cells:o[3].replace(/(?: *\| *)?\n$/,"").split("\n")},u=0;u])/,autolink:/^<([^ >]+(@|:\/)[^ >]+)>/,url:l,tag:/^|^<\/?\w+(?:"[^"]*"|'[^']*'|[^'">])*?>/,link:/^!?\[(inside)\]\(href\)/,reflink:/^!?\[(inside)\]\s*\[([^\]]*)\]/,nolink:/^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,strong:/^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,em:/^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,code:/^(`+)\s*([\s\S]*?[^`])\s*\1(?!`)/,br:/^ {2,}\n(?!\s*$)/,del:l,text:/^[\s\S]+?(?=[\\?(?:\s+['"]([\s\S]*?)['"])?\s*/,h.link=s(h.link)("inside",h._inside)("href",h._href)(),h.reflink=s(h.reflink)("inside",h._inside)(),h.normal=c({},h),h.pedantic=c({},h.normal,{strong:/^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,em:/^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/}),h.gfm=c({},h.normal,{escape:s(h.escape)("])","~|])")(),url:/^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,del:/^~~(?=\S)([\s\S]*?\S)~~/,text:s(h.text)("]|","~]|")("|","|https?://|")()}),h.breaks=c({},h.gfm,{br:s(h.br)("{2,}","*")(),text:s(h.gfm.text)("{2,}","*")()}),n.rules=h,n.output=function(t,e,i){var r=new n(e,i);return r.output(t)},n.prototype.output=function(t){for(var e,n,i,r,a=this,s="";t;)if(r=a.rules.escape.exec(t))t=t.substring(r[0].length),s+=r[1];else if(r=a.rules.autolink.exec(t))t=t.substring(r[0].length),"@"===r[2]?(n=":"===r[1].charAt(6)?a.mangle(r[1].substring(7)):a.mangle(r[1]),i=a.mangle("mailto:")+n):(n=o(r[1]),i=n),s+=a.renderer.link(i,null,n);else if(a.inLink||!(r=a.rules.url.exec(t))){if(r=a.rules.tag.exec(t))!a.inLink&&/^/i.test(r[0])&&(a.inLink=!1),t=t.substring(r[0].length),s+=a.options.sanitize?a.options.sanitizer?a.options.sanitizer(r[0]):o(r[0]):r[0];else if(r=a.rules.link.exec(t))t=t.substring(r[0].length),a.inLink=!0,s+=a.outputLink(r,{href:r[2],title:r[3]}),a.inLink=!1;else if((r=a.rules.reflink.exec(t))||(r=a.rules.nolink.exec(t))){if(t=t.substring(r[0].length),e=(r[2]||r[1]).replace(/\s+/g," "),e=a.links[e.toLowerCase()],!e||!e.href){s+=r[0].charAt(0),t=r[0].substring(1)+t;continue}a.inLink=!0,s+=a.outputLink(r,e),a.inLink=!1}else if(r=a.rules.strong.exec(t))t=t.substring(r[0].length),s+=a.renderer.strong(a.output(r[2]||r[1]));else if(r=a.rules.em.exec(t))t=t.substring(r[0].length),s+=a.renderer.em(a.output(r[2]||r[1]));else if(r=a.rules.code.exec(t))t=t.substring(r[0].length),s+=a.renderer.codespan(o(r[2],!0));else if(r=a.rules.br.exec(t))t=t.substring(r[0].length),s+=a.renderer.br();else if(r=a.rules.del.exec(t))t=t.substring(r[0].length),s+=a.renderer.del(a.output(r[1]));else if(r=a.rules.text.exec(t))t=t.substring(r[0].length),s+=a.renderer.text(o(a.smartypants(r[0])));else if(t)throw new Error("Infinite loop on byte: "+t.charCodeAt(0))}else t=t.substring(r[0].length),n=o(r[1]),i=n,s+=a.renderer.link(i,null,n);return s},n.prototype.outputLink=function(t,e){var n=o(e.href),i=e.title?o(e.title):null;return"!"!==t[0].charAt(0)?this.renderer.link(n,i,this.output(t[1])):this.renderer.image(n,i,o(t[1])); +},n.prototype.smartypants=function(t){return this.options.smartypants?t.replace(/---/g,"—").replace(/--/g,"–").replace(/(^|[-\u2014\/(\[{"\s])'/g,"$1‘").replace(/'/g,"’").replace(/(^|[-\u2014\/(\[{\u2018\s])"/g,"$1“").replace(/"/g,"”").replace(/\.{3}/g,"…"):t},n.prototype.mangle=function(t){if(!this.options.mangle)return t;for(var e,n="",i=t.length,r=0;r.5&&(e="x"+e.toString(16)),n+="&#"+e+";";return n},i.prototype.code=function(t,e,n){if(this.options.highlight){var i=this.options.highlight(t,e);null!=i&&i!==t&&(n=!0,t=i)}return e?'
    '+(n?t:o(t,!0))+"\n
    \n":"
    "+(n?t:o(t,!0))+"\n
    "},i.prototype.blockquote=function(t){return"
    \n"+t+"
    \n"},i.prototype.html=function(t){return t},i.prototype.heading=function(t,e,n){return"'+t+"\n"},i.prototype.hr=function(){return this.options.xhtml?"
    \n":"
    \n"},i.prototype.list=function(t,e){var n=e?"ol":"ul";return"<"+n+">\n"+t+"\n"},i.prototype.listitem=function(t){return"
  • "+t+"
  • \n"},i.prototype.paragraph=function(t){return"

    "+t+"

    \n"},i.prototype.table=function(t,e){return"\n\n"+t+"\n\n"+e+"\n
    \n"},i.prototype.tablerow=function(t){return"\n"+t+"\n"},i.prototype.tablecell=function(t,e){var n=e.header?"th":"td",i=e.align?"<"+n+' style="text-align:'+e.align+'">':"<"+n+">";return i+t+"\n"},i.prototype.strong=function(t){return""+t+""},i.prototype.em=function(t){return""+t+""},i.prototype.codespan=function(t){return""+t+""},i.prototype.br=function(){return this.options.xhtml?"
    ":"
    "},i.prototype.del=function(t){return""+t+""},i.prototype.link=function(t,e,n){if(this.options.sanitize){try{var i=decodeURIComponent(a(t)).replace(/[^\w:]/g,"").toLowerCase()}catch(t){return""}if(0===i.indexOf("javascript:")||0===i.indexOf("vbscript:"))return""}var r='
    "},i.prototype.image=function(t,e,n){var i=''+n+'":">"},i.prototype.text=function(t){return t},r.parse=function(t,e,n){var i=new r(e,n);return i.parse(t)},r.prototype.parse=function(t){var e=this;this.inline=new n(t.links,this.options,this.renderer),this.tokens=t.reverse();for(var i="";this.next();)i+=e.tok();return i},r.prototype.next=function(){return this.token=this.tokens.pop()},r.prototype.peek=function(){return this.tokens[this.tokens.length-1]||0},r.prototype.parseText=function(){for(var t=this,e=this.token.text;"text"===this.peek().type;)e+="\n"+t.next().text;return this.inline.output(e)},r.prototype.tok=function(){var t=this;switch(this.token.type){case"space":return"";case"hr":return this.renderer.hr();case"heading":return this.renderer.heading(this.inline.output(this.token.text),this.token.depth,this.token.text);case"code":return this.renderer.code(this.token.text,this.token.lang,this.token.escaped);case"table":var e,n,i,r,o,a="",s="";for(i="",e=0;et.length)break t;if(!(x instanceof r)){u.lastIndex=0;var v=u.exec(x),k=1;if(!v&&d&&b!=o.length-1){if(u.lastIndex=y,v=u.exec(t),!v)break;for(var w=v.index+(h?v[1].length:0),A=v.index+v[0].length,C=b,S=y,_=o.length;C<_&&S=S&&(++b,y=S);if(o[b]instanceof r||o[C-1].greedy)continue;k=C-b,x=t.slice(y,S),v.index-=y}if(v){h&&(f=v[1].length);var w=v.index+f,v=v[0].slice(f),A=w+v.length,E=x.slice(0,w),j=x.slice(A),O=[b,k];E&&O.push(E);var L=new r(s,p?i.tokenize(v,p):v,g,v,d);O.push(L),j&&O.push(j),Array.prototype.splice.apply(o,O)}}}}}return o},hooks:{all:{},add:function(t,e){var n=i.hooks.all;n[t]=n[t]||[],n[t].push(e)},run:function(t,e){var n=i.hooks.all[t];if(n&&n.length)for(var r,o=0;r=n[o++];)r(e)}}},r=i.Token=function(t,e,n,i,r){this.type=t,this.content=e,this.alias=n,this.length=0|(i||"").length,this.greedy=!!r};if(r.stringify=function(t,e,n){if("string"==typeof t)return t;if("Array"===i.util.type(t))return t.map(function(n){return r.stringify(n,e,t)}).join("");var o={type:t.type,content:r.stringify(t.content,e,n),tag:"span",classes:["token",t.type],attributes:{},language:e,parent:n};if("comment"==o.type&&(o.attributes.spellcheck="true"),t.alias){var a="Array"===i.util.type(t.alias)?t.alias:[t.alias];Array.prototype.push.apply(o.classes,a)}i.hooks.run("wrap",o);var s=Object.keys(o.attributes).map(function(t){return t+'="'+(o.attributes[t]||"").replace(/"/g,""")+'"'}).join(" ");return"<"+o.tag+' class="'+o.classes.join(" ")+'"'+(s?" "+s:"")+">"+o.content+""},!e.document)return e.addEventListener?(e.addEventListener("message",function(t){var n=JSON.parse(t.data),r=n.language,o=n.code,a=n.immediateClose;e.postMessage(i.highlight(o,i.languages[r],r)),a&&e.close()},!1),e.Prism):e.Prism;var o=document.currentScript||[].slice.call(document.getElementsByTagName("script")).pop();return o&&(i.filename=o.src,document.addEventListener&&!o.hasAttribute("data-manual")&&("loading"!==document.readyState?window.requestAnimationFrame?window.requestAnimationFrame(i.highlightAll):window.setTimeout(i.highlightAll,16):document.addEventListener("DOMContentLoaded",i.highlightAll))),e.Prism}();t.exports&&(t.exports=n),"undefined"!=typeof xn&&(xn.Prism=n),n.languages.markup={comment://,prolog:/<\?[\w\W]+?\?>/,doctype://i,cdata://i,tag:{pattern:/<\/?(?!\d)[^\s>\/=$<]+(?:\s+[^\s>\/=]+(?:=(?:("|')(?:\\\1|\\?(?!\1)[\w\W])*\1|[^\s'">=]+))?)*\s*\/?>/i,inside:{tag:{pattern:/^<\/?[^\s>\/]+/i,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"attr-value":{pattern:/=(?:('|")[\w\W]*?(\1)|[^\s>]+)/i,inside:{punctuation:/[=>"']/}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:/&#?[\da-z]{1,8};/i},n.hooks.add("wrap",function(t){"entity"===t.type&&(t.attributes.title=t.content.replace(/&/,"&"))}),n.languages.xml=n.languages.markup,n.languages.html=n.languages.markup,n.languages.mathml=n.languages.markup,n.languages.svg=n.languages.markup,n.languages.css={comment:/\/\*[\w\W]*?\*\//,atrule:{pattern:/@[\w-]+?.*?(;|(?=\s*\{))/i,inside:{rule:/@[\w-]+/}},url:/url\((?:(["'])(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1|.*?)\)/i,selector:/[^\{\}\s][^\{\};]*?(?=\s*\{)/,string:{pattern:/("|')(\\(?:\r\n|[\w\W])|(?!\1)[^\\\r\n])*\1/,greedy:!0},property:/(\b|\B)[\w-]+(?=\s*:)/i,important:/\B!important\b/i,function:/[-a-z0-9]+(?=\()/i,punctuation:/[(){};:]/},n.languages.css.atrule.inside.rest=n.util.clone(n.languages.css),n.languages.markup&&(n.languages.insertBefore("markup","tag",{style:{pattern:/()[\w\W]*?(?=<\/style>)/i,lookbehind:!0,inside:n.languages.css,alias:"language-css"}}),n.languages.insertBefore("inside","attr-value",{"style-attr":{pattern:/\s*style=("|').*?\1/i,inside:{"attr-name":{pattern:/^\s*style/i,inside:n.languages.markup.tag.inside},punctuation:/^\s*=\s*['"]|['"]\s*$/,"attr-value":{pattern:/.+/i,inside:n.languages.css}},alias:"language-css"}},n.languages.markup.tag)),n.languages.clike={comment:[{pattern:/(^|[^\\])\/\*[\w\W]*?\*\//,lookbehind:!0},{pattern:/(^|[^\\:])\/\/.*/,lookbehind:!0}],string:{pattern:/(["'])(\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"class-name":{pattern:/((?:\b(?:class|interface|extends|implements|trait|instanceof|new)\s+)|(?:catch\s+\())[a-z0-9_\.\\]+/i,lookbehind:!0,inside:{punctuation:/(\.|\\)/}},keyword:/\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\b/,boolean:/\b(true|false)\b/,function:/[a-z0-9_]+(?=\()/i,number:/\b-?(?:0x[\da-f]+|\d*\.?\d+(?:e[+-]?\d+)?)\b/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*|\/|~|\^|%/,punctuation:/[{}[\];(),.:]/},n.languages.javascript=n.languages.extend("clike",{keyword:/\b(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|var|void|while|with|yield)\b/,number:/\b-?(0x[\dA-Fa-f]+|0b[01]+|0o[0-7]+|\d*\.?\d+([Ee][+-]?\d+)?|NaN|Infinity)\b/,function:/[_$a-zA-Z\xA0-\uFFFF][_$a-zA-Z0-9\xA0-\uFFFF]*(?=\()/i,operator:/--?|\+\+?|!=?=?|<=?|>=?|==?=?|&&?|\|\|?|\?|\*\*?|\/|~|\^|%|\.{3}/}),n.languages.insertBefore("javascript","keyword",{regex:{pattern:/(^|[^\/])\/(?!\/)(\[.+?]|\\.|[^\/\\\r\n])+\/[gimyu]{0,5}(?=\s*($|[\r\n,.;})]))/,lookbehind:!0,greedy:!0}}),n.languages.insertBefore("javascript","string",{"template-string":{pattern:/`(?:\\\\|\\?[^\\])*?`/,greedy:!0,inside:{interpolation:{pattern:/\$\{[^}]+\}/,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:n.languages.javascript}},string:/[\s\S]+/}}}),n.languages.markup&&n.languages.insertBefore("markup","tag",{script:{pattern:/()[\w\W]*?(?=<\/script>)/i,lookbehind:!0,inside:n.languages.javascript,alias:"language-javascript"}}),n.languages.js=n.languages.javascript,function(){"undefined"!=typeof self&&self.Prism&&self.document&&document.querySelector&&(self.Prism.fileHighlight=function(){var t={js:"javascript",py:"python",rb:"ruby",ps1:"powershell",psm1:"powershell",sh:"bash",bat:"batch",h:"c",tex:"latex"};Array.prototype.forEach&&Array.prototype.slice.call(document.querySelectorAll("pre[data-src]")).forEach(function(e){for(var i,r=e.getAttribute("data-src"),o=e,a=/\blang(?:uage)?-(?!\*)(\w+)\b/i;o&&!a.test(o.className);)o=o.parentNode;if(o&&(i=(e.className.match(a)||[,""])[1]),!i){var s=(r.match(/\.(\w+)$/)||[,""])[1];i=t[s]||s}var l=document.createElement("code");l.className="language-"+i,e.textContent="",l.textContent="Loading…",e.appendChild(l);var c=new XMLHttpRequest;c.open("GET",r,!0),c.onreadystatechange=function(){4==c.readyState&&(c.status<400&&c.responseText?(l.textContent=c.responseText,n.highlightElement(l)):c.status>=400?l.textContent="✖ Error "+c.status+" while fetching file: "+c.statusText:l.textContent="✖ Error: File does not exist or is empty")},c.send(null)})},document.addEventListener("DOMContentLoaded",self.Prism.fileHighlight))}()}),Hr=function(t,e){var n=[].slice.call(t.querySelectorAll("dt-code"));n.forEach(function(e){var n=e.textContent;e.innerHTML="";var i=e.getAttribute("language"),r=t.createElement("code");if(""===e.getAttribute("block")){n=n.replace(/\n/,"");var o=n.match(/\s*/);n=n.replace(new RegExp("\n"+o,"g"),"\n"),n=n.trim();var a=t.createElement("pre");a.appendChild(r),e.appendChild(a)}else e.appendChild(r);var s=n;Br.languages[i]&&(r.setAttribute("class","language-"+i),s=Br.highlight(n,Br.languages[i])),r.innerHTML=s})};return window.document&&me(window.document),me}(); //# sourceMappingURL=template.min.js.map diff --git a/dist/template.min.js.map b/dist/template.min.js.map index a4caaf5..8c17979 100644 --- a/dist/template.min.js.map +++ b/dist/template.min.js.map @@ -1 +1 @@ -{"version":3,"file":null,"sources":["../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../components/meta.js","../index.js","../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../components/header.js","../components/appendix.js","../components/footer.js","../components/citation.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js","../test-data.js"],"sourcesContent":["'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","export default function(dom, data) {\n let head = dom.querySelector(\"head\");\n\n appendHtml(head, `\n \n \n \n \n ${data.title}\n `);\n\n appendHtml(head, `\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n `);\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n `);\n\n appendHtml(head, `\n \n \n \n \n \n \n \n \n \n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n \n \n `)\n });\n\n if (data.citations) {\n let citationKeys = Object.keys(data.citations);\n citationKeys.forEach(key => {\n console.log(key);\n appendHtml(head, `\n \n `);\n });\n }\n}\n\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n var content = `citation_title=${ref.title};`;\n ref.author.split(\" and \").forEach(author => {\n content += `citation_author=${author.trim()};`;\n });\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport meta from \"./components/meta\";\nimport header from \"./components/header\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport testData from \"./test-data\";\n\n\nfunction render(dom, data) {\n html(dom);\n styles(dom);\n document.addEventListener(\"DOMContentLoaded\", function(event) {\n frontMatter(dom, data);\n bibliography(dom, data);\n meta(dom, data);\n header(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n console.log(\"final data:\")\n for (var k in data) {console.log(\" \", k, \": \", data[k])}\n });\n}\n\n\nif(window.document) {\n render(window.document, testData);\n}\n\nexport default render;\n","export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let text = el.textContent;\n let localData = ymlParse.safeLoad(text);\n\n data.title = localData.title;\n data.description = localData.description;\n data.authors = localData.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n let names = name.split(\" \");\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n a.personalURL = author[name];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n a.affiliation = affiliation;\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n return a;\n });\n }\n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let bibliography = {};\n bibtexParse.toJSON(rawBib).forEach(e => {\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n\n let citations = {};\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let citationKeys = el.getAttribute(\"key\").split(\",\");\n citationKeys.forEach(key => {\n if (bibliography[key]) {\n citations[key] = bibliography[key];\n } else {\n console.warn(\"No bibliography entry found for: \" + key);\n }\n });\n });\n data.citations = citations;\n }\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n\n`\n\nexport default function(dom, data) {\n dom.querySelector('dt-header').innerHTML = html;\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please submit a pull request on github.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\n// distill.data().then(function(data) {\n// var as = el.querySelectorAll(\"a.github\");\n// [].forEach.call(as, function(a) {\n// a.setAttribute(\"href\", data.github);\n// });\n// el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.firstPublishedYear + \".\";\n// var bibtex = \"@article{\" + data.slug + \",\\n\";\n// bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n// bibtex += \" title = {\" + data.title + \"},\\n\";\n// bibtex += \" journal = {Distill},\\n\";\n// bibtex += \" year = {\" + data.firstPublishedYear + \"},\\n\";\n// bibtex += \" note = {\" + data.url + \"}\\n\";\n// bibtex += \"}\";\n// el.querySelector(\".citation.long\").textContent = bibtex;\n// })\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) el.innerHTML = html;\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) el.innerHTML = html;\n}\n","export default function(dom, data) {\n let citations = [];\n if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n var keys = el.textContent.split(\",\");\n var cite_string = keys.map(inline_cite).join(\", \");\n el.innerHTML = cite_string;\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(citation => {\n let el = dom.createElement(\"li\");\n el.textContent = bibliography_cite(citation);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite(key){\n if (key in data.citations){\n var ent = data.citations[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n\n function bibliography_cite(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n var cite = \"\";\n let name_strings = names.map(name => {\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n if (firsts != undefined) {\n var initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n return last + \", \" + initials.join(\".\")+\".\";\n }\n return last;\n });\n if (names.length > 1) {\n cite += name_strings.slice(0, names.length-1).join(\", \");\n cite += \" and \" + name_strings[names.length-1];\n } else {\n cite += name_strings[0]\n }\n cite += \", \" + ent.year + \". \"\n cite += ent.title + \". \"\n cite += (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n cite += \". \"\n return cite\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(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|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n","export default {\n \"title\": \"Experiments in Handwriting with a Neural Network\",\n \"description\": \"Several interactive visualizations of a generative model of handwriting. Some are fun, some are serious.\",\n \"url\": \"http://distill.pub/2016/handwriting/\",\n \"github\": \"https://github.com/distillpub/post--handwriting\",\n \"firstPublished\": \"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)\",\n \"lastPublished\": \"Tue Dec 6 2016 21:39:33 GMT-0700 (PDT)\",\n \"authors\": [\n {\n \"firstName\": \"Shan\",\n \"lastName\": \"Carter\",\n \"personalURL\": \"http://shancarter.com\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n },\n {\n \"firstName\": \"David\",\n \"lastName\": \"Ha\",\n \"personalURL\": \"https://github.com/hardmaru\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n },\n {\n \"firstName\": \"Ian\",\n \"lastName\": \"Johnson\",\n \"personalURL\": \"https://github.com/enjalot\",\n \"affiliation\": \"Google Cloud\",\n \"affiliationURL\": \"\"\n },\n {\n \"firstName\": \"Chris\",\n \"lastName\": \"Olah\",\n \"personalURL\": \"http://colah.github.io/\",\n \"affiliation\": \"Google Brain\",\n \"affiliationURL\": \"http://g.co/brain\"\n }\n ],\n journal: {\n \"title\": \"Distill\",\n \"full_title\": \"Distill\",\n \"abbrev_title\": \"Distill\",\n \"url\": \"http://distill.pub\",\n \"doi\": \"00.0000/dstl\",\n \"issn\": \"0000-0000\"\n }\n };\n"],"names":["isNothing","subject","isObject","toArray","sequence","Array","isArray","extend","target","source","index","length","key","sourceKeys","Object","keys","repeat","string","count","cycle","result","isNegativeZero","number","Number","NEGATIVE_INFINITY","YAMLException","reason","mark","Error","call","this","captureStackTrace","constructor","stack","name","message","toString","Mark","buffer","position","line","column","compileStyleAliases","map","forEach","style","alias","String","Type","tag","options","TYPE_CONSTRUCTOR_OPTIONS","indexOf","kind","resolve","construct","data","instanceOf","predicate","represent","defaultStyle","styleAliases","YAML_NODE_KINDS","compileList","schema","exclude","include","includedSchema","currentType","previousType","previousIndex","push","filter","type","compileMap","collectType","scalar","mapping","fallback","arguments","Schema","definition","implicit","explicit","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","resolveYamlNull","max","constructYamlNull","isNull","object","resolveYamlBoolean","constructYamlBoolean","isBoolean","prototype","isHexCode","c","isOctCode","isDecCode","resolveYamlInteger","ch","hasDigits","charCodeAt","test","slice","constructYamlInteger","base","value","sign","digits","replace","parseInt","split","v","unshift","d","isInteger","common","resolveYamlFloat","YAML_FLOAT_PATTERN","constructYamlFloat","toLowerCase","POSITIVE_INFINITY","NaN","parseFloat","representYamlFloat","res","isNaN","SCIENTIFIC_WITHOUT_DOT","isFloat","resolveYamlTimestamp","YAML_DATE_REGEXP","exec","YAML_TIMESTAMP_REGEXP","constructYamlTimestamp","match","year","month","day","hour","minute","second","tz_hour","tz_minute","date","fraction","delta","Date","UTC","setTime","getTime","representYamlTimestamp","toISOString","resolveYamlMerge","resolveYamlBinary","code","idx","bitlen","BASE64_MAP","charAt","constructYamlBinary","tailbits","input","bits","NodeBuffer","representYamlBinary","tail","isBinary","isBuffer","resolveYamlOmap","pair","pairKey","pairHasKey","objectKeys","_toString","_hasOwnProperty","constructYamlOmap","resolveYamlPairs","constructYamlPairs","resolveYamlSet","constructYamlSet","resolveJavascriptUndefined","constructJavascriptUndefined","representJavascriptUndefined","isUndefined","resolveJavascriptRegExp","regexp","modifiers","constructJavascriptRegExp","RegExp","representJavascriptRegExp","global","multiline","ignoreCase","isRegExp","resolveJavascriptFunction","ast","esprima","parse","range","body","expression","err","constructJavascriptFunction","params","param","Function","representJavascriptFunction","isFunction","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","fromCharCode","State","filename","DEFAULT_FULL_SCHEMA","onWarning","legacy","json","listener","implicitTypes","typeMap","lineStart","lineIndent","documents","generateError","state","throwError","throwWarning","captureSegment","start","end","checkJson","_position","_length","_character","_result","PATTERN_NON_PRINTABLE","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","simpleEscapeCheck","simpleEscapeMap","readFlowCollection","terminator","isPair","isExplicitPair","isMapping","readNext","_tag","_anchor","anchor","anchorMap","composeNode","CONTEXT_FLOW_IN","readBlockScalar","folding","chomping","CHOMPING_CLIP","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","CHOMPING_KEEP","CHOMPING_STRIP","readBlockSequence","detected","CONTEXT_BLOCK_IN","readBlockMapping","flowIndent","allowCompact","atExplicitKey","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_OUT","readTagProperty","tagHandle","tagName","isVerbatim","isNamed","PATTERN_TAG_HANDLE","PATTERN_FLOW_INDICATORS","PATTERN_TAG_URI","tagMap","readAnchorProperty","readAlias","hasOwnProperty","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","typeIndex","typeQuantity","blockIndent","indentStatus","atNewLine","hasContent","readDocument","directiveName","directiveArgs","documentStart","hasDirectives","version","checkLineBreaks","directiveHandlers","PATTERN_NON_ASCII_LINE_BREAKS","loadDocuments","loadAll","iterator","load","safeLoadAll","output","DEFAULT_SAFE_SCHEMA","safeLoad","compileStyleMap","encodeHex","character","handle","toUpperCase","indent","Math","skipInvalid","flowLevel","styleMap","sortKeys","lineWidth","noRefs","noCompatMode","explicitTypes","duplicates","usedDuplicates","indentString","spaces","ind","next","generateNextLine","level","testImplicitResolving","str","isWhitespace","CHAR_SPACE","CHAR_TAB","isPrintable","isPlainSafe","CHAR_COMMA","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_LEFT_CURLY_BRACKET","CHAR_RIGHT_CURLY_BRACKET","CHAR_COLON","CHAR_SHARP","isPlainSafeFirst","CHAR_MINUS","CHAR_QUESTION","CHAR_AMPERSAND","CHAR_ASTERISK","CHAR_EXCLAMATION","CHAR_VERTICAL_LINE","CHAR_GREATER_THAN","CHAR_SINGLE_QUOTE","CHAR_DOUBLE_QUOTE","CHAR_PERCENT","CHAR_COMMERCIAL_AT","CHAR_GRAVE_ACCENT","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","i","char","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","STYLE_DOUBLE","CHAR_LINE_FEED","STYLE_FOLDED","STYLE_LITERAL","STYLE_PLAIN","STYLE_SINGLE","writeScalar","iskey","dump","testAmbiguity","DEPRECATED_BOOLEANS_SYNTAX","min","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","width","moreIndented","lineRe","nextLF","lastIndex","foldLine","prevMoreIndented","prefix","breakRe","curr","escapeSeq","ESCAPE_SEQUENCES","writeFlowSequence","writeNode","writeBlockSequence","compact","writeFlowMapping","objectKey","objectValue","pairBuffer","objectKeyList","writeBlockMapping","explicitPair","sort","detectType","typeList","block","duplicateIndex","duplicate","objectOrArray","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","safeDump","deprecated","appendHtml","el","html","innerHTML","citation_meta_content","ref","content","author","trim","issue","render","dom","styles","document","addEventListener","event","frontMatter","bibliography","meta","header","appendix","footer","markdown","citation","console","log","k","querySelector","getAttribute","setAttribute","let","head","createElement","appendChild","s","textContent","layout","article","create","require$$0","getSnippet","maxLength","snippet","where","require$$1","require$$2","DEFAULT","schemas","types","every","require$$3","canonical","lowercase","uppercase","camelcase","binary","octal","decimal","hexadecimal","require$$4","require$$5","_require","require","Buffer","__","require$$6","require$$7","_","window","YAML","args","major","minor","TAG","loader","dumper","require$$8","require$$9","yaml","text","localData","ymlParse","title","description","authors","a","names","firstName","join","lastName","personalURL","affiliations","affiliation","affiliationURL","exports","BibtexParser","months","notKey","pos","entries","currentEntry","setInput","t","getEntries","canCommentOut","undefined","skipWhitespace","substring","tryMatch","matchAt","value_braces","bracecount","escaped","value_comment","brcktCnt","value_quotes","single_value","values","key_equals_value","val","key_value_list","kv","entry_body","directive","preamble","comment","entry","bibtex","toJSON","b","toBibtex","out","entryType","citationKey","entryTags","tags","jdx","rawBib","bibtexParse","e","citations","citeTags","apply","querySelectorAll","citationKeys","warn","journal","logo","inline_cite","ent","bibliography_cite","cite","name_strings","last","firsts","initials","booktitle","volume","pages","localeCompare","cite_string","bibEl","ol","Lexer","tokens","links","marked","defaults","rules","normal","gfm","tables","InlineLexer","inline","renderer","Renderer","breaks","pedantic","Parser","token","escape","encode","unescape","n","regex","opt","self","noop","merge","obj","src","callback","pending","highlight","lex","done","lang","silent","newline","fences","hr","heading","nptable","lheading","blockquote","list","def","table","paragraph","bullet","item","lexer","top","bq","loose","cap","bull","space","l","depth","align","cells","ordered","smartLists","sanitize","pre","sanitizer","href","autolink","url","link","reflink","nolink","strong","em","br","del","_inside","_href","mangle","inLink","outputLink","codespan","smartypants","image","random","langPrefix","quote","raw","headerPrefix","xhtml","listitem","tablerow","tablecell","flags","prot","decodeURIComponent","parser","reverse","tok","pop","peek","parseText","row","cell","j","setOptions","inlineLexer","module","markdownElements","tabs","_self","WorkerGlobalScope","Prism","uniqueId","util","Token","o","objId","defineProperty","clone","languages","id","redef","insertBefore","inside","before","insert","root","grammar","newToken","ret","DFS","visited","plugins","highlightAll","async","env","selector","hooks","run","element","elements","highlightElement","language","parent","className","parentNode","nodeName","Worker","worker","onmessage","evt","highlightedCode","postMessage","JSON","stringify","immediateClose","tokenize","strarr","rest","tokenloop","patterns","pattern","lookbehind","greedy","lookbehindLength","delNum","from","to","p","len","after","wrapped","splice","all","add","callbacks","matchedStr","classes","attributes","aliases","close","script","currentScript","getElementsByTagName","hasAttribute","readyState","requestAnimationFrame","setTimeout","markup","prolog","doctype","cdata","punctuation","namespace","attr-value","attr-name","entity","xml","mathml","svg","css","atrule","rule","property","important","function","style-attr","clike","class-name","keyword","boolean","operator","javascript","template-string","interpolation","interpolation-punctuation","js","fileHighlight","Extensions","py","rb","ps1","psm1","sh","bat","h","tex","extension","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","statusText","send","codeElements","highlighted","github","firstPublished","lastPublished","full_title","abbrev_title","doi","issn","testData"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":null,"sources":["../node_modules/js-yaml/lib/js-yaml/common.js","../node_modules/js-yaml/lib/js-yaml/exception.js","../node_modules/js-yaml/lib/js-yaml/mark.js","../node_modules/js-yaml/lib/js-yaml/type.js","../node_modules/js-yaml/lib/js-yaml/schema.js","../node_modules/js-yaml/lib/js-yaml/type/null.js","../node_modules/js-yaml/lib/js-yaml/type/bool.js","../node_modules/js-yaml/lib/js-yaml/type/int.js","../node_modules/js-yaml/lib/js-yaml/type/float.js","../node_modules/js-yaml/lib/js-yaml/type/timestamp.js","../node_modules/js-yaml/lib/js-yaml/type/merge.js","../node_modules/js-yaml/lib/js-yaml/type/binary.js","../node_modules/js-yaml/lib/js-yaml/type/omap.js","../node_modules/js-yaml/lib/js-yaml/type/pairs.js","../node_modules/js-yaml/lib/js-yaml/type/set.js","../node_modules/js-yaml/lib/js-yaml/type/js/undefined.js","../node_modules/js-yaml/lib/js-yaml/type/js/regexp.js","../node_modules/js-yaml/lib/js-yaml/type/js/function.js","../node_modules/js-yaml/lib/js-yaml/loader.js","../node_modules/js-yaml/lib/js-yaml/dumper.js","../node_modules/js-yaml/lib/js-yaml.js","../components/meta.js","../index.js","../components/html.js","../components/styles.js","../node_modules/js-yaml/lib/js-yaml/type/str.js","../node_modules/js-yaml/lib/js-yaml/type/seq.js","../node_modules/js-yaml/lib/js-yaml/type/map.js","../node_modules/js-yaml/lib/js-yaml/schema/failsafe.js","../node_modules/js-yaml/lib/js-yaml/schema/json.js","../node_modules/js-yaml/lib/js-yaml/schema/core.js","../node_modules/js-yaml/lib/js-yaml/schema/default_safe.js","../node_modules/js-yaml/lib/js-yaml/schema/default_full.js","../node_modules/js-yaml/index.js","../components/front-matter.js","../node_modules/bibtex-parse-js/bibtexParse.js","../components/bibliography.js","../components/expand-data.js","../components/header.js","../components/appendix.js","../components/footer.js","../components/citation.js","../node_modules/marked/lib/marked.js","../components/markdown.js","../node_modules/prismjs/prism.js","../components/code.js"],"sourcesContent":["'use strict';\n\n\nfunction isNothing(subject) {\n return (typeof subject === 'undefined') || (subject === null);\n}\n\n\nfunction isObject(subject) {\n return (typeof subject === 'object') && (subject !== null);\n}\n\n\nfunction toArray(sequence) {\n if (Array.isArray(sequence)) return sequence;\n else if (isNothing(sequence)) return [];\n\n return [ sequence ];\n}\n\n\nfunction extend(target, source) {\n var index, length, key, sourceKeys;\n\n if (source) {\n sourceKeys = Object.keys(source);\n\n for (index = 0, length = sourceKeys.length; index < length; index += 1) {\n key = sourceKeys[index];\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\n\nfunction repeat(string, count) {\n var result = '', cycle;\n\n for (cycle = 0; cycle < count; cycle += 1) {\n result += string;\n }\n\n return result;\n}\n\n\nfunction isNegativeZero(number) {\n return (number === 0) && (Number.NEGATIVE_INFINITY === 1 / number);\n}\n\n\nmodule.exports.isNothing = isNothing;\nmodule.exports.isObject = isObject;\nmodule.exports.toArray = toArray;\nmodule.exports.repeat = repeat;\nmodule.exports.isNegativeZero = isNegativeZero;\nmodule.exports.extend = extend;\n","// YAML error class. http://stackoverflow.com/questions/8458984\n//\n'use strict';\n\nfunction YAMLException(reason, mark) {\n // Super constructor\n Error.call(this);\n\n // Include stack trace in error object\n if (Error.captureStackTrace) {\n // Chrome and NodeJS\n Error.captureStackTrace(this, this.constructor);\n } else {\n // FF, IE 10+ and Safari 6+. Fallback for others\n this.stack = (new Error()).stack || '';\n }\n\n this.name = 'YAMLException';\n this.reason = reason;\n this.mark = mark;\n this.message = (this.reason || '(unknown reason)') + (this.mark ? ' ' + this.mark.toString() : '');\n}\n\n\n// Inherit from Error\nYAMLException.prototype = Object.create(Error.prototype);\nYAMLException.prototype.constructor = YAMLException;\n\n\nYAMLException.prototype.toString = function toString(compact) {\n var result = this.name + ': ';\n\n result += this.reason || '(unknown reason)';\n\n if (!compact && this.mark) {\n result += ' ' + this.mark.toString();\n }\n\n return result;\n};\n\n\nmodule.exports = YAMLException;\n","'use strict';\n\n\nvar common = require('./common');\n\n\nfunction Mark(name, buffer, position, line, column) {\n this.name = name;\n this.buffer = buffer;\n this.position = position;\n this.line = line;\n this.column = column;\n}\n\n\nMark.prototype.getSnippet = function getSnippet(indent, maxLength) {\n var head, start, tail, end, snippet;\n\n if (!this.buffer) return null;\n\n indent = indent || 4;\n maxLength = maxLength || 75;\n\n head = '';\n start = this.position;\n\n while (start > 0 && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(start - 1)) === -1) {\n start -= 1;\n if (this.position - start > (maxLength / 2 - 1)) {\n head = ' ... ';\n start += 5;\n break;\n }\n }\n\n tail = '';\n end = this.position;\n\n while (end < this.buffer.length && '\\x00\\r\\n\\x85\\u2028\\u2029'.indexOf(this.buffer.charAt(end)) === -1) {\n end += 1;\n if (end - this.position > (maxLength / 2 - 1)) {\n tail = ' ... ';\n end -= 5;\n break;\n }\n }\n\n snippet = this.buffer.slice(start, end);\n\n return common.repeat(' ', indent) + head + snippet + tail + '\\n' +\n common.repeat(' ', indent + this.position - start + head.length) + '^';\n};\n\n\nMark.prototype.toString = function toString(compact) {\n var snippet, where = '';\n\n if (this.name) {\n where += 'in \"' + this.name + '\" ';\n }\n\n where += 'at line ' + (this.line + 1) + ', column ' + (this.column + 1);\n\n if (!compact) {\n snippet = this.getSnippet();\n\n if (snippet) {\n where += ':\\n' + snippet;\n }\n }\n\n return where;\n};\n\n\nmodule.exports = Mark;\n","'use strict';\n\nvar YAMLException = require('./exception');\n\nvar TYPE_CONSTRUCTOR_OPTIONS = [\n 'kind',\n 'resolve',\n 'construct',\n 'instanceOf',\n 'predicate',\n 'represent',\n 'defaultStyle',\n 'styleAliases'\n];\n\nvar YAML_NODE_KINDS = [\n 'scalar',\n 'sequence',\n 'mapping'\n];\n\nfunction compileStyleAliases(map) {\n var result = {};\n\n if (map !== null) {\n Object.keys(map).forEach(function (style) {\n map[style].forEach(function (alias) {\n result[String(alias)] = style;\n });\n });\n }\n\n return result;\n}\n\nfunction Type(tag, options) {\n options = options || {};\n\n Object.keys(options).forEach(function (name) {\n if (TYPE_CONSTRUCTOR_OPTIONS.indexOf(name) === -1) {\n throw new YAMLException('Unknown option \"' + name + '\" is met in definition of \"' + tag + '\" YAML type.');\n }\n });\n\n // TODO: Add tag format check.\n this.tag = tag;\n this.kind = options['kind'] || null;\n this.resolve = options['resolve'] || function () { return true; };\n this.construct = options['construct'] || function (data) { return data; };\n this.instanceOf = options['instanceOf'] || null;\n this.predicate = options['predicate'] || null;\n this.represent = options['represent'] || null;\n this.defaultStyle = options['defaultStyle'] || null;\n this.styleAliases = compileStyleAliases(options['styleAliases'] || null);\n\n if (YAML_NODE_KINDS.indexOf(this.kind) === -1) {\n throw new YAMLException('Unknown kind \"' + this.kind + '\" is specified for \"' + tag + '\" YAML type.');\n }\n}\n\nmodule.exports = Type;\n","'use strict';\n\n/*eslint-disable max-len*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Type = require('./type');\n\n\nfunction compileList(schema, name, result) {\n var exclude = [];\n\n schema.include.forEach(function (includedSchema) {\n result = compileList(includedSchema, name, result);\n });\n\n schema[name].forEach(function (currentType) {\n result.forEach(function (previousType, previousIndex) {\n if (previousType.tag === currentType.tag && previousType.kind === currentType.kind) {\n exclude.push(previousIndex);\n }\n });\n\n result.push(currentType);\n });\n\n return result.filter(function (type, index) {\n return exclude.indexOf(index) === -1;\n });\n}\n\n\nfunction compileMap(/* lists... */) {\n var result = {\n scalar: {},\n sequence: {},\n mapping: {},\n fallback: {}\n }, index, length;\n\n function collectType(type) {\n result[type.kind][type.tag] = result['fallback'][type.tag] = type;\n }\n\n for (index = 0, length = arguments.length; index < length; index += 1) {\n arguments[index].forEach(collectType);\n }\n return result;\n}\n\n\nfunction Schema(definition) {\n this.include = definition.include || [];\n this.implicit = definition.implicit || [];\n this.explicit = definition.explicit || [];\n\n this.implicit.forEach(function (type) {\n if (type.loadKind && type.loadKind !== 'scalar') {\n throw new YAMLException('There is a non-scalar type in the implicit list of a schema. Implicit resolving of such types is not supported.');\n }\n });\n\n this.compiledImplicit = compileList(this, 'implicit', []);\n this.compiledExplicit = compileList(this, 'explicit', []);\n this.compiledTypeMap = compileMap(this.compiledImplicit, this.compiledExplicit);\n}\n\n\nSchema.DEFAULT = null;\n\n\nSchema.create = function createSchema() {\n var schemas, types;\n\n switch (arguments.length) {\n case 1:\n schemas = Schema.DEFAULT;\n types = arguments[0];\n break;\n\n case 2:\n schemas = arguments[0];\n types = arguments[1];\n break;\n\n default:\n throw new YAMLException('Wrong number of arguments for Schema.create function');\n }\n\n schemas = common.toArray(schemas);\n types = common.toArray(types);\n\n if (!schemas.every(function (schema) { return schema instanceof Schema; })) {\n throw new YAMLException('Specified list of super schemas (or a single Schema object) contains a non-Schema object.');\n }\n\n if (!types.every(function (type) { return type instanceof Type; })) {\n throw new YAMLException('Specified list of YAML types (or a single Type object) contains a non-Type object.');\n }\n\n return new Schema({\n include: schemas,\n explicit: types\n });\n};\n\n\nmodule.exports = Schema;\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlNull(data) {\n if (data === null) return true;\n\n var max = data.length;\n\n return (max === 1 && data === '~') ||\n (max === 4 && (data === 'null' || data === 'Null' || data === 'NULL'));\n}\n\nfunction constructYamlNull() {\n return null;\n}\n\nfunction isNull(object) {\n return object === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:null', {\n kind: 'scalar',\n resolve: resolveYamlNull,\n construct: constructYamlNull,\n predicate: isNull,\n represent: {\n canonical: function () { return '~'; },\n lowercase: function () { return 'null'; },\n uppercase: function () { return 'NULL'; },\n camelcase: function () { return 'Null'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlBoolean(data) {\n if (data === null) return false;\n\n var max = data.length;\n\n return (max === 4 && (data === 'true' || data === 'True' || data === 'TRUE')) ||\n (max === 5 && (data === 'false' || data === 'False' || data === 'FALSE'));\n}\n\nfunction constructYamlBoolean(data) {\n return data === 'true' ||\n data === 'True' ||\n data === 'TRUE';\n}\n\nfunction isBoolean(object) {\n return Object.prototype.toString.call(object) === '[object Boolean]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:bool', {\n kind: 'scalar',\n resolve: resolveYamlBoolean,\n construct: constructYamlBoolean,\n predicate: isBoolean,\n represent: {\n lowercase: function (object) { return object ? 'true' : 'false'; },\n uppercase: function (object) { return object ? 'TRUE' : 'FALSE'; },\n camelcase: function (object) { return object ? 'True' : 'False'; }\n },\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nfunction isHexCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) ||\n ((0x41/* A */ <= c) && (c <= 0x46/* F */)) ||\n ((0x61/* a */ <= c) && (c <= 0x66/* f */));\n}\n\nfunction isOctCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x37/* 7 */));\n}\n\nfunction isDecCode(c) {\n return ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */));\n}\n\nfunction resolveYamlInteger(data) {\n if (data === null) return false;\n\n var max = data.length,\n index = 0,\n hasDigits = false,\n ch;\n\n if (!max) return false;\n\n ch = data[index];\n\n // sign\n if (ch === '-' || ch === '+') {\n ch = data[++index];\n }\n\n if (ch === '0') {\n // 0\n if (index + 1 === max) return true;\n ch = data[++index];\n\n // base 2, base 8, base 16\n\n if (ch === 'b') {\n // base 2\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch !== '0' && ch !== '1') return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n\n if (ch === 'x') {\n // base 16\n index++;\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isHexCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 8\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (!isOctCode(data.charCodeAt(index))) return false;\n hasDigits = true;\n }\n return hasDigits;\n }\n\n // base 10 (except 0) or base 60\n\n for (; index < max; index++) {\n ch = data[index];\n if (ch === '_') continue;\n if (ch === ':') break;\n if (!isDecCode(data.charCodeAt(index))) {\n return false;\n }\n hasDigits = true;\n }\n\n if (!hasDigits) return false;\n\n // if !base60 - done;\n if (ch !== ':') return true;\n\n // base60 almost not used, no needs to optimize\n return /^(:[0-5]?[0-9])+$/.test(data.slice(index));\n}\n\nfunction constructYamlInteger(data) {\n var value = data, sign = 1, ch, base, digits = [];\n\n if (value.indexOf('_') !== -1) {\n value = value.replace(/_/g, '');\n }\n\n ch = value[0];\n\n if (ch === '-' || ch === '+') {\n if (ch === '-') sign = -1;\n value = value.slice(1);\n ch = value[0];\n }\n\n if (value === '0') return 0;\n\n if (ch === '0') {\n if (value[1] === 'b') return sign * parseInt(value.slice(2), 2);\n if (value[1] === 'x') return sign * parseInt(value, 16);\n return sign * parseInt(value, 8);\n }\n\n if (value.indexOf(':') !== -1) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseInt(v, 10));\n });\n\n value = 0;\n base = 1;\n\n digits.forEach(function (d) {\n value += (d * base);\n base *= 60;\n });\n\n return sign * value;\n\n }\n\n return sign * parseInt(value, 10);\n}\n\nfunction isInteger(object) {\n return (Object.prototype.toString.call(object)) === '[object Number]' &&\n (object % 1 === 0 && !common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:int', {\n kind: 'scalar',\n resolve: resolveYamlInteger,\n construct: constructYamlInteger,\n predicate: isInteger,\n represent: {\n binary: function (object) { return '0b' + object.toString(2); },\n octal: function (object) { return '0' + object.toString(8); },\n decimal: function (object) { return object.toString(10); },\n hexadecimal: function (object) { return '0x' + object.toString(16).toUpperCase(); }\n },\n defaultStyle: 'decimal',\n styleAliases: {\n binary: [ 2, 'bin' ],\n octal: [ 8, 'oct' ],\n decimal: [ 10, 'dec' ],\n hexadecimal: [ 16, 'hex' ]\n }\n});\n","'use strict';\n\nvar common = require('../common');\nvar Type = require('../type');\n\nvar YAML_FLOAT_PATTERN = new RegExp(\n '^(?:[-+]?(?:[0-9][0-9_]*)\\\\.[0-9_]*(?:[eE][-+][0-9]+)?' +\n '|\\\\.[0-9_]+(?:[eE][-+][0-9]+)?' +\n '|[-+]?[0-9][0-9_]*(?::[0-5]?[0-9])+\\\\.[0-9_]*' +\n '|[-+]?\\\\.(?:inf|Inf|INF)' +\n '|\\\\.(?:nan|NaN|NAN))$');\n\nfunction resolveYamlFloat(data) {\n if (data === null) return false;\n\n if (!YAML_FLOAT_PATTERN.test(data)) return false;\n\n return true;\n}\n\nfunction constructYamlFloat(data) {\n var value, sign, base, digits;\n\n value = data.replace(/_/g, '').toLowerCase();\n sign = value[0] === '-' ? -1 : 1;\n digits = [];\n\n if ('+-'.indexOf(value[0]) >= 0) {\n value = value.slice(1);\n }\n\n if (value === '.inf') {\n return (sign === 1) ? Number.POSITIVE_INFINITY : Number.NEGATIVE_INFINITY;\n\n } else if (value === '.nan') {\n return NaN;\n\n } else if (value.indexOf(':') >= 0) {\n value.split(':').forEach(function (v) {\n digits.unshift(parseFloat(v, 10));\n });\n\n value = 0.0;\n base = 1;\n\n digits.forEach(function (d) {\n value += d * base;\n base *= 60;\n });\n\n return sign * value;\n\n }\n return sign * parseFloat(value, 10);\n}\n\n\nvar SCIENTIFIC_WITHOUT_DOT = /^[-+]?[0-9]+e/;\n\nfunction representYamlFloat(object, style) {\n var res;\n\n if (isNaN(object)) {\n switch (style) {\n case 'lowercase': return '.nan';\n case 'uppercase': return '.NAN';\n case 'camelcase': return '.NaN';\n }\n } else if (Number.POSITIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '.inf';\n case 'uppercase': return '.INF';\n case 'camelcase': return '.Inf';\n }\n } else if (Number.NEGATIVE_INFINITY === object) {\n switch (style) {\n case 'lowercase': return '-.inf';\n case 'uppercase': return '-.INF';\n case 'camelcase': return '-.Inf';\n }\n } else if (common.isNegativeZero(object)) {\n return '-0.0';\n }\n\n res = object.toString(10);\n\n // JS stringifier can build scientific format without dots: 5e-100,\n // while YAML requres dot: 5.e-100. Fix it with simple hack\n\n return SCIENTIFIC_WITHOUT_DOT.test(res) ? res.replace('e', '.e') : res;\n}\n\nfunction isFloat(object) {\n return (Object.prototype.toString.call(object) === '[object Number]') &&\n (object % 1 !== 0 || common.isNegativeZero(object));\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:float', {\n kind: 'scalar',\n resolve: resolveYamlFloat,\n construct: constructYamlFloat,\n predicate: isFloat,\n represent: representYamlFloat,\n defaultStyle: 'lowercase'\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar YAML_DATE_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9])' + // [2] month\n '-([0-9][0-9])$'); // [3] day\n\nvar YAML_TIMESTAMP_REGEXP = new RegExp(\n '^([0-9][0-9][0-9][0-9])' + // [1] year\n '-([0-9][0-9]?)' + // [2] month\n '-([0-9][0-9]?)' + // [3] day\n '(?:[Tt]|[ \\\\t]+)' + // ...\n '([0-9][0-9]?)' + // [4] hour\n ':([0-9][0-9])' + // [5] minute\n ':([0-9][0-9])' + // [6] second\n '(?:\\\\.([0-9]*))?' + // [7] fraction\n '(?:[ \\\\t]*(Z|([-+])([0-9][0-9]?)' + // [8] tz [9] tz_sign [10] tz_hour\n '(?::([0-9][0-9]))?))?$'); // [11] tz_minute\n\nfunction resolveYamlTimestamp(data) {\n if (data === null) return false;\n if (YAML_DATE_REGEXP.exec(data) !== null) return true;\n if (YAML_TIMESTAMP_REGEXP.exec(data) !== null) return true;\n return false;\n}\n\nfunction constructYamlTimestamp(data) {\n var match, year, month, day, hour, minute, second, fraction = 0,\n delta = null, tz_hour, tz_minute, date;\n\n match = YAML_DATE_REGEXP.exec(data);\n if (match === null) match = YAML_TIMESTAMP_REGEXP.exec(data);\n\n if (match === null) throw new Error('Date resolve error');\n\n // match: [1] year [2] month [3] day\n\n year = +(match[1]);\n month = +(match[2]) - 1; // JS month starts with 0\n day = +(match[3]);\n\n if (!match[4]) { // no hour\n return new Date(Date.UTC(year, month, day));\n }\n\n // match: [4] hour [5] minute [6] second [7] fraction\n\n hour = +(match[4]);\n minute = +(match[5]);\n second = +(match[6]);\n\n if (match[7]) {\n fraction = match[7].slice(0, 3);\n while (fraction.length < 3) { // milli-seconds\n fraction += '0';\n }\n fraction = +fraction;\n }\n\n // match: [8] tz [9] tz_sign [10] tz_hour [11] tz_minute\n\n if (match[9]) {\n tz_hour = +(match[10]);\n tz_minute = +(match[11] || 0);\n delta = (tz_hour * 60 + tz_minute) * 60000; // delta in mili-seconds\n if (match[9] === '-') delta = -delta;\n }\n\n date = new Date(Date.UTC(year, month, day, hour, minute, second, fraction));\n\n if (delta) date.setTime(date.getTime() - delta);\n\n return date;\n}\n\nfunction representYamlTimestamp(object /*, style*/) {\n return object.toISOString();\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:timestamp', {\n kind: 'scalar',\n resolve: resolveYamlTimestamp,\n construct: constructYamlTimestamp,\n instanceOf: Date,\n represent: representYamlTimestamp\n});\n","'use strict';\n\nvar Type = require('../type');\n\nfunction resolveYamlMerge(data) {\n return data === '<<' || data === null;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:merge', {\n kind: 'scalar',\n resolve: resolveYamlMerge\n});\n","'use strict';\n\n/*eslint-disable no-bitwise*/\n\nvar NodeBuffer;\n\ntry {\n // A trick for browserified version, to not include `Buffer` shim\n var _require = require;\n NodeBuffer = _require('buffer').Buffer;\n} catch (__) {}\n\nvar Type = require('../type');\n\n\n// [ 64, 65, 66 ] -> [ padding, CR, LF ]\nvar BASE64_MAP = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\\n\\r';\n\n\nfunction resolveYamlBinary(data) {\n if (data === null) return false;\n\n var code, idx, bitlen = 0, max = data.length, map = BASE64_MAP;\n\n // Convert one by one.\n for (idx = 0; idx < max; idx++) {\n code = map.indexOf(data.charAt(idx));\n\n // Skip CR/LF\n if (code > 64) continue;\n\n // Fail on illegal characters\n if (code < 0) return false;\n\n bitlen += 6;\n }\n\n // If there are any bits left, source was corrupted\n return (bitlen % 8) === 0;\n}\n\nfunction constructYamlBinary(data) {\n var idx, tailbits,\n input = data.replace(/[\\r\\n=]/g, ''), // remove CR/LF & padding to simplify scan\n max = input.length,\n map = BASE64_MAP,\n bits = 0,\n result = [];\n\n // Collect by 6*4 bits (3 bytes)\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 4 === 0) && idx) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n }\n\n bits = (bits << 6) | map.indexOf(input.charAt(idx));\n }\n\n // Dump tail\n\n tailbits = (max % 4) * 6;\n\n if (tailbits === 0) {\n result.push((bits >> 16) & 0xFF);\n result.push((bits >> 8) & 0xFF);\n result.push(bits & 0xFF);\n } else if (tailbits === 18) {\n result.push((bits >> 10) & 0xFF);\n result.push((bits >> 2) & 0xFF);\n } else if (tailbits === 12) {\n result.push((bits >> 4) & 0xFF);\n }\n\n // Wrap into Buffer for NodeJS and leave Array for browser\n if (NodeBuffer) return new NodeBuffer(result);\n\n return result;\n}\n\nfunction representYamlBinary(object /*, style*/) {\n var result = '', bits = 0, idx, tail,\n max = object.length,\n map = BASE64_MAP;\n\n // Convert every three bytes to 4 ASCII characters.\n\n for (idx = 0; idx < max; idx++) {\n if ((idx % 3 === 0) && idx) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n }\n\n bits = (bits << 8) + object[idx];\n }\n\n // Dump tail\n\n tail = max % 3;\n\n if (tail === 0) {\n result += map[(bits >> 18) & 0x3F];\n result += map[(bits >> 12) & 0x3F];\n result += map[(bits >> 6) & 0x3F];\n result += map[bits & 0x3F];\n } else if (tail === 2) {\n result += map[(bits >> 10) & 0x3F];\n result += map[(bits >> 4) & 0x3F];\n result += map[(bits << 2) & 0x3F];\n result += map[64];\n } else if (tail === 1) {\n result += map[(bits >> 2) & 0x3F];\n result += map[(bits << 4) & 0x3F];\n result += map[64];\n result += map[64];\n }\n\n return result;\n}\n\nfunction isBinary(object) {\n return NodeBuffer && NodeBuffer.isBuffer(object);\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:binary', {\n kind: 'scalar',\n resolve: resolveYamlBinary,\n construct: constructYamlBinary,\n predicate: isBinary,\n represent: representYamlBinary\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlOmap(data) {\n if (data === null) return true;\n\n var objectKeys = [], index, length, pair, pairKey, pairHasKey,\n object = data;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n pairHasKey = false;\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n for (pairKey in pair) {\n if (_hasOwnProperty.call(pair, pairKey)) {\n if (!pairHasKey) pairHasKey = true;\n else return false;\n }\n }\n\n if (!pairHasKey) return false;\n\n if (objectKeys.indexOf(pairKey) === -1) objectKeys.push(pairKey);\n else return false;\n }\n\n return true;\n}\n\nfunction constructYamlOmap(data) {\n return data !== null ? data : [];\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:omap', {\n kind: 'sequence',\n resolve: resolveYamlOmap,\n construct: constructYamlOmap\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _toString = Object.prototype.toString;\n\nfunction resolveYamlPairs(data) {\n if (data === null) return true;\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n if (_toString.call(pair) !== '[object Object]') return false;\n\n keys = Object.keys(pair);\n\n if (keys.length !== 1) return false;\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return true;\n}\n\nfunction constructYamlPairs(data) {\n if (data === null) return [];\n\n var index, length, pair, keys, result,\n object = data;\n\n result = new Array(object.length);\n\n for (index = 0, length = object.length; index < length; index += 1) {\n pair = object[index];\n\n keys = Object.keys(pair);\n\n result[index] = [ keys[0], pair[keys[0]] ];\n }\n\n return result;\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:pairs', {\n kind: 'sequence',\n resolve: resolveYamlPairs,\n construct: constructYamlPairs\n});\n","'use strict';\n\nvar Type = require('../type');\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction resolveYamlSet(data) {\n if (data === null) return true;\n\n var key, object = data;\n\n for (key in object) {\n if (_hasOwnProperty.call(object, key)) {\n if (object[key] !== null) return false;\n }\n }\n\n return true;\n}\n\nfunction constructYamlSet(data) {\n return data !== null ? data : {};\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:set', {\n kind: 'mapping',\n resolve: resolveYamlSet,\n construct: constructYamlSet\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptUndefined() {\n return true;\n}\n\nfunction constructJavascriptUndefined() {\n /*eslint-disable no-undefined*/\n return undefined;\n}\n\nfunction representJavascriptUndefined() {\n return '';\n}\n\nfunction isUndefined(object) {\n return typeof object === 'undefined';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/undefined', {\n kind: 'scalar',\n resolve: resolveJavascriptUndefined,\n construct: constructJavascriptUndefined,\n predicate: isUndefined,\n represent: representJavascriptUndefined\n});\n","'use strict';\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptRegExp(data) {\n if (data === null) return false;\n if (data.length === 0) return false;\n\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // if regexp starts with '/' it can have modifiers and must be properly closed\n // `/foo/gim` - modifiers tail can be maximum 3 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n\n if (modifiers.length > 3) return false;\n // if expression starts with /, is should be properly terminated\n if (regexp[regexp.length - modifiers.length - 1] !== '/') return false;\n }\n\n return true;\n}\n\nfunction constructJavascriptRegExp(data) {\n var regexp = data,\n tail = /\\/([gim]*)$/.exec(data),\n modifiers = '';\n\n // `/foo/gim` - tail can be maximum 4 chars\n if (regexp[0] === '/') {\n if (tail) modifiers = tail[1];\n regexp = regexp.slice(1, regexp.length - modifiers.length - 1);\n }\n\n return new RegExp(regexp, modifiers);\n}\n\nfunction representJavascriptRegExp(object /*, style*/) {\n var result = '/' + object.source + '/';\n\n if (object.global) result += 'g';\n if (object.multiline) result += 'm';\n if (object.ignoreCase) result += 'i';\n\n return result;\n}\n\nfunction isRegExp(object) {\n return Object.prototype.toString.call(object) === '[object RegExp]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/regexp', {\n kind: 'scalar',\n resolve: resolveJavascriptRegExp,\n construct: constructJavascriptRegExp,\n predicate: isRegExp,\n represent: representJavascriptRegExp\n});\n","'use strict';\n\nvar esprima;\n\n// Browserified version does not have esprima\n//\n// 1. For node.js just require module as deps\n// 2. For browser try to require mudule via external AMD system.\n// If not found - try to fallback to window.esprima. If not\n// found too - then fail to parse.\n//\ntry {\n // workaround to exclude package from browserify list.\n var _require = require;\n esprima = _require('esprima');\n} catch (_) {\n /*global window */\n if (typeof window !== 'undefined') esprima = window.esprima;\n}\n\nvar Type = require('../../type');\n\nfunction resolveJavascriptFunction(data) {\n if (data === null) return false;\n\n try {\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true });\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n return false;\n }\n\n return true;\n } catch (err) {\n return false;\n }\n}\n\nfunction constructJavascriptFunction(data) {\n /*jslint evil:true*/\n\n var source = '(' + data + ')',\n ast = esprima.parse(source, { range: true }),\n params = [],\n body;\n\n if (ast.type !== 'Program' ||\n ast.body.length !== 1 ||\n ast.body[0].type !== 'ExpressionStatement' ||\n ast.body[0].expression.type !== 'FunctionExpression') {\n throw new Error('Failed to resolve function');\n }\n\n ast.body[0].expression.params.forEach(function (param) {\n params.push(param.name);\n });\n\n body = ast.body[0].expression.body.range;\n\n // Esprima's ranges include the first '{' and the last '}' characters on\n // function expressions. So cut them out.\n /*eslint-disable no-new-func*/\n return new Function(params, source.slice(body[0] + 1, body[1] - 1));\n}\n\nfunction representJavascriptFunction(object /*, style*/) {\n return object.toString();\n}\n\nfunction isFunction(object) {\n return Object.prototype.toString.call(object) === '[object Function]';\n}\n\nmodule.exports = new Type('tag:yaml.org,2002:js/function', {\n kind: 'scalar',\n resolve: resolveJavascriptFunction,\n construct: constructJavascriptFunction,\n predicate: isFunction,\n represent: representJavascriptFunction\n});\n","'use strict';\n\n/*eslint-disable max-len,no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar Mark = require('./mark');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\n\n\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\n\nvar CONTEXT_FLOW_IN = 1;\nvar CONTEXT_FLOW_OUT = 2;\nvar CONTEXT_BLOCK_IN = 3;\nvar CONTEXT_BLOCK_OUT = 4;\n\n\nvar CHOMPING_CLIP = 1;\nvar CHOMPING_STRIP = 2;\nvar CHOMPING_KEEP = 3;\n\n\nvar PATTERN_NON_PRINTABLE = /[\\x00-\\x08\\x0B\\x0C\\x0E-\\x1F\\x7F-\\x84\\x86-\\x9F\\uFFFE\\uFFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF]/;\nvar PATTERN_NON_ASCII_LINE_BREAKS = /[\\x85\\u2028\\u2029]/;\nvar PATTERN_FLOW_INDICATORS = /[,\\[\\]\\{\\}]/;\nvar PATTERN_TAG_HANDLE = /^(?:!|!!|![a-z\\-]+!)$/i;\nvar PATTERN_TAG_URI = /^(?:!|[^,\\[\\]\\{\\}])(?:%[0-9a-f]{2}|[0-9a-z\\-#;\\/\\?:@&=\\+\\$,_\\.!~\\*'\\(\\)\\[\\]])*$/i;\n\n\nfunction is_EOL(c) {\n return (c === 0x0A/* LF */) || (c === 0x0D/* CR */);\n}\n\nfunction is_WHITE_SPACE(c) {\n return (c === 0x09/* Tab */) || (c === 0x20/* Space */);\n}\n\nfunction is_WS_OR_EOL(c) {\n return (c === 0x09/* Tab */) ||\n (c === 0x20/* Space */) ||\n (c === 0x0A/* LF */) ||\n (c === 0x0D/* CR */);\n}\n\nfunction is_FLOW_INDICATOR(c) {\n return c === 0x2C/* , */ ||\n c === 0x5B/* [ */ ||\n c === 0x5D/* ] */ ||\n c === 0x7B/* { */ ||\n c === 0x7D/* } */;\n}\n\nfunction fromHexCode(c) {\n var lc;\n\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n /*eslint-disable no-bitwise*/\n lc = c | 0x20;\n\n if ((0x61/* a */ <= lc) && (lc <= 0x66/* f */)) {\n return lc - 0x61 + 10;\n }\n\n return -1;\n}\n\nfunction escapedHexLen(c) {\n if (c === 0x78/* x */) { return 2; }\n if (c === 0x75/* u */) { return 4; }\n if (c === 0x55/* U */) { return 8; }\n return 0;\n}\n\nfunction fromDecimalCode(c) {\n if ((0x30/* 0 */ <= c) && (c <= 0x39/* 9 */)) {\n return c - 0x30;\n }\n\n return -1;\n}\n\nfunction simpleEscapeSequence(c) {\n return (c === 0x30/* 0 */) ? '\\x00' :\n (c === 0x61/* a */) ? '\\x07' :\n (c === 0x62/* b */) ? '\\x08' :\n (c === 0x74/* t */) ? '\\x09' :\n (c === 0x09/* Tab */) ? '\\x09' :\n (c === 0x6E/* n */) ? '\\x0A' :\n (c === 0x76/* v */) ? '\\x0B' :\n (c === 0x66/* f */) ? '\\x0C' :\n (c === 0x72/* r */) ? '\\x0D' :\n (c === 0x65/* e */) ? '\\x1B' :\n (c === 0x20/* Space */) ? ' ' :\n (c === 0x22/* \" */) ? '\\x22' :\n (c === 0x2F/* / */) ? '/' :\n (c === 0x5C/* \\ */) ? '\\x5C' :\n (c === 0x4E/* N */) ? '\\x85' :\n (c === 0x5F/* _ */) ? '\\xA0' :\n (c === 0x4C/* L */) ? '\\u2028' :\n (c === 0x50/* P */) ? '\\u2029' : '';\n}\n\nfunction charFromCodepoint(c) {\n if (c <= 0xFFFF) {\n return String.fromCharCode(c);\n }\n // Encode UTF-16 surrogate pair\n // https://en.wikipedia.org/wiki/UTF-16#Code_points_U.2B010000_to_U.2B10FFFF\n return String.fromCharCode(((c - 0x010000) >> 10) + 0xD800,\n ((c - 0x010000) & 0x03FF) + 0xDC00);\n}\n\nvar simpleEscapeCheck = new Array(256); // integer, for fast access\nvar simpleEscapeMap = new Array(256);\nfor (var i = 0; i < 256; i++) {\n simpleEscapeCheck[i] = simpleEscapeSequence(i) ? 1 : 0;\n simpleEscapeMap[i] = simpleEscapeSequence(i);\n}\n\n\nfunction State(input, options) {\n this.input = input;\n\n this.filename = options['filename'] || null;\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.onWarning = options['onWarning'] || null;\n this.legacy = options['legacy'] || false;\n this.json = options['json'] || false;\n this.listener = options['listener'] || null;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.typeMap = this.schema.compiledTypeMap;\n\n this.length = input.length;\n this.position = 0;\n this.line = 0;\n this.lineStart = 0;\n this.lineIndent = 0;\n\n this.documents = [];\n\n /*\n this.version;\n this.checkLineBreaks;\n this.tagMap;\n this.anchorMap;\n this.tag;\n this.anchor;\n this.kind;\n this.result;*/\n\n}\n\n\nfunction generateError(state, message) {\n return new YAMLException(\n message,\n new Mark(state.filename, state.input, state.position, state.line, (state.position - state.lineStart)));\n}\n\nfunction throwError(state, message) {\n throw generateError(state, message);\n}\n\nfunction throwWarning(state, message) {\n if (state.onWarning) {\n state.onWarning.call(null, generateError(state, message));\n }\n}\n\n\nvar directiveHandlers = {\n\n YAML: function handleYamlDirective(state, name, args) {\n\n var match, major, minor;\n\n if (state.version !== null) {\n throwError(state, 'duplication of %YAML directive');\n }\n\n if (args.length !== 1) {\n throwError(state, 'YAML directive accepts exactly one argument');\n }\n\n match = /^([0-9]+)\\.([0-9]+)$/.exec(args[0]);\n\n if (match === null) {\n throwError(state, 'ill-formed argument of the YAML directive');\n }\n\n major = parseInt(match[1], 10);\n minor = parseInt(match[2], 10);\n\n if (major !== 1) {\n throwError(state, 'unacceptable YAML version of the document');\n }\n\n state.version = args[0];\n state.checkLineBreaks = (minor < 2);\n\n if (minor !== 1 && minor !== 2) {\n throwWarning(state, 'unsupported YAML version of the document');\n }\n },\n\n TAG: function handleTagDirective(state, name, args) {\n\n var handle, prefix;\n\n if (args.length !== 2) {\n throwError(state, 'TAG directive accepts exactly two arguments');\n }\n\n handle = args[0];\n prefix = args[1];\n\n if (!PATTERN_TAG_HANDLE.test(handle)) {\n throwError(state, 'ill-formed tag handle (first argument) of the TAG directive');\n }\n\n if (_hasOwnProperty.call(state.tagMap, handle)) {\n throwError(state, 'there is a previously declared suffix for \"' + handle + '\" tag handle');\n }\n\n if (!PATTERN_TAG_URI.test(prefix)) {\n throwError(state, 'ill-formed tag prefix (second argument) of the TAG directive');\n }\n\n state.tagMap[handle] = prefix;\n }\n};\n\n\nfunction captureSegment(state, start, end, checkJson) {\n var _position, _length, _character, _result;\n\n if (start < end) {\n _result = state.input.slice(start, end);\n\n if (checkJson) {\n for (_position = 0, _length = _result.length;\n _position < _length;\n _position += 1) {\n _character = _result.charCodeAt(_position);\n if (!(_character === 0x09 ||\n (0x20 <= _character && _character <= 0x10FFFF))) {\n throwError(state, 'expected valid JSON character');\n }\n }\n } else if (PATTERN_NON_PRINTABLE.test(_result)) {\n throwError(state, 'the stream contains non-printable characters');\n }\n\n state.result += _result;\n }\n}\n\nfunction mergeMappings(state, destination, source, overridableKeys) {\n var sourceKeys, key, index, quantity;\n\n if (!common.isObject(source)) {\n throwError(state, 'cannot merge mappings; the provided source object is unacceptable');\n }\n\n sourceKeys = Object.keys(source);\n\n for (index = 0, quantity = sourceKeys.length; index < quantity; index += 1) {\n key = sourceKeys[index];\n\n if (!_hasOwnProperty.call(destination, key)) {\n destination[key] = source[key];\n overridableKeys[key] = true;\n }\n }\n}\n\nfunction storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode) {\n var index, quantity;\n\n keyNode = String(keyNode);\n\n if (_result === null) {\n _result = {};\n }\n\n if (keyTag === 'tag:yaml.org,2002:merge') {\n if (Array.isArray(valueNode)) {\n for (index = 0, quantity = valueNode.length; index < quantity; index += 1) {\n mergeMappings(state, _result, valueNode[index], overridableKeys);\n }\n } else {\n mergeMappings(state, _result, valueNode, overridableKeys);\n }\n } else {\n if (!state.json &&\n !_hasOwnProperty.call(overridableKeys, keyNode) &&\n _hasOwnProperty.call(_result, keyNode)) {\n throwError(state, 'duplicated mapping key');\n }\n _result[keyNode] = valueNode;\n delete overridableKeys[keyNode];\n }\n\n return _result;\n}\n\nfunction readLineBreak(state) {\n var ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x0A/* LF */) {\n state.position++;\n } else if (ch === 0x0D/* CR */) {\n state.position++;\n if (state.input.charCodeAt(state.position) === 0x0A/* LF */) {\n state.position++;\n }\n } else {\n throwError(state, 'a line break is expected');\n }\n\n state.line += 1;\n state.lineStart = state.position;\n}\n\nfunction skipSeparationSpace(state, allowComments, checkIndent) {\n var lineBreaks = 0,\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (allowComments && ch === 0x23/* # */) {\n do {\n ch = state.input.charCodeAt(++state.position);\n } while (ch !== 0x0A/* LF */ && ch !== 0x0D/* CR */ && ch !== 0);\n }\n\n if (is_EOL(ch)) {\n readLineBreak(state);\n\n ch = state.input.charCodeAt(state.position);\n lineBreaks++;\n state.lineIndent = 0;\n\n while (ch === 0x20/* Space */) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n } else {\n break;\n }\n }\n\n if (checkIndent !== -1 && lineBreaks !== 0 && state.lineIndent < checkIndent) {\n throwWarning(state, 'deficient indentation');\n }\n\n return lineBreaks;\n}\n\nfunction testDocumentSeparator(state) {\n var _position = state.position,\n ch;\n\n ch = state.input.charCodeAt(_position);\n\n // Condition state.position === state.lineStart is tested\n // in parent on each call, for efficiency. No needs to test here again.\n if ((ch === 0x2D/* - */ || ch === 0x2E/* . */) &&\n ch === state.input.charCodeAt(_position + 1) &&\n ch === state.input.charCodeAt(_position + 2)) {\n\n _position += 3;\n\n ch = state.input.charCodeAt(_position);\n\n if (ch === 0 || is_WS_OR_EOL(ch)) {\n return true;\n }\n }\n\n return false;\n}\n\nfunction writeFoldedLines(state, count) {\n if (count === 1) {\n state.result += ' ';\n } else if (count > 1) {\n state.result += common.repeat('\\n', count - 1);\n }\n}\n\n\nfunction readPlainScalar(state, nodeIndent, withinFlowCollection) {\n var preceding,\n following,\n captureStart,\n captureEnd,\n hasPendingContent,\n _line,\n _lineStart,\n _lineIndent,\n _kind = state.kind,\n _result = state.result,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (is_WS_OR_EOL(ch) ||\n is_FLOW_INDICATOR(ch) ||\n ch === 0x23/* # */ ||\n ch === 0x26/* & */ ||\n ch === 0x2A/* * */ ||\n ch === 0x21/* ! */ ||\n ch === 0x7C/* | */ ||\n ch === 0x3E/* > */ ||\n ch === 0x27/* ' */ ||\n ch === 0x22/* \" */ ||\n ch === 0x25/* % */ ||\n ch === 0x40/* @ */ ||\n ch === 0x60/* ` */) {\n return false;\n }\n\n if (ch === 0x3F/* ? */ || ch === 0x2D/* - */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n return false;\n }\n }\n\n state.kind = 'scalar';\n state.result = '';\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n\n while (ch !== 0) {\n if (ch === 0x3A/* : */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following) ||\n withinFlowCollection && is_FLOW_INDICATOR(following)) {\n break;\n }\n\n } else if (ch === 0x23/* # */) {\n preceding = state.input.charCodeAt(state.position - 1);\n\n if (is_WS_OR_EOL(preceding)) {\n break;\n }\n\n } else if ((state.position === state.lineStart && testDocumentSeparator(state)) ||\n withinFlowCollection && is_FLOW_INDICATOR(ch)) {\n break;\n\n } else if (is_EOL(ch)) {\n _line = state.line;\n _lineStart = state.lineStart;\n _lineIndent = state.lineIndent;\n skipSeparationSpace(state, false, -1);\n\n if (state.lineIndent >= nodeIndent) {\n hasPendingContent = true;\n ch = state.input.charCodeAt(state.position);\n continue;\n } else {\n state.position = captureEnd;\n state.line = _line;\n state.lineStart = _lineStart;\n state.lineIndent = _lineIndent;\n break;\n }\n }\n\n if (hasPendingContent) {\n captureSegment(state, captureStart, captureEnd, false);\n writeFoldedLines(state, state.line - _line);\n captureStart = captureEnd = state.position;\n hasPendingContent = false;\n }\n\n if (!is_WHITE_SPACE(ch)) {\n captureEnd = state.position + 1;\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, captureEnd, false);\n\n if (state.result) {\n return true;\n }\n\n state.kind = _kind;\n state.result = _result;\n return false;\n}\n\nfunction readSingleQuotedScalar(state, nodeIndent) {\n var ch,\n captureStart, captureEnd;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x27/* ' */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x27/* ' */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x27/* ' */) {\n captureStart = state.position;\n state.position++;\n captureEnd = state.position;\n } else {\n return true;\n }\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a single quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a single quoted scalar');\n}\n\nfunction readDoubleQuotedScalar(state, nodeIndent) {\n var captureStart,\n captureEnd,\n hexLength,\n hexResult,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x22/* \" */) {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n state.position++;\n captureStart = captureEnd = state.position;\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n if (ch === 0x22/* \" */) {\n captureSegment(state, captureStart, state.position, true);\n state.position++;\n return true;\n\n } else if (ch === 0x5C/* \\ */) {\n captureSegment(state, captureStart, state.position, true);\n ch = state.input.charCodeAt(++state.position);\n\n if (is_EOL(ch)) {\n skipSeparationSpace(state, false, nodeIndent);\n\n // TODO: rework to inline fn with no type cast?\n } else if (ch < 256 && simpleEscapeCheck[ch]) {\n state.result += simpleEscapeMap[ch];\n state.position++;\n\n } else if ((tmp = escapedHexLen(ch)) > 0) {\n hexLength = tmp;\n hexResult = 0;\n\n for (; hexLength > 0; hexLength--) {\n ch = state.input.charCodeAt(++state.position);\n\n if ((tmp = fromHexCode(ch)) >= 0) {\n hexResult = (hexResult << 4) + tmp;\n\n } else {\n throwError(state, 'expected hexadecimal character');\n }\n }\n\n state.result += charFromCodepoint(hexResult);\n\n state.position++;\n\n } else {\n throwError(state, 'unknown escape sequence');\n }\n\n captureStart = captureEnd = state.position;\n\n } else if (is_EOL(ch)) {\n captureSegment(state, captureStart, captureEnd, true);\n writeFoldedLines(state, skipSeparationSpace(state, false, nodeIndent));\n captureStart = captureEnd = state.position;\n\n } else if (state.position === state.lineStart && testDocumentSeparator(state)) {\n throwError(state, 'unexpected end of the document within a double quoted scalar');\n\n } else {\n state.position++;\n captureEnd = state.position;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a double quoted scalar');\n}\n\nfunction readFlowCollection(state, nodeIndent) {\n var readNext = true,\n _line,\n _tag = state.tag,\n _result,\n _anchor = state.anchor,\n following,\n terminator,\n isPair,\n isExplicitPair,\n isMapping,\n overridableKeys = {},\n keyNode,\n keyTag,\n valueNode,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x5B/* [ */) {\n terminator = 0x5D;/* ] */\n isMapping = false;\n _result = [];\n } else if (ch === 0x7B/* { */) {\n terminator = 0x7D;/* } */\n isMapping = true;\n _result = {};\n } else {\n return false;\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n while (ch !== 0) {\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === terminator) {\n state.position++;\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = isMapping ? 'mapping' : 'sequence';\n state.result = _result;\n return true;\n } else if (!readNext) {\n throwError(state, 'missed comma between flow collection entries');\n }\n\n keyTag = keyNode = valueNode = null;\n isPair = isExplicitPair = false;\n\n if (ch === 0x3F/* ? */) {\n following = state.input.charCodeAt(state.position + 1);\n\n if (is_WS_OR_EOL(following)) {\n isPair = isExplicitPair = true;\n state.position++;\n skipSeparationSpace(state, true, nodeIndent);\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n keyTag = state.tag;\n keyNode = state.result;\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((isExplicitPair || state.line === _line) && ch === 0x3A/* : */) {\n isPair = true;\n ch = state.input.charCodeAt(++state.position);\n skipSeparationSpace(state, true, nodeIndent);\n composeNode(state, nodeIndent, CONTEXT_FLOW_IN, false, true);\n valueNode = state.result;\n }\n\n if (isMapping) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n } else if (isPair) {\n _result.push(storeMappingPair(state, null, overridableKeys, keyTag, keyNode, valueNode));\n } else {\n _result.push(keyNode);\n }\n\n skipSeparationSpace(state, true, nodeIndent);\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x2C/* , */) {\n readNext = true;\n ch = state.input.charCodeAt(++state.position);\n } else {\n readNext = false;\n }\n }\n\n throwError(state, 'unexpected end of the stream within a flow collection');\n}\n\nfunction readBlockScalar(state, nodeIndent) {\n var captureStart,\n folding,\n chomping = CHOMPING_CLIP,\n didReadContent = false,\n detectedIndent = false,\n textIndent = nodeIndent,\n emptyLines = 0,\n atMoreIndented = false,\n tmp,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch === 0x7C/* | */) {\n folding = false;\n } else if (ch === 0x3E/* > */) {\n folding = true;\n } else {\n return false;\n }\n\n state.kind = 'scalar';\n state.result = '';\n\n while (ch !== 0) {\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x2B/* + */ || ch === 0x2D/* - */) {\n if (CHOMPING_CLIP === chomping) {\n chomping = (ch === 0x2B/* + */) ? CHOMPING_KEEP : CHOMPING_STRIP;\n } else {\n throwError(state, 'repeat of a chomping mode identifier');\n }\n\n } else if ((tmp = fromDecimalCode(ch)) >= 0) {\n if (tmp === 0) {\n throwError(state, 'bad explicit indentation width of a block scalar; it cannot be less than one');\n } else if (!detectedIndent) {\n textIndent = nodeIndent + tmp - 1;\n detectedIndent = true;\n } else {\n throwError(state, 'repeat of an indentation width identifier');\n }\n\n } else {\n break;\n }\n }\n\n if (is_WHITE_SPACE(ch)) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (is_WHITE_SPACE(ch));\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (!is_EOL(ch) && (ch !== 0));\n }\n }\n\n while (ch !== 0) {\n readLineBreak(state);\n state.lineIndent = 0;\n\n ch = state.input.charCodeAt(state.position);\n\n while ((!detectedIndent || state.lineIndent < textIndent) &&\n (ch === 0x20/* Space */)) {\n state.lineIndent++;\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (!detectedIndent && state.lineIndent > textIndent) {\n textIndent = state.lineIndent;\n }\n\n if (is_EOL(ch)) {\n emptyLines++;\n continue;\n }\n\n // End of the scalar.\n if (state.lineIndent < textIndent) {\n\n // Perform the chomping.\n if (chomping === CHOMPING_KEEP) {\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n } else if (chomping === CHOMPING_CLIP) {\n if (didReadContent) { // i.e. only if the scalar is not empty.\n state.result += '\\n';\n }\n }\n\n // Break this `while` cycle and go to the funciton's epilogue.\n break;\n }\n\n // Folded style: use fancy rules to handle line breaks.\n if (folding) {\n\n // Lines starting with white space characters (more-indented lines) are not folded.\n if (is_WHITE_SPACE(ch)) {\n atMoreIndented = true;\n // except for the first content line (cf. Example 8.1)\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n\n // End of more-indented block.\n } else if (atMoreIndented) {\n atMoreIndented = false;\n state.result += common.repeat('\\n', emptyLines + 1);\n\n // Just one line break - perceive as the same line.\n } else if (emptyLines === 0) {\n if (didReadContent) { // i.e. only if we have already read some scalar content.\n state.result += ' ';\n }\n\n // Several line breaks - perceive as different lines.\n } else {\n state.result += common.repeat('\\n', emptyLines);\n }\n\n // Literal style: just add exact number of line breaks between content lines.\n } else {\n // Keep all line breaks except the header line break.\n state.result += common.repeat('\\n', didReadContent ? 1 + emptyLines : emptyLines);\n }\n\n didReadContent = true;\n detectedIndent = true;\n emptyLines = 0;\n captureStart = state.position;\n\n while (!is_EOL(ch) && (ch !== 0)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n captureSegment(state, captureStart, state.position, false);\n }\n\n return true;\n}\n\nfunction readBlockSequence(state, nodeIndent) {\n var _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = [],\n following,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n\n if (ch !== 0x2D/* - */) {\n break;\n }\n\n following = state.input.charCodeAt(state.position + 1);\n\n if (!is_WS_OR_EOL(following)) {\n break;\n }\n\n detected = true;\n state.position++;\n\n if (skipSeparationSpace(state, true, -1)) {\n if (state.lineIndent <= nodeIndent) {\n _result.push(null);\n ch = state.input.charCodeAt(state.position);\n continue;\n }\n }\n\n _line = state.line;\n composeNode(state, nodeIndent, CONTEXT_BLOCK_IN, false, true);\n _result.push(state.result);\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if ((state.line === _line || state.lineIndent > nodeIndent) && (ch !== 0)) {\n throwError(state, 'bad indentation of a sequence entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'sequence';\n state.result = _result;\n return true;\n }\n return false;\n}\n\nfunction readBlockMapping(state, nodeIndent, flowIndent) {\n var following,\n allowCompact,\n _line,\n _tag = state.tag,\n _anchor = state.anchor,\n _result = {},\n overridableKeys = {},\n keyTag = null,\n keyNode = null,\n valueNode = null,\n atExplicitKey = false,\n detected = false,\n ch;\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = _result;\n }\n\n ch = state.input.charCodeAt(state.position);\n\n while (ch !== 0) {\n following = state.input.charCodeAt(state.position + 1);\n _line = state.line; // Save the current line.\n\n //\n // Explicit notation case. There are two separate blocks:\n // first for the key (denoted by \"?\") and second for the value (denoted by \":\")\n //\n if ((ch === 0x3F/* ? */ || ch === 0x3A/* : */) && is_WS_OR_EOL(following)) {\n\n if (ch === 0x3F/* ? */) {\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = true;\n allowCompact = true;\n\n } else if (atExplicitKey) {\n // i.e. 0x3A/* : */ === character after the explicit key.\n atExplicitKey = false;\n allowCompact = true;\n\n } else {\n throwError(state, 'incomplete explicit mapping pair; a key node is missed');\n }\n\n state.position += 1;\n ch = following;\n\n //\n // Implicit notation case. Flow-style node as the key first, then \":\", and the value.\n //\n } else if (composeNode(state, flowIndent, CONTEXT_FLOW_OUT, false, true)) {\n\n if (state.line === _line) {\n ch = state.input.charCodeAt(state.position);\n\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x3A/* : */) {\n ch = state.input.charCodeAt(++state.position);\n\n if (!is_WS_OR_EOL(ch)) {\n throwError(state, 'a whitespace character is expected after the key-value separator within a block mapping');\n }\n\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n keyTag = keyNode = valueNode = null;\n }\n\n detected = true;\n atExplicitKey = false;\n allowCompact = false;\n keyTag = state.tag;\n keyNode = state.result;\n\n } else if (detected) {\n throwError(state, 'can not read an implicit mapping pair; a colon is missed');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else if (detected) {\n throwError(state, 'can not read a block mapping entry; a multiline key may not be an implicit key');\n\n } else {\n state.tag = _tag;\n state.anchor = _anchor;\n return true; // Keep the result of `composeNode`.\n }\n\n } else {\n break; // Reading is done. Go to the epilogue.\n }\n\n //\n // Common reading code for both explicit and implicit notations.\n //\n if (state.line === _line || state.lineIndent > nodeIndent) {\n if (composeNode(state, nodeIndent, CONTEXT_BLOCK_OUT, true, allowCompact)) {\n if (atExplicitKey) {\n keyNode = state.result;\n } else {\n valueNode = state.result;\n }\n }\n\n if (!atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, valueNode);\n keyTag = keyNode = valueNode = null;\n }\n\n skipSeparationSpace(state, true, -1);\n ch = state.input.charCodeAt(state.position);\n }\n\n if (state.lineIndent > nodeIndent && (ch !== 0)) {\n throwError(state, 'bad indentation of a mapping entry');\n } else if (state.lineIndent < nodeIndent) {\n break;\n }\n }\n\n //\n // Epilogue.\n //\n\n // Special case: last mapping's node contains only the key in explicit notation.\n if (atExplicitKey) {\n storeMappingPair(state, _result, overridableKeys, keyTag, keyNode, null);\n }\n\n // Expose the resulting mapping.\n if (detected) {\n state.tag = _tag;\n state.anchor = _anchor;\n state.kind = 'mapping';\n state.result = _result;\n }\n\n return detected;\n}\n\nfunction readTagProperty(state) {\n var _position,\n isVerbatim = false,\n isNamed = false,\n tagHandle,\n tagName,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x21/* ! */) return false;\n\n if (state.tag !== null) {\n throwError(state, 'duplication of a tag property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n\n if (ch === 0x3C/* < */) {\n isVerbatim = true;\n ch = state.input.charCodeAt(++state.position);\n\n } else if (ch === 0x21/* ! */) {\n isNamed = true;\n tagHandle = '!!';\n ch = state.input.charCodeAt(++state.position);\n\n } else {\n tagHandle = '!';\n }\n\n _position = state.position;\n\n if (isVerbatim) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && ch !== 0x3E/* > */);\n\n if (state.position < state.length) {\n tagName = state.input.slice(_position, state.position);\n ch = state.input.charCodeAt(++state.position);\n } else {\n throwError(state, 'unexpected end of the stream within a verbatim tag');\n }\n } else {\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n\n if (ch === 0x21/* ! */) {\n if (!isNamed) {\n tagHandle = state.input.slice(_position - 1, state.position + 1);\n\n if (!PATTERN_TAG_HANDLE.test(tagHandle)) {\n throwError(state, 'named tag handle cannot contain such characters');\n }\n\n isNamed = true;\n _position = state.position + 1;\n } else {\n throwError(state, 'tag suffix cannot contain exclamation marks');\n }\n }\n\n ch = state.input.charCodeAt(++state.position);\n }\n\n tagName = state.input.slice(_position, state.position);\n\n if (PATTERN_FLOW_INDICATORS.test(tagName)) {\n throwError(state, 'tag suffix cannot contain flow indicator characters');\n }\n }\n\n if (tagName && !PATTERN_TAG_URI.test(tagName)) {\n throwError(state, 'tag name cannot contain such characters: ' + tagName);\n }\n\n if (isVerbatim) {\n state.tag = tagName;\n\n } else if (_hasOwnProperty.call(state.tagMap, tagHandle)) {\n state.tag = state.tagMap[tagHandle] + tagName;\n\n } else if (tagHandle === '!') {\n state.tag = '!' + tagName;\n\n } else if (tagHandle === '!!') {\n state.tag = 'tag:yaml.org,2002:' + tagName;\n\n } else {\n throwError(state, 'undeclared tag handle \"' + tagHandle + '\"');\n }\n\n return true;\n}\n\nfunction readAnchorProperty(state) {\n var _position,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x26/* & */) return false;\n\n if (state.anchor !== null) {\n throwError(state, 'duplication of an anchor property');\n }\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an anchor node must contain at least one character');\n }\n\n state.anchor = state.input.slice(_position, state.position);\n return true;\n}\n\nfunction readAlias(state) {\n var _position, alias,\n ch;\n\n ch = state.input.charCodeAt(state.position);\n\n if (ch !== 0x2A/* * */) return false;\n\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch) && !is_FLOW_INDICATOR(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (state.position === _position) {\n throwError(state, 'name of an alias node must contain at least one character');\n }\n\n alias = state.input.slice(_position, state.position);\n\n if (!state.anchorMap.hasOwnProperty(alias)) {\n throwError(state, 'unidentified alias \"' + alias + '\"');\n }\n\n state.result = state.anchorMap[alias];\n skipSeparationSpace(state, true, -1);\n return true;\n}\n\nfunction composeNode(state, parentIndent, nodeContext, allowToSeek, allowCompact) {\n var allowBlockStyles,\n allowBlockScalars,\n allowBlockCollections,\n indentStatus = 1, // 1: this>parent, 0: this=parent, -1: this parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n }\n }\n\n if (indentStatus === 1) {\n while (readTagProperty(state) || readAnchorProperty(state)) {\n if (skipSeparationSpace(state, true, -1)) {\n atNewLine = true;\n allowBlockCollections = allowBlockStyles;\n\n if (state.lineIndent > parentIndent) {\n indentStatus = 1;\n } else if (state.lineIndent === parentIndent) {\n indentStatus = 0;\n } else if (state.lineIndent < parentIndent) {\n indentStatus = -1;\n }\n } else {\n allowBlockCollections = false;\n }\n }\n }\n\n if (allowBlockCollections) {\n allowBlockCollections = atNewLine || allowCompact;\n }\n\n if (indentStatus === 1 || CONTEXT_BLOCK_OUT === nodeContext) {\n if (CONTEXT_FLOW_IN === nodeContext || CONTEXT_FLOW_OUT === nodeContext) {\n flowIndent = parentIndent;\n } else {\n flowIndent = parentIndent + 1;\n }\n\n blockIndent = state.position - state.lineStart;\n\n if (indentStatus === 1) {\n if (allowBlockCollections &&\n (readBlockSequence(state, blockIndent) ||\n readBlockMapping(state, blockIndent, flowIndent)) ||\n readFlowCollection(state, flowIndent)) {\n hasContent = true;\n } else {\n if ((allowBlockScalars && readBlockScalar(state, flowIndent)) ||\n readSingleQuotedScalar(state, flowIndent) ||\n readDoubleQuotedScalar(state, flowIndent)) {\n hasContent = true;\n\n } else if (readAlias(state)) {\n hasContent = true;\n\n if (state.tag !== null || state.anchor !== null) {\n throwError(state, 'alias node should not have any properties');\n }\n\n } else if (readPlainScalar(state, flowIndent, CONTEXT_FLOW_IN === nodeContext)) {\n hasContent = true;\n\n if (state.tag === null) {\n state.tag = '?';\n }\n }\n\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else if (indentStatus === 0) {\n // Special case: block sequences are allowed to have same indentation level as the parent.\n // http://www.yaml.org/spec/1.2/spec.html#id2799784\n hasContent = allowBlockCollections && readBlockSequence(state, blockIndent);\n }\n }\n\n if (state.tag !== null && state.tag !== '!') {\n if (state.tag === '?') {\n for (typeIndex = 0, typeQuantity = state.implicitTypes.length;\n typeIndex < typeQuantity;\n typeIndex += 1) {\n type = state.implicitTypes[typeIndex];\n\n // Implicit resolving is not allowed for non-scalar types, and '?'\n // non-specific tag is only assigned to plain scalars. So, it isn't\n // needed to check for 'kind' conformity.\n\n if (type.resolve(state.result)) { // `state.result` updated in resolver if matched\n state.result = type.construct(state.result);\n state.tag = type.tag;\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n break;\n }\n }\n } else if (_hasOwnProperty.call(state.typeMap[state.kind || 'fallback'], state.tag)) {\n type = state.typeMap[state.kind || 'fallback'][state.tag];\n\n if (state.result !== null && type.kind !== state.kind) {\n throwError(state, 'unacceptable node kind for !<' + state.tag + '> tag; it should be \"' + type.kind + '\", not \"' + state.kind + '\"');\n }\n\n if (!type.resolve(state.result)) { // `state.result` updated in resolver if matched\n throwError(state, 'cannot resolve a node with !<' + state.tag + '> explicit tag');\n } else {\n state.result = type.construct(state.result);\n if (state.anchor !== null) {\n state.anchorMap[state.anchor] = state.result;\n }\n }\n } else {\n throwError(state, 'unknown tag !<' + state.tag + '>');\n }\n }\n\n if (state.listener !== null) {\n state.listener('close', state);\n }\n return state.tag !== null || state.anchor !== null || hasContent;\n}\n\nfunction readDocument(state) {\n var documentStart = state.position,\n _position,\n directiveName,\n directiveArgs,\n hasDirectives = false,\n ch;\n\n state.version = null;\n state.checkLineBreaks = state.legacy;\n state.tagMap = {};\n state.anchorMap = {};\n\n while ((ch = state.input.charCodeAt(state.position)) !== 0) {\n skipSeparationSpace(state, true, -1);\n\n ch = state.input.charCodeAt(state.position);\n\n if (state.lineIndent > 0 || ch !== 0x25/* % */) {\n break;\n }\n\n hasDirectives = true;\n ch = state.input.charCodeAt(++state.position);\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveName = state.input.slice(_position, state.position);\n directiveArgs = [];\n\n if (directiveName.length < 1) {\n throwError(state, 'directive name must not be less than one character in length');\n }\n\n while (ch !== 0) {\n while (is_WHITE_SPACE(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n if (ch === 0x23/* # */) {\n do { ch = state.input.charCodeAt(++state.position); }\n while (ch !== 0 && !is_EOL(ch));\n break;\n }\n\n if (is_EOL(ch)) break;\n\n _position = state.position;\n\n while (ch !== 0 && !is_WS_OR_EOL(ch)) {\n ch = state.input.charCodeAt(++state.position);\n }\n\n directiveArgs.push(state.input.slice(_position, state.position));\n }\n\n if (ch !== 0) readLineBreak(state);\n\n if (_hasOwnProperty.call(directiveHandlers, directiveName)) {\n directiveHandlers[directiveName](state, directiveName, directiveArgs);\n } else {\n throwWarning(state, 'unknown document directive \"' + directiveName + '\"');\n }\n }\n\n skipSeparationSpace(state, true, -1);\n\n if (state.lineIndent === 0 &&\n state.input.charCodeAt(state.position) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 1) === 0x2D/* - */ &&\n state.input.charCodeAt(state.position + 2) === 0x2D/* - */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n\n } else if (hasDirectives) {\n throwError(state, 'directives end mark is expected');\n }\n\n composeNode(state, state.lineIndent - 1, CONTEXT_BLOCK_OUT, false, true);\n skipSeparationSpace(state, true, -1);\n\n if (state.checkLineBreaks &&\n PATTERN_NON_ASCII_LINE_BREAKS.test(state.input.slice(documentStart, state.position))) {\n throwWarning(state, 'non-ASCII line breaks are interpreted as content');\n }\n\n state.documents.push(state.result);\n\n if (state.position === state.lineStart && testDocumentSeparator(state)) {\n\n if (state.input.charCodeAt(state.position) === 0x2E/* . */) {\n state.position += 3;\n skipSeparationSpace(state, true, -1);\n }\n return;\n }\n\n if (state.position < (state.length - 1)) {\n throwError(state, 'end of the stream or a document separator is expected');\n } else {\n return;\n }\n}\n\n\nfunction loadDocuments(input, options) {\n input = String(input);\n options = options || {};\n\n if (input.length !== 0) {\n\n // Add tailing `\\n` if not exists\n if (input.charCodeAt(input.length - 1) !== 0x0A/* LF */ &&\n input.charCodeAt(input.length - 1) !== 0x0D/* CR */) {\n input += '\\n';\n }\n\n // Strip BOM\n if (input.charCodeAt(0) === 0xFEFF) {\n input = input.slice(1);\n }\n }\n\n var state = new State(input, options);\n\n // Use 0 as string terminator. That significantly simplifies bounds check.\n state.input += '\\0';\n\n while (state.input.charCodeAt(state.position) === 0x20/* Space */) {\n state.lineIndent += 1;\n state.position += 1;\n }\n\n while (state.position < (state.length - 1)) {\n readDocument(state);\n }\n\n return state.documents;\n}\n\n\nfunction loadAll(input, iterator, options) {\n var documents = loadDocuments(input, options), index, length;\n\n for (index = 0, length = documents.length; index < length; index += 1) {\n iterator(documents[index]);\n }\n}\n\n\nfunction load(input, options) {\n var documents = loadDocuments(input, options);\n\n if (documents.length === 0) {\n /*eslint-disable no-undefined*/\n return undefined;\n } else if (documents.length === 1) {\n return documents[0];\n }\n throw new YAMLException('expected a single document in the stream, but found more');\n}\n\n\nfunction safeLoadAll(input, output, options) {\n loadAll(input, output, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nfunction safeLoad(input, options) {\n return load(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\n\nmodule.exports.loadAll = loadAll;\nmodule.exports.load = load;\nmodule.exports.safeLoadAll = safeLoadAll;\nmodule.exports.safeLoad = safeLoad;\n","'use strict';\n\n/*eslint-disable no-use-before-define*/\n\nvar common = require('./common');\nvar YAMLException = require('./exception');\nvar DEFAULT_FULL_SCHEMA = require('./schema/default_full');\nvar DEFAULT_SAFE_SCHEMA = require('./schema/default_safe');\n\nvar _toString = Object.prototype.toString;\nvar _hasOwnProperty = Object.prototype.hasOwnProperty;\n\nvar CHAR_TAB = 0x09; /* Tab */\nvar CHAR_LINE_FEED = 0x0A; /* LF */\nvar CHAR_SPACE = 0x20; /* Space */\nvar CHAR_EXCLAMATION = 0x21; /* ! */\nvar CHAR_DOUBLE_QUOTE = 0x22; /* \" */\nvar CHAR_SHARP = 0x23; /* # */\nvar CHAR_PERCENT = 0x25; /* % */\nvar CHAR_AMPERSAND = 0x26; /* & */\nvar CHAR_SINGLE_QUOTE = 0x27; /* ' */\nvar CHAR_ASTERISK = 0x2A; /* * */\nvar CHAR_COMMA = 0x2C; /* , */\nvar CHAR_MINUS = 0x2D; /* - */\nvar CHAR_COLON = 0x3A; /* : */\nvar CHAR_GREATER_THAN = 0x3E; /* > */\nvar CHAR_QUESTION = 0x3F; /* ? */\nvar CHAR_COMMERCIAL_AT = 0x40; /* @ */\nvar CHAR_LEFT_SQUARE_BRACKET = 0x5B; /* [ */\nvar CHAR_RIGHT_SQUARE_BRACKET = 0x5D; /* ] */\nvar CHAR_GRAVE_ACCENT = 0x60; /* ` */\nvar CHAR_LEFT_CURLY_BRACKET = 0x7B; /* { */\nvar CHAR_VERTICAL_LINE = 0x7C; /* | */\nvar CHAR_RIGHT_CURLY_BRACKET = 0x7D; /* } */\n\nvar ESCAPE_SEQUENCES = {};\n\nESCAPE_SEQUENCES[0x00] = '\\\\0';\nESCAPE_SEQUENCES[0x07] = '\\\\a';\nESCAPE_SEQUENCES[0x08] = '\\\\b';\nESCAPE_SEQUENCES[0x09] = '\\\\t';\nESCAPE_SEQUENCES[0x0A] = '\\\\n';\nESCAPE_SEQUENCES[0x0B] = '\\\\v';\nESCAPE_SEQUENCES[0x0C] = '\\\\f';\nESCAPE_SEQUENCES[0x0D] = '\\\\r';\nESCAPE_SEQUENCES[0x1B] = '\\\\e';\nESCAPE_SEQUENCES[0x22] = '\\\\\"';\nESCAPE_SEQUENCES[0x5C] = '\\\\\\\\';\nESCAPE_SEQUENCES[0x85] = '\\\\N';\nESCAPE_SEQUENCES[0xA0] = '\\\\_';\nESCAPE_SEQUENCES[0x2028] = '\\\\L';\nESCAPE_SEQUENCES[0x2029] = '\\\\P';\n\nvar DEPRECATED_BOOLEANS_SYNTAX = [\n 'y', 'Y', 'yes', 'Yes', 'YES', 'on', 'On', 'ON',\n 'n', 'N', 'no', 'No', 'NO', 'off', 'Off', 'OFF'\n];\n\nfunction compileStyleMap(schema, map) {\n var result, keys, index, length, tag, style, type;\n\n if (map === null) return {};\n\n result = {};\n keys = Object.keys(map);\n\n for (index = 0, length = keys.length; index < length; index += 1) {\n tag = keys[index];\n style = String(map[tag]);\n\n if (tag.slice(0, 2) === '!!') {\n tag = 'tag:yaml.org,2002:' + tag.slice(2);\n }\n type = schema.compiledTypeMap['fallback'][tag];\n\n if (type && _hasOwnProperty.call(type.styleAliases, style)) {\n style = type.styleAliases[style];\n }\n\n result[tag] = style;\n }\n\n return result;\n}\n\nfunction encodeHex(character) {\n var string, handle, length;\n\n string = character.toString(16).toUpperCase();\n\n if (character <= 0xFF) {\n handle = 'x';\n length = 2;\n } else if (character <= 0xFFFF) {\n handle = 'u';\n length = 4;\n } else if (character <= 0xFFFFFFFF) {\n handle = 'U';\n length = 8;\n } else {\n throw new YAMLException('code point within a string may not be greater than 0xFFFFFFFF');\n }\n\n return '\\\\' + handle + common.repeat('0', length - string.length) + string;\n}\n\nfunction State(options) {\n this.schema = options['schema'] || DEFAULT_FULL_SCHEMA;\n this.indent = Math.max(1, (options['indent'] || 2));\n this.skipInvalid = options['skipInvalid'] || false;\n this.flowLevel = (common.isNothing(options['flowLevel']) ? -1 : options['flowLevel']);\n this.styleMap = compileStyleMap(this.schema, options['styles'] || null);\n this.sortKeys = options['sortKeys'] || false;\n this.lineWidth = options['lineWidth'] || 80;\n this.noRefs = options['noRefs'] || false;\n this.noCompatMode = options['noCompatMode'] || false;\n\n this.implicitTypes = this.schema.compiledImplicit;\n this.explicitTypes = this.schema.compiledExplicit;\n\n this.tag = null;\n this.result = '';\n\n this.duplicates = [];\n this.usedDuplicates = null;\n}\n\n// Indents every line in a string. Empty lines (\\n only) are not indented.\nfunction indentString(string, spaces) {\n var ind = common.repeat(' ', spaces),\n position = 0,\n next = -1,\n result = '',\n line,\n length = string.length;\n\n while (position < length) {\n next = string.indexOf('\\n', position);\n if (next === -1) {\n line = string.slice(position);\n position = length;\n } else {\n line = string.slice(position, next + 1);\n position = next + 1;\n }\n\n if (line.length && line !== '\\n') result += ind;\n\n result += line;\n }\n\n return result;\n}\n\nfunction generateNextLine(state, level) {\n return '\\n' + common.repeat(' ', state.indent * level);\n}\n\nfunction testImplicitResolving(state, str) {\n var index, length, type;\n\n for (index = 0, length = state.implicitTypes.length; index < length; index += 1) {\n type = state.implicitTypes[index];\n\n if (type.resolve(str)) {\n return true;\n }\n }\n\n return false;\n}\n\n// [33] s-white ::= s-space | s-tab\nfunction isWhitespace(c) {\n return c === CHAR_SPACE || c === CHAR_TAB;\n}\n\n// Returns true if the character can be printed without escaping.\n// From YAML 1.2: \"any allowed characters known to be non-printable\n// should also be escaped. [However,] This isn’t mandatory\"\n// Derived from nb-char - \\t - #x85 - #xA0 - #x2028 - #x2029.\nfunction isPrintable(c) {\n return (0x00020 <= c && c <= 0x00007E)\n || ((0x000A1 <= c && c <= 0x00D7FF) && c !== 0x2028 && c !== 0x2029)\n || ((0x0E000 <= c && c <= 0x00FFFD) && c !== 0xFEFF /* BOM */)\n || (0x10000 <= c && c <= 0x10FFFF);\n}\n\n// Simplified test for values allowed after the first character in plain style.\nfunction isPlainSafe(c) {\n // Uses a subset of nb-char - c-flow-indicator - \":\" - \"#\"\n // where nb-char ::= c-printable - b-char - c-byte-order-mark.\n return isPrintable(c) && c !== 0xFEFF\n // - c-flow-indicator\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // - \":\" - \"#\"\n && c !== CHAR_COLON\n && c !== CHAR_SHARP;\n}\n\n// Simplified test for values allowed as the first character in plain style.\nfunction isPlainSafeFirst(c) {\n // Uses a subset of ns-char - c-indicator\n // where ns-char = nb-char - s-white.\n return isPrintable(c) && c !== 0xFEFF\n && !isWhitespace(c) // - s-white\n // - (c-indicator ::=\n // “-” | “?” | “:” | “,” | “[” | “]” | “{” | “}”\n && c !== CHAR_MINUS\n && c !== CHAR_QUESTION\n && c !== CHAR_COLON\n && c !== CHAR_COMMA\n && c !== CHAR_LEFT_SQUARE_BRACKET\n && c !== CHAR_RIGHT_SQUARE_BRACKET\n && c !== CHAR_LEFT_CURLY_BRACKET\n && c !== CHAR_RIGHT_CURLY_BRACKET\n // | “#” | “&” | “*” | “!” | “|” | “>” | “'” | “\"”\n && c !== CHAR_SHARP\n && c !== CHAR_AMPERSAND\n && c !== CHAR_ASTERISK\n && c !== CHAR_EXCLAMATION\n && c !== CHAR_VERTICAL_LINE\n && c !== CHAR_GREATER_THAN\n && c !== CHAR_SINGLE_QUOTE\n && c !== CHAR_DOUBLE_QUOTE\n // | “%” | “@” | “`”)\n && c !== CHAR_PERCENT\n && c !== CHAR_COMMERCIAL_AT\n && c !== CHAR_GRAVE_ACCENT;\n}\n\nvar STYLE_PLAIN = 1,\n STYLE_SINGLE = 2,\n STYLE_LITERAL = 3,\n STYLE_FOLDED = 4,\n STYLE_DOUBLE = 5;\n\n// Determines which scalar styles are possible and returns the preferred style.\n// lineWidth = -1 => no limit.\n// Pre-conditions: str.length > 0.\n// Post-conditions:\n// STYLE_PLAIN or STYLE_SINGLE => no \\n are in the string.\n// STYLE_LITERAL => no lines are suitable for folding (or lineWidth is -1).\n// STYLE_FOLDED => a line > lineWidth and can be folded (and lineWidth != -1).\nfunction chooseScalarStyle(string, singleLineOnly, indentPerLevel, lineWidth, testAmbiguousType) {\n var i;\n var char;\n var hasLineBreak = false;\n var hasFoldableLine = false; // only checked if shouldTrackWidth\n var shouldTrackWidth = lineWidth !== -1;\n var previousLineBreak = -1; // count the first line correctly\n var plain = isPlainSafeFirst(string.charCodeAt(0))\n && !isWhitespace(string.charCodeAt(string.length - 1));\n\n if (singleLineOnly) {\n // Case: no block styles.\n // Check for disallowed characters to rule out plain and single.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n } else {\n // Case: block styles permitted.\n for (i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n if (char === CHAR_LINE_FEED) {\n hasLineBreak = true;\n // Check if any line can be folded.\n if (shouldTrackWidth) {\n hasFoldableLine = hasFoldableLine ||\n // Foldable line = too long, and not more-indented.\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' ');\n previousLineBreak = i;\n }\n } else if (!isPrintable(char)) {\n return STYLE_DOUBLE;\n }\n plain = plain && isPlainSafe(char);\n }\n // in case the end is missing a \\n\n hasFoldableLine = hasFoldableLine || (shouldTrackWidth &&\n (i - previousLineBreak - 1 > lineWidth &&\n string[previousLineBreak + 1] !== ' '));\n }\n // Although every style can represent \\n without escaping, prefer block styles\n // for multiline, since they're more readable and they don't add empty lines.\n // Also prefer folding a super-long line.\n if (!hasLineBreak && !hasFoldableLine) {\n // Strings interpretable as another type have to be quoted;\n // e.g. the string 'true' vs. the boolean true.\n return plain && !testAmbiguousType(string)\n ? STYLE_PLAIN : STYLE_SINGLE;\n }\n // Edge case: block indentation indicator can only have one digit.\n if (string[0] === ' ' && indentPerLevel > 9) {\n return STYLE_DOUBLE;\n }\n // At this point we know block styles are valid.\n // Prefer literal style unless we want to fold.\n return hasFoldableLine ? STYLE_FOLDED : STYLE_LITERAL;\n}\n\n// Note: line breaking/folding is implemented for only the folded style.\n// NB. We drop the last trailing newline (if any) of a returned block scalar\n// since the dumper adds its own newline. This always works:\n// • No ending newline => unaffected; already using strip \"-\" chomping.\n// • Ending newline => removed then restored.\n// Importantly, this keeps the \"+\" chomp indicator from gaining an extra line.\nfunction writeScalar(state, string, level, iskey) {\n state.dump = (function () {\n if (string.length === 0) {\n return \"''\";\n }\n if (!state.noCompatMode &&\n DEPRECATED_BOOLEANS_SYNTAX.indexOf(string) !== -1) {\n return \"'\" + string + \"'\";\n }\n\n var indent = state.indent * Math.max(1, level); // no 0-indent scalars\n // As indentation gets deeper, let the width decrease monotonically\n // to the lower bound min(state.lineWidth, 40).\n // Note that this implies\n // state.lineWidth ≤ 40 + state.indent: width is fixed at the lower bound.\n // state.lineWidth > 40 + state.indent: width decreases until the lower bound.\n // This behaves better than a constant minimum width which disallows narrower options,\n // or an indent threshold which causes the width to suddenly increase.\n var lineWidth = state.lineWidth === -1\n ? -1 : Math.max(Math.min(state.lineWidth, 40), state.lineWidth - indent);\n\n // Without knowing if keys are implicit/explicit, assume implicit for safety.\n var singleLineOnly = iskey\n // No block styles in flow mode.\n || (state.flowLevel > -1 && level >= state.flowLevel);\n function testAmbiguity(string) {\n return testImplicitResolving(state, string);\n }\n\n switch (chooseScalarStyle(string, singleLineOnly, state.indent, lineWidth, testAmbiguity)) {\n case STYLE_PLAIN:\n return string;\n case STYLE_SINGLE:\n return \"'\" + string.replace(/'/g, \"''\") + \"'\";\n case STYLE_LITERAL:\n return '|' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(string, indent));\n case STYLE_FOLDED:\n return '>' + blockHeader(string, state.indent)\n + dropEndingNewline(indentString(foldString(string, lineWidth), indent));\n case STYLE_DOUBLE:\n return '\"' + escapeString(string, lineWidth) + '\"';\n default:\n throw new YAMLException('impossible error: invalid scalar style');\n }\n }());\n}\n\n// Pre-conditions: string is valid for a block scalar, 1 <= indentPerLevel <= 9.\nfunction blockHeader(string, indentPerLevel) {\n var indentIndicator = (string[0] === ' ') ? String(indentPerLevel) : '';\n\n // note the special case: the string '\\n' counts as a \"trailing\" empty line.\n var clip = string[string.length - 1] === '\\n';\n var keep = clip && (string[string.length - 2] === '\\n' || string === '\\n');\n var chomp = keep ? '+' : (clip ? '' : '-');\n\n return indentIndicator + chomp + '\\n';\n}\n\n// (See the note for writeScalar.)\nfunction dropEndingNewline(string) {\n return string[string.length - 1] === '\\n' ? string.slice(0, -1) : string;\n}\n\n// Note: a long line without a suitable break point will exceed the width limit.\n// Pre-conditions: every char in str isPrintable, str.length > 0, width > 0.\nfunction foldString(string, width) {\n // In folded style, $k$ consecutive newlines output as $k+1$ newlines—\n // unless they're before or after a more-indented line, or at the very\n // beginning or end, in which case $k$ maps to $k$.\n // Therefore, parse each chunk as newline(s) followed by a content line.\n var lineRe = /(\\n+)([^\\n]*)/g;\n\n // first line (possibly an empty line)\n var result = (function () {\n var nextLF = string.indexOf('\\n');\n nextLF = nextLF !== -1 ? nextLF : string.length;\n lineRe.lastIndex = nextLF;\n return foldLine(string.slice(0, nextLF), width);\n }());\n // If we haven't reached the first content line yet, don't add an extra \\n.\n var prevMoreIndented = string[0] === '\\n' || string[0] === ' ';\n var moreIndented;\n\n // rest of the lines\n var match;\n while ((match = lineRe.exec(string))) {\n var prefix = match[1], line = match[2];\n moreIndented = (line[0] === ' ');\n result += prefix\n + (!prevMoreIndented && !moreIndented && line !== ''\n ? '\\n' : '')\n + foldLine(line, width);\n prevMoreIndented = moreIndented;\n }\n\n return result;\n}\n\n// Greedy line breaking.\n// Picks the longest line under the limit each time,\n// otherwise settles for the shortest line over the limit.\n// NB. More-indented lines *cannot* be folded, as that would add an extra \\n.\nfunction foldLine(line, width) {\n if (line === '' || line[0] === ' ') return line;\n\n // Since a more-indented line adds a \\n, breaks can't be followed by a space.\n var breakRe = / [^ ]/g; // note: the match index will always be <= length-2.\n var match;\n // start is an inclusive index. end, curr, and next are exclusive.\n var start = 0, end, curr = 0, next = 0;\n var result = '';\n\n // Invariants: 0 <= start <= length-1.\n // 0 <= curr <= next <= max(0, length-2). curr - start <= width.\n // Inside the loop:\n // A match implies length >= 2, so curr and next are <= length-2.\n while ((match = breakRe.exec(line))) {\n next = match.index;\n // maintain invariant: curr - start <= width\n if (next - start > width) {\n end = (curr > start) ? curr : next; // derive end <= length-2\n result += '\\n' + line.slice(start, end);\n // skip the space that was output as \\n\n start = end + 1; // derive start <= length-1\n }\n curr = next;\n }\n\n // By the invariants, start <= length-1, so there is something left over.\n // It is either the whole string or a part starting from non-whitespace.\n result += '\\n';\n // Insert a break if the remainder is too long and there is a break available.\n if (line.length - start > width && curr > start) {\n result += line.slice(start, curr) + '\\n' + line.slice(curr + 1);\n } else {\n result += line.slice(start);\n }\n\n return result.slice(1); // drop extra \\n joiner\n}\n\n// Escapes a double-quoted string.\nfunction escapeString(string) {\n var result = '';\n var char;\n var escapeSeq;\n\n for (var i = 0; i < string.length; i++) {\n char = string.charCodeAt(i);\n escapeSeq = ESCAPE_SEQUENCES[char];\n result += !escapeSeq && isPrintable(char)\n ? string[i]\n : escapeSeq || encodeHex(char);\n }\n\n return result;\n}\n\nfunction writeFlowSequence(state, level, object) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level, object[index], false, false)) {\n if (index !== 0) _result += ', ';\n _result += state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = '[' + _result + ']';\n}\n\nfunction writeBlockSequence(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n index,\n length;\n\n for (index = 0, length = object.length; index < length; index += 1) {\n // Write only valid elements.\n if (writeNode(state, level + 1, object[index], true, true)) {\n if (!compact || index !== 0) {\n _result += generateNextLine(state, level);\n }\n _result += '- ' + state.dump;\n }\n }\n\n state.tag = _tag;\n state.dump = _result || '[]'; // Empty sequence if no valid values.\n}\n\nfunction writeFlowMapping(state, level, object) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n pairBuffer;\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (index !== 0) pairBuffer += ', ';\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level, objectKey, false, false)) {\n continue; // Skip this pair because of invalid key;\n }\n\n if (state.dump.length > 1024) pairBuffer += '? ';\n\n pairBuffer += state.dump + ': ';\n\n if (!writeNode(state, level, objectValue, false, false)) {\n continue; // Skip this pair because of invalid value.\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = '{' + _result + '}';\n}\n\nfunction writeBlockMapping(state, level, object, compact) {\n var _result = '',\n _tag = state.tag,\n objectKeyList = Object.keys(object),\n index,\n length,\n objectKey,\n objectValue,\n explicitPair,\n pairBuffer;\n\n // Allow sorting keys so that the output file is deterministic\n if (state.sortKeys === true) {\n // Default sorting\n objectKeyList.sort();\n } else if (typeof state.sortKeys === 'function') {\n // Custom sort function\n objectKeyList.sort(state.sortKeys);\n } else if (state.sortKeys) {\n // Something is wrong\n throw new YAMLException('sortKeys must be a boolean or a function');\n }\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n pairBuffer = '';\n\n if (!compact || index !== 0) {\n pairBuffer += generateNextLine(state, level);\n }\n\n objectKey = objectKeyList[index];\n objectValue = object[objectKey];\n\n if (!writeNode(state, level + 1, objectKey, true, true, true)) {\n continue; // Skip this pair because of invalid key.\n }\n\n explicitPair = (state.tag !== null && state.tag !== '?') ||\n (state.dump && state.dump.length > 1024);\n\n if (explicitPair) {\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += '?';\n } else {\n pairBuffer += '? ';\n }\n }\n\n pairBuffer += state.dump;\n\n if (explicitPair) {\n pairBuffer += generateNextLine(state, level);\n }\n\n if (!writeNode(state, level + 1, objectValue, true, explicitPair)) {\n continue; // Skip this pair because of invalid value.\n }\n\n if (state.dump && CHAR_LINE_FEED === state.dump.charCodeAt(0)) {\n pairBuffer += ':';\n } else {\n pairBuffer += ': ';\n }\n\n pairBuffer += state.dump;\n\n // Both key and value are valid.\n _result += pairBuffer;\n }\n\n state.tag = _tag;\n state.dump = _result || '{}'; // Empty mapping if no valid pairs.\n}\n\nfunction detectType(state, object, explicit) {\n var _result, typeList, index, length, type, style;\n\n typeList = explicit ? state.explicitTypes : state.implicitTypes;\n\n for (index = 0, length = typeList.length; index < length; index += 1) {\n type = typeList[index];\n\n if ((type.instanceOf || type.predicate) &&\n (!type.instanceOf || ((typeof object === 'object') && (object instanceof type.instanceOf))) &&\n (!type.predicate || type.predicate(object))) {\n\n state.tag = explicit ? type.tag : '?';\n\n if (type.represent) {\n style = state.styleMap[type.tag] || type.defaultStyle;\n\n if (_toString.call(type.represent) === '[object Function]') {\n _result = type.represent(object, style);\n } else if (_hasOwnProperty.call(type.represent, style)) {\n _result = type.represent[style](object, style);\n } else {\n throw new YAMLException('!<' + type.tag + '> tag resolver accepts not \"' + style + '\" style');\n }\n\n state.dump = _result;\n }\n\n return true;\n }\n }\n\n return false;\n}\n\n// Serializes `object` and writes it to global `result`.\n// Returns true on success, or false on invalid object.\n//\nfunction writeNode(state, level, object, block, compact, iskey) {\n state.tag = null;\n state.dump = object;\n\n if (!detectType(state, object, false)) {\n detectType(state, object, true);\n }\n\n var type = _toString.call(state.dump);\n\n if (block) {\n block = (state.flowLevel < 0 || state.flowLevel > level);\n }\n\n var objectOrArray = type === '[object Object]' || type === '[object Array]',\n duplicateIndex,\n duplicate;\n\n if (objectOrArray) {\n duplicateIndex = state.duplicates.indexOf(object);\n duplicate = duplicateIndex !== -1;\n }\n\n if ((state.tag !== null && state.tag !== '?') || duplicate || (state.indent !== 2 && level > 0)) {\n compact = false;\n }\n\n if (duplicate && state.usedDuplicates[duplicateIndex]) {\n state.dump = '*ref_' + duplicateIndex;\n } else {\n if (objectOrArray && duplicate && !state.usedDuplicates[duplicateIndex]) {\n state.usedDuplicates[duplicateIndex] = true;\n }\n if (type === '[object Object]') {\n if (block && (Object.keys(state.dump).length !== 0)) {\n writeBlockMapping(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowMapping(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object Array]') {\n if (block && (state.dump.length !== 0)) {\n writeBlockSequence(state, level, state.dump, compact);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + state.dump;\n }\n } else {\n writeFlowSequence(state, level, state.dump);\n if (duplicate) {\n state.dump = '&ref_' + duplicateIndex + ' ' + state.dump;\n }\n }\n } else if (type === '[object String]') {\n if (state.tag !== '?') {\n writeScalar(state, state.dump, level, iskey);\n }\n } else {\n if (state.skipInvalid) return false;\n throw new YAMLException('unacceptable kind of an object to dump ' + type);\n }\n\n if (state.tag !== null && state.tag !== '?') {\n state.dump = '!<' + state.tag + '> ' + state.dump;\n }\n }\n\n return true;\n}\n\nfunction getDuplicateReferences(object, state) {\n var objects = [],\n duplicatesIndexes = [],\n index,\n length;\n\n inspectNode(object, objects, duplicatesIndexes);\n\n for (index = 0, length = duplicatesIndexes.length; index < length; index += 1) {\n state.duplicates.push(objects[duplicatesIndexes[index]]);\n }\n state.usedDuplicates = new Array(length);\n}\n\nfunction inspectNode(object, objects, duplicatesIndexes) {\n var objectKeyList,\n index,\n length;\n\n if (object !== null && typeof object === 'object') {\n index = objects.indexOf(object);\n if (index !== -1) {\n if (duplicatesIndexes.indexOf(index) === -1) {\n duplicatesIndexes.push(index);\n }\n } else {\n objects.push(object);\n\n if (Array.isArray(object)) {\n for (index = 0, length = object.length; index < length; index += 1) {\n inspectNode(object[index], objects, duplicatesIndexes);\n }\n } else {\n objectKeyList = Object.keys(object);\n\n for (index = 0, length = objectKeyList.length; index < length; index += 1) {\n inspectNode(object[objectKeyList[index]], objects, duplicatesIndexes);\n }\n }\n }\n }\n}\n\nfunction dump(input, options) {\n options = options || {};\n\n var state = new State(options);\n\n if (!state.noRefs) getDuplicateReferences(input, state);\n\n if (writeNode(state, 0, input, true, true)) return state.dump + '\\n';\n\n return '';\n}\n\nfunction safeDump(input, options) {\n return dump(input, common.extend({ schema: DEFAULT_SAFE_SCHEMA }, options));\n}\n\nmodule.exports.dump = dump;\nmodule.exports.safeDump = safeDump;\n","'use strict';\n\n\nvar loader = require('./js-yaml/loader');\nvar dumper = require('./js-yaml/dumper');\n\n\nfunction deprecated(name) {\n return function () {\n throw new Error('Function ' + name + ' is deprecated and cannot be used.');\n };\n}\n\n\nmodule.exports.Type = require('./js-yaml/type');\nmodule.exports.Schema = require('./js-yaml/schema');\nmodule.exports.FAILSAFE_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.JSON_SCHEMA = require('./js-yaml/schema/json');\nmodule.exports.CORE_SCHEMA = require('./js-yaml/schema/core');\nmodule.exports.DEFAULT_SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_FULL_SCHEMA = require('./js-yaml/schema/default_full');\nmodule.exports.load = loader.load;\nmodule.exports.loadAll = loader.loadAll;\nmodule.exports.safeLoad = loader.safeLoad;\nmodule.exports.safeLoadAll = loader.safeLoadAll;\nmodule.exports.dump = dumper.dump;\nmodule.exports.safeDump = dumper.safeDump;\nmodule.exports.YAMLException = require('./js-yaml/exception');\n\n// Deprecated schema names from JS-YAML 2.0.x\nmodule.exports.MINIMAL_SCHEMA = require('./js-yaml/schema/failsafe');\nmodule.exports.SAFE_SCHEMA = require('./js-yaml/schema/default_safe');\nmodule.exports.DEFAULT_SCHEMA = require('./js-yaml/schema/default_full');\n\n// Deprecated functions from JS-YAML 1.x.x\nmodule.exports.scan = deprecated('scan');\nmodule.exports.parse = deprecated('parse');\nmodule.exports.compose = deprecated('compose');\nmodule.exports.addConstructor = deprecated('addConstructor');\n","export default function(dom, data) {\n let head = dom.querySelector(\"head\");\n let appendHead = html => appendHtml(head, html);\n\n function meta(name, content) {\n if (content)\n appendHead(``);\n }\n\n appendHead(`\n \n \n \n \n ${data.title}\n `);\n\n appendHead(`\n \n \n \n `);\n data.authors.forEach((a) => {\n appendHtml(head, `\n `)\n });\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n \n \n \n \n \n \n \n `);\n\n appendHead(`\n \n `);\n \n let journal = data.journal || {};\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n let publishedYear = data.published.getFullYear();\n let publishedMonthPadded = zeroPad(data.published.getMonth() + 1);\n let publishedDayPadded = zeroPad(data.published.getDate());\n meta(\"citation_title\", data.title);\n meta(\"citation_publication_date\", data.published? `${publishedYear}/${publishedMonthPadded}/${publishedDayPadded}` : undefined);\n meta(\"citation_fulltext_html_url\", data.url);\n meta(\"citation_volume\", data.volume);\n meta(\"citation_issue\", data.issue);\n meta(\"citation_firstpage\", data.doiSuffix? `e${data.doiSuffix}` : undefined);\n meta(\"citation_doi\", data.doi);\n meta(\"citation_journal_title\", journal.name);\n meta(\"citation_journal_abbrev\", journal.nameAbbrev);\n meta(\"citation_issn\", journal.issn);\n meta(\"citation_publisher\", journal.publisher);\n\n (data.authors || []).forEach((a) => {\n meta(\"citation_author\", `${a.lastName}, ${a.firstName}`);\n meta(\"citation_author_institution\", a.affiliation);\n });\n\n if (data.citations) {\n let citationKeys = Object.keys(data.citations);\n citationKeys.forEach(key =>\n meta(\"citation_reference\", citation_meta_content(data.citations[key]) )\n );\n }\n}\n\n\nfunction appendHtml(el, html) {\n el.innerHTML += html;\n}\n\nfunction citation_meta_content(ref){\n var content = `citation_title=${ref.title};`;\n ref.author.split(\" and \").forEach(author => {\n content += `citation_author=${author.trim()};`;\n });\n if (\"journal\" in ref){\n content += `citation_journal_title=${ref.journal};`;\n }\n if (\"volume\" in ref) {\n content += `citation_volume=${ref.volume};`;\n }\n if (\"issue\" in ref || \"number\" in ref){\n content += `citation_number=${ref.issue || ref.number};`;\n }\n /*content += `citation_first_page=${};`;\n content += `citation_publication_date=${};`;*/\n return content;\n}\n","import html from \"./components/html\";\nimport styles from \"./components/styles\";\nimport frontMatter from \"./components/front-matter\";\nimport bibliography from \"./components/bibliography\";\nimport expandData from \"./components/expand-data\";\nimport meta from \"./components/meta\";\nimport header from \"./components/header\";\nimport appendix from \"./components/appendix\";\nimport footer from \"./components/footer\";\nimport citation from \"./components/citation\";\nimport markdown from \"./components/markdown\";\nimport code from \"./components/code\";\nimport testData from \"./test-data\";\n\n\nfunction render(dom, data) {\n data = data || {};\n html(dom);\n styles(dom);\n document.addEventListener(\"DOMContentLoaded\", function(event) {\n frontMatter(dom, data);\n bibliography(dom, data);\n expandData(dom, data);\n meta(dom, data);\n header(dom, data);\n appendix(dom, data);\n footer(dom, data);\n markdown(dom, data);\n code(dom, data);\n citation(dom, data);\n console.log(\"final data:\")\n for (var k in data) {console.log(\" \", k, \": \", data[k])}\n });\n}\n\n\nif(window.document) {\n render(window.document)//, testData);\n}\n\nexport default render;\n","export default function(dom) {\n if (!dom.querySelector(\"html\").getAttribute(\"lang\")) {\n dom.querySelector(\"html\").setAttribute(\"lang\", \"en\")\n }\n\n let head = dom.querySelector(\"head\");\n\n if (!dom.querySelector(\"meta[charset]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"charset\", \"utf-8\");\n head.appendChild(meta);\n }\n if (!dom.querySelector(\"meta[name=viewport]\")) {\n let meta = dom.createElement(\"meta\");\n meta.setAttribute(\"name\", \"viewport\");\n meta.setAttribute(\"content\", \"width=device-width, initial-scale=1\");\n head.appendChild(meta);\n }\n}\n","import base from './styles-base.css';\nimport layout from './styles-layout.css';\nimport article from './styles-article.css';\nimport code from './styles-code.css';\n\nexport default function(dom) {\n let s = dom.createElement(\"style\");\n s.textContent = base + layout + article + code;\n dom.querySelector(\"head\").appendChild(s);\n}\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:str', {\n kind: 'scalar',\n construct: function (data) { return data !== null ? data : ''; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:seq', {\n kind: 'sequence',\n construct: function (data) { return data !== null ? data : []; }\n});\n","'use strict';\n\nvar Type = require('../type');\n\nmodule.exports = new Type('tag:yaml.org,2002:map', {\n kind: 'mapping',\n construct: function (data) { return data !== null ? data : {}; }\n});\n","// Standard YAML's Failsafe schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2802346\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n explicit: [\n require('../type/str'),\n require('../type/seq'),\n require('../type/map')\n ]\n});\n","// Standard YAML's JSON schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2803231\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, this schema is not such strict as defined in the YAML specification.\n// It allows numbers in binary notaion, use `Null` and `NULL` as `null`, etc.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./failsafe')\n ],\n implicit: [\n require('../type/null'),\n require('../type/bool'),\n require('../type/int'),\n require('../type/float')\n ]\n});\n","// Standard YAML's Core schema.\n// http://www.yaml.org/spec/1.2/spec.html#id2804923\n//\n// NOTE: JS-YAML does not support schema-specific tag resolution restrictions.\n// So, Core schema has no distinctions from JSON schema is JS-YAML.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./json')\n ]\n});\n","// JS-YAML's default schema for `safeLoad` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on standard YAML's Core schema and includes most of\n// extra types described at YAML tag repository. (http://yaml.org/type/)\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = new Schema({\n include: [\n require('./core')\n ],\n implicit: [\n require('../type/timestamp'),\n require('../type/merge')\n ],\n explicit: [\n require('../type/binary'),\n require('../type/omap'),\n require('../type/pairs'),\n require('../type/set')\n ]\n});\n","// JS-YAML's default schema for `load` function.\n// It is not described in the YAML specification.\n//\n// This schema is based on JS-YAML's default safe schema and includes\n// JavaScript-specific types: !!js/undefined, !!js/regexp and !!js/function.\n//\n// Also this schema is used as default base schema at `Schema.create` function.\n\n\n'use strict';\n\n\nvar Schema = require('../schema');\n\n\nmodule.exports = Schema.DEFAULT = new Schema({\n include: [\n require('./default_safe')\n ],\n explicit: [\n require('../type/js/undefined'),\n require('../type/js/regexp'),\n require('../type/js/function')\n ]\n});\n","'use strict';\n\n\nvar yaml = require('./lib/js-yaml.js');\n\n\nmodule.exports = yaml;\n","import ymlParse from \"js-yaml\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/front-matter\"]');\n\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let text = el.textContent;\n let localData = ymlParse.safeLoad(text);\n\n data.title = localData.title;\n data.description = localData.description;\n data.published = new Date(localData.published);\n data.updated = new Date(localData.published || localData.updated);\n\n data.authors = localData.authors.map((author, i) =>{\n let a = {};\n let name = Object.keys(author)[0];\n let names = name.split(\" \");\n a.firstName = names.slice(0, names.length - 1).join(\" \");\n a.lastName = names[names.length -1];\n a.personalURL = author[name];\n if(localData.affiliations[i]) {\n let affiliation = Object.keys(localData.affiliations[i])[0];\n a.affiliation = affiliation;\n a.affiliationURL = localData.affiliations[i][affiliation];\n }\n return a;\n });\n \n }\n\n}\n","/* start bibtexParse 0.0.22 */\n\n//Original work by Henrik Muehe (c) 2010\n//\n//CommonJS port by Mikola Lysenko 2013\n//\n//Port to Browser lib by ORCID / RCPETERS\n//\n//Issues:\n//no comment handling within strings\n//no string concatenation\n//no variable values yet\n//Grammar implemented here:\n//bibtex -> (string | preamble | comment | entry)*;\n//string -> '@STRING' '{' key_equals_value '}';\n//preamble -> '@PREAMBLE' '{' value '}';\n//comment -> '@COMMENT' '{' value '}';\n//entry -> '@' key '{' key ',' key_value_list '}';\n//key_value_list -> key_equals_value (',' key_equals_value)*;\n//key_equals_value -> key '=' value;\n//value -> value_quotes | value_braces | key;\n//value_quotes -> '\"' .*? '\"'; // not quite\n//value_braces -> '{' .*? '\"'; // not quite\n(function(exports) {\n\n function BibtexParser() {\n \n this.months = [\"jan\", \"feb\", \"mar\", \"apr\", \"may\", \"jun\", \"jul\", \"aug\", \"sep\", \"oct\", \"nov\", \"dec\"];\n this.notKey = [',','{','}',' ','='];\n this.pos = 0;\n this.input = \"\";\n this.entries = new Array();\n\n this.currentEntry = \"\";\n\n this.setInput = function(t) {\n this.input = t;\n };\n\n this.getEntries = function() {\n return this.entries;\n };\n\n this.isWhitespace = function(s) {\n return (s == ' ' || s == '\\r' || s == '\\t' || s == '\\n');\n };\n\n this.match = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n this.pos += s.length;\n } else {\n throw \"Token mismatch, expected \" + s + \", found \"\n + this.input.substring(this.pos);\n };\n this.skipWhitespace(canCommentOut);\n };\n\n this.tryMatch = function(s, canCommentOut) {\n if (canCommentOut == undefined || canCommentOut == null)\n canCommentOut = true;\n this.skipWhitespace(canCommentOut);\n if (this.input.substring(this.pos, this.pos + s.length) == s) {\n return true;\n } else {\n return false;\n };\n this.skipWhitespace(canCommentOut);\n };\n\n /* when search for a match all text can be ignored, not just white space */\n this.matchAt = function() {\n while (this.input.length > this.pos && this.input[this.pos] != '@') {\n this.pos++;\n };\n\n if (this.input[this.pos] == '@') {\n return true;\n };\n return false;\n };\n\n this.skipWhitespace = function(canCommentOut) {\n while (this.isWhitespace(this.input[this.pos])) {\n this.pos++;\n };\n if (this.input[this.pos] == \"%\" && canCommentOut == true) {\n while (this.input[this.pos] != \"\\n\") {\n this.pos++;\n };\n this.skipWhitespace(canCommentOut);\n };\n };\n\n this.value_braces = function() {\n var bracecount = 0;\n this.match(\"{\", false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '}') {\n if (bracecount > 0) {\n bracecount--;\n } else {\n var end = this.pos;\n this.match(\"}\", false);\n return this.input.substring(start, end);\n };\n } else if (this.input[this.pos] == '{') {\n bracecount++;\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value\";\n };\n };\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.value_comment = function() {\n var str = '';\n var brcktCnt = 0;\n while (!(this.tryMatch(\"}\", false) && brcktCnt == 0)) {\n str = str + this.input[this.pos];\n if (this.input[this.pos] == '{')\n brcktCnt++;\n if (this.input[this.pos] == '}')\n brcktCnt--;\n if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n this.pos++;\n };\n return str;\n };\n\n this.value_quotes = function() {\n this.match('\"', false);\n var start = this.pos;\n var escaped = false;\n while (true) {\n if (!escaped) {\n if (this.input[this.pos] == '\"') {\n var end = this.pos;\n this.match('\"', false);\n return this.input.substring(start, end);\n } else if (this.pos >= this.input.length - 1) {\n throw \"Unterminated value:\" + this.input.substring(start);\n };\n }\n if (this.input[this.pos] == '\\\\' && escaped == false)\n escaped = true;\n else\n escaped = false;\n this.pos++;\n };\n };\n\n this.single_value = function() {\n var start = this.pos;\n if (this.tryMatch(\"{\")) {\n return this.value_braces();\n } else if (this.tryMatch('\"')) {\n return this.value_quotes();\n } else {\n var k = this.key();\n if (k.match(\"^[0-9]+$\"))\n return k;\n else if (this.months.indexOf(k.toLowerCase()) >= 0)\n return k.toLowerCase();\n else\n throw \"Value expected:\" + this.input.substring(start) + ' for key: ' + k;\n \n };\n };\n\n this.value = function() {\n var values = [];\n values.push(this.single_value());\n while (this.tryMatch(\"#\")) {\n this.match(\"#\");\n values.push(this.single_value());\n };\n return values.join(\"\");\n };\n\n this.key = function() {\n var start = this.pos;\n while (true) {\n if (this.pos >= this.input.length) {\n throw \"Runaway key\";\n };\n // а-яА-Я is Cyrillic\n //console.log(this.input[this.pos]);\n if (this.notKey.indexOf(this.input[this.pos]) >= 0) {\n return this.input.substring(start, this.pos);\n } else {\n this.pos++;\n \n };\n };\n };\n\n this.key_equals_value = function() {\n var key = this.key();\n if (this.tryMatch(\"=\")) {\n this.match(\"=\");\n var val = this.value();\n return [ key, val ];\n } else {\n throw \"... = value expected, equals sign missing:\"\n + this.input.substring(this.pos);\n };\n };\n\n this.key_value_list = function() {\n var kv = this.key_equals_value();\n this.currentEntry['entryTags'] = {};\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n while (this.tryMatch(\",\")) {\n this.match(\",\");\n // fixes problems with commas at the end of a list\n if (this.tryMatch(\"}\")) {\n break;\n }\n ;\n kv = this.key_equals_value();\n this.currentEntry['entryTags'][kv[0]] = kv[1];\n };\n };\n\n this.entry_body = function(d) {\n this.currentEntry = {};\n this.currentEntry['citationKey'] = this.key();\n this.currentEntry['entryType'] = d.substring(1);\n this.match(\",\");\n this.key_value_list();\n this.entries.push(this.currentEntry);\n };\n\n this.directive = function() {\n this.match(\"@\");\n return \"@\" + this.key();\n };\n\n this.preamble = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'PREAMBLE';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.comment = function() {\n this.currentEntry = {};\n this.currentEntry['entryType'] = 'COMMENT';\n this.currentEntry['entry'] = this.value_comment();\n this.entries.push(this.currentEntry);\n };\n\n this.entry = function(d) {\n this.entry_body(d);\n };\n\n this.bibtex = function() {\n while (this.matchAt()) {\n var d = this.directive();\n this.match(\"{\");\n if (d == \"@STRING\") {\n this.string();\n } else if (d == \"@PREAMBLE\") {\n this.preamble();\n } else if (d == \"@COMMENT\") {\n this.comment();\n } else {\n this.entry(d);\n }\n this.match(\"}\");\n };\n };\n };\n \n exports.toJSON = function(bibtex) {\n var b = new BibtexParser();\n b.setInput(bibtex);\n b.bibtex();\n return b.entries;\n };\n\n /* added during hackathon don't hate on me */\n exports.toBibtex = function(json) {\n var out = '';\n for ( var i in json) {\n out += \"@\" + json[i].entryType;\n out += '{';\n if (json[i].citationKey)\n out += json[i].citationKey + ', ';\n if (json[i].entry)\n out += json[i].entry ;\n if (json[i].entryTags) {\n var tags = '';\n for (var jdx in json[i].entryTags) {\n if (tags.length != 0)\n tags += ', ';\n tags += jdx + '= {' + json[i].entryTags[jdx] + '}';\n }\n out += tags;\n }\n out += '}\\n\\n';\n }\n return out;\n \n };\n\n})(typeof exports === 'undefined' ? this['bibtexParse'] = {} : exports);\n\n/* end bibtexParse */\n","import bibtexParse from \"bibtex-parse-js\";\n\nexport default function(dom, data) {\n let el = dom.querySelector('script[type=\"text/bibliography\"]');\n\n //TODO If we don't have a local element, make a request for the document.\n if (el) {\n let rawBib = el.textContent;\n let bibliography = {};\n bibtexParse.toJSON(rawBib).forEach(e => {\n bibliography[e.citationKey] = e.entryTags;\n bibliography[e.citationKey].type = e.entryType;\n });\n\n let citations = {};\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n citeTags.forEach(el => {\n let citationKeys = el.getAttribute(\"key\").split(\",\");\n citationKeys.forEach(key => {\n if (bibliography[key]) {\n citations[key] = bibliography[key];\n } else {\n console.warn(\"No bibliography entry found for: \" + key);\n }\n });\n });\n data.citations = citations;\n }\n}\n","export default function(dom, data) {\n\n data.authors = data.authors || [];\n\n // paths\n //data.distillPath = post.distillPath;\n //data.githubPath = post.githubPath;\n //data.url = \"http://distill.pub/\" + post.distillPath;\n //data.githubUrl = \"https://github.com/\" + post.githubPath;\n\n // Homepage\n //data.homepage = !post.noHomepage;\n\n // Dates\n // TODO: fix updated date\n if (data.published){//} && data.journal) {\n data.volume = data.published.getFullYear() - 2015;\n data.issue = data.published.getMonth() + 1;\n }\n /*\n //let RFC = d3.timeFormat(\"%a, %d %b %Y %H:%M:%S %Z\");\n let months = [\"Jan\", \"Feb\", \"March\", \"April\", \"May\", \"June\", \"July\", \"Aug\", \"Sept\", \"Oct\", \"Nov\", \"Dec\"];\n let zeroPad = (n) => { return n < 10 ? \"0\" + n : n; };\n //data.publishedDateRFC = RFC(data.publishedDate);\n data.publishedYear = data.publishedDate.getFullYear();\n data.publishedMonth = months[data.publishedDate.getMonth()];\n data.publishedDay = data.publishedDate.getDate();\n data.publishedMonthPadded = zeroPad(data.publishedDate.getMonth() + 1);\n data.publishedDayPadded = zeroPad(data.publishedDate.getDate());\n data.volume = data.publishedDate.getFullYear() - 2015;\n data.issue = data.publishedDate.getMonth() + 1;\n }*/\n\n\n\n}\n","import logo from \"./distill-logo.svg\";\n\nconst html = `\n\n\n
    \n`\n\nexport default function(dom, data) {\n dom.querySelector('dt-header').innerHTML = html;\n}\n","const html = `\n\n\n
    \n

    References

    \n \n

    Errors, Reuse, and Citation

    \n

    If you see mistakes or want to suggest changes, please submit a pull request on github.

    \n

    Diagrams and text are licensed under Creative Commons Attribution CC-BY 2.0, unless noted otherwise, with the source available on available on github. The figures that have been reused from other sources don't fall under this license and can be recognized by a note in their caption: “Figure from …”.

    \n

    For attribution in academic contexts, please cite this work as

    \n
    \n  

    BibTeX citation

    \n
    \n
    \n`;\n\n// distill.data().then(function(data) {\n// var as = el.querySelectorAll(\"a.github\");\n// [].forEach.call(as, function(a) {\n// a.setAttribute(\"href\", data.github);\n// });\n// el.querySelector(\".citation.short\").textContent = data.concatenatedAuthors + \", \" + '\"' + data.title + '\", Distill, ' + data.firstPublishedYear + \".\";\n// var bibtex = \"@article{\" + data.slug + \",\\n\";\n// bibtex += \" author = {\" + data.bibtexAuthors + \"},\\n\";\n// bibtex += \" title = {\" + data.title + \"},\\n\";\n// bibtex += \" journal = {Distill},\\n\";\n// bibtex += \" year = {\" + data.firstPublishedYear + \"},\\n\";\n// bibtex += \" note = {\" + data.url + \"}\\n\";\n// bibtex += \"}\";\n// el.querySelector(\".citation.long\").textContent = bibtex;\n// })\n\nexport default function(dom, data) {\n let el = dom.querySelector('dt-appendix')\n if (el) el.innerHTML = html;\n}\n","import logo from \"./distill-logo.svg\";\n\nlet html = `\n\n\n
    \n \n ${logo}\n Distill\n is dedicated to clear explanations of machine learning\n
    \n`;\n\nexport default function(dom, data) {\n let el = dom.querySelector(\"dt-footer\");\n if(el) el.innerHTML = html;\n}\n","export default function(dom, data) {\n let citations = [];\n if (data.citations) {\n citations = Object.keys(data.citations).map(c => data.citations[c]);\n citations.sort((a, b) => {\n return a.author.localeCompare(b.author);\n });\n }\n\n var citeTags = [].slice.apply(dom.querySelectorAll(\"dt-cite\"));\n console.log(citeTags)\n citeTags.forEach(el => {\n var keys = el.getAttribute(\"key\").split(\",\");\n console.log(keys)\n var cite_string = keys.map(inline_cite).join(\", \");\n el.innerHTML = cite_string;\n });\n\n let bibEl = dom.querySelector(\"dt-bibliography\");\n if (bibEl) {\n let ol = dom.createElement(\"ol\");\n citations.forEach(citation => {\n let el = dom.createElement(\"li\");\n el.textContent = bibliography_cite(citation);\n ol.appendChild(el);\n })\n bibEl.appendChild(ol);\n }\n\n function inline_cite(key){\n console.log(key, data.citations)\n if (key in data.citations){\n var ent = data.citations[key];\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var year = ent.year;\n if (names.length == 1) return names[0] + \", \" + year;\n if (names.length == 2) return names[0] + \" & \" + names[1] + \", \" + year;\n if (names.length > 2) return names[0] + \", et al., \" + year;\n } else {\n return \"?\";\n }\n }\n\n function bibliography_cite(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n var cite = \"\";\n let name_strings = names.map(name => {\n var last = name.split(\",\")[0].trim();\n var firsts = name.split(\",\")[1];\n if (firsts != undefined) {\n var initials = firsts.trim().split(\" \").map(s => s.trim()[0]);\n return last + \", \" + initials.join(\".\")+\".\";\n }\n return last;\n });\n if (names.length > 1) {\n cite += name_strings.slice(0, names.length-1).join(\", \");\n cite += \" and \" + name_strings[names.length-1];\n } else {\n cite += name_strings[0]\n }\n cite += \", \" + ent.year + \". \"\n cite += ent.title + \". \"\n cite += (ent.journal || ent.booktitle || \"\")\n if (\"volume\" in ent){\n var issue = ent.issue || ent.number;\n issue = (issue != undefined)? \"(\"+issue+\")\" : \"\";\n cite += \", Vol \" + ent.volume + issue;\n }\n if (\"pages\" in ent){\n cite += \", pp. \" + ent.pages\n }\n cite += \". \"\n return cite\n } else {\n return \"?\";\n }\n }\n\n\n //https://scholar.google.com/scholar?q=allintitle%3ADocument+author%3Aolah\n function get_URL(ent){\n if (ent){\n var names = ent.author.split(\" and \");\n names = names.map(name => name.split(\",\")[0].trim())\n var title = ent.title.split(\" \")//.replace(/[,:]/, \"\")\n var url = \"http://search.labs.crossref.org/dois?\"//\"\"https://scholar.google.com/scholar?\"\n url += uris({q: names.join(\" \") + \" \" + title.join(\" \")})\n }\n\n }\n}\n","/**\n * marked - a markdown parser\n * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)\n * https://github.com/chjj/marked\n */\n\n;(function() {\n\n/**\n * Block-Level Grammar\n */\n\nvar block = {\n newline: /^\\n+/,\n code: /^( {4}[^\\n]+\\n*)+/,\n fences: noop,\n hr: /^( *[-*_]){3,} *(?:\\n+|$)/,\n heading: /^ *(#{1,6}) *([^\\n]+?) *#* *(?:\\n+|$)/,\n nptable: noop,\n lheading: /^([^\\n]+)\\n *(=|-){2,} *(?:\\n+|$)/,\n blockquote: /^( *>[^\\n]+(\\n(?!def)[^\\n]+)*\\n*)+/,\n list: /^( *)(bull) [\\s\\S]+?(?:hr|def|\\n{2,}(?! )(?!\\1bull )\\n*|\\s*$)/,\n html: /^ *(?:comment *(?:\\n|\\s*$)|closed *(?:\\n{2,}|\\s*$)|closing *(?:\\n{2,}|\\s*$))/,\n def: /^ *\\[([^\\]]+)\\]: *]+)>?(?: +[\"(]([^\\n]+)[\")])? *(?:\\n+|$)/,\n table: noop,\n paragraph: /^((?:[^\\n]+\\n?(?!hr|heading|lheading|blockquote|tag|def))+)\\n*/,\n text: /^[^\\n]+/\n};\n\nblock.bullet = /(?:[*+-]|\\d+\\.)/;\nblock.item = /^( *)(bull) [^\\n]*(?:\\n(?!\\1bull )[^\\n]*)*/;\nblock.item = replace(block.item, 'gm')\n (/bull/g, block.bullet)\n ();\n\nblock.list = replace(block.list)\n (/bull/g, block.bullet)\n ('hr', '\\\\n+(?=\\\\1?(?:[-*_] *){3,}(?:\\\\n+|$))')\n ('def', '\\\\n+(?=' + block.def.source + ')')\n ();\n\nblock.blockquote = replace(block.blockquote)\n ('def', block.def)\n ();\n\nblock._tag = '(?!(?:'\n + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'\n + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'\n + '|span|br|wbr|ins|del|img)\\\\b)\\\\w+(?!:/|[^\\\\w\\\\s@]*@)\\\\b';\n\nblock.html = replace(block.html)\n ('comment', //)\n ('closed', /<(tag)[\\s\\S]+?<\\/\\1>/)\n ('closing', /])*?>/)\n (/tag/g, block._tag)\n ();\n\nblock.paragraph = replace(block.paragraph)\n ('hr', block.hr)\n ('heading', block.heading)\n ('lheading', block.lheading)\n ('blockquote', block.blockquote)\n ('tag', '<' + block._tag)\n ('def', block.def)\n ();\n\n/**\n * Normal Block Grammar\n */\n\nblock.normal = merge({}, block);\n\n/**\n * GFM Block Grammar\n */\n\nblock.gfm = merge({}, block.normal, {\n fences: /^ *(`{3,}|~{3,})[ \\.]*(\\S+)? *\\n([\\s\\S]*?)\\s*\\1 *(?:\\n+|$)/,\n paragraph: /^/,\n heading: /^ *(#{1,6}) +([^\\n]+?) *#* *(?:\\n+|$)/\n});\n\nblock.gfm.paragraph = replace(block.paragraph)\n ('(?!', '(?!'\n + block.gfm.fences.source.replace('\\\\1', '\\\\2') + '|'\n + block.list.source.replace('\\\\1', '\\\\3') + '|')\n ();\n\n/**\n * GFM + Tables Block Grammar\n */\n\nblock.tables = merge({}, block.gfm, {\n nptable: /^ *(\\S.*\\|.*)\\n *([-:]+ *\\|[-| :]*)\\n((?:.*\\|.*(?:\\n|$))*)\\n*/,\n table: /^ *\\|(.+)\\n *\\|( *[-:]+[-| :]*)\\n((?: *\\|.*(?:\\n|$))*)\\n*/\n});\n\n/**\n * Block Lexer\n */\n\nfunction Lexer(options) {\n this.tokens = [];\n this.tokens.links = {};\n this.options = options || marked.defaults;\n this.rules = block.normal;\n\n if (this.options.gfm) {\n if (this.options.tables) {\n this.rules = block.tables;\n } else {\n this.rules = block.gfm;\n }\n }\n}\n\n/**\n * Expose Block Rules\n */\n\nLexer.rules = block;\n\n/**\n * Static Lex Method\n */\n\nLexer.lex = function(src, options) {\n var lexer = new Lexer(options);\n return lexer.lex(src);\n};\n\n/**\n * Preprocessing\n */\n\nLexer.prototype.lex = function(src) {\n src = src\n .replace(/\\r\\n|\\r/g, '\\n')\n .replace(/\\t/g, ' ')\n .replace(/\\u00a0/g, ' ')\n .replace(/\\u2424/g, '\\n');\n\n return this.token(src, true);\n};\n\n/**\n * Lexing\n */\n\nLexer.prototype.token = function(src, top, bq) {\n var src = src.replace(/^ +$/gm, '')\n , next\n , loose\n , cap\n , bull\n , b\n , item\n , space\n , i\n , l;\n\n while (src) {\n // newline\n if (cap = this.rules.newline.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[0].length > 1) {\n this.tokens.push({\n type: 'space'\n });\n }\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n cap = cap[0].replace(/^ {4}/gm, '');\n this.tokens.push({\n type: 'code',\n text: !this.options.pedantic\n ? cap.replace(/\\n+$/, '')\n : cap\n });\n continue;\n }\n\n // fences (gfm)\n if (cap = this.rules.fences.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'code',\n lang: cap[2],\n text: cap[3] || ''\n });\n continue;\n }\n\n // heading\n if (cap = this.rules.heading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[1].length,\n text: cap[2]\n });\n continue;\n }\n\n // table no leading pipe (gfm)\n if (top && (cap = this.rules.nptable.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i].split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // lheading\n if (cap = this.rules.lheading.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'heading',\n depth: cap[2] === '=' ? 1 : 2,\n text: cap[1]\n });\n continue;\n }\n\n // hr\n if (cap = this.rules.hr.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'hr'\n });\n continue;\n }\n\n // blockquote\n if (cap = this.rules.blockquote.exec(src)) {\n src = src.substring(cap[0].length);\n\n this.tokens.push({\n type: 'blockquote_start'\n });\n\n cap = cap[0].replace(/^ *> ?/gm, '');\n\n // Pass `top` to keep the current\n // \"toplevel\" state. This is exactly\n // how markdown.pl works.\n this.token(cap, top, true);\n\n this.tokens.push({\n type: 'blockquote_end'\n });\n\n continue;\n }\n\n // list\n if (cap = this.rules.list.exec(src)) {\n src = src.substring(cap[0].length);\n bull = cap[2];\n\n this.tokens.push({\n type: 'list_start',\n ordered: bull.length > 1\n });\n\n // Get each top-level item.\n cap = cap[0].match(this.rules.item);\n\n next = false;\n l = cap.length;\n i = 0;\n\n for (; i < l; i++) {\n item = cap[i];\n\n // Remove the list item's bullet\n // so it is seen as the next token.\n space = item.length;\n item = item.replace(/^ *([*+-]|\\d+\\.) +/, '');\n\n // Outdent whatever the\n // list item contains. Hacky.\n if (~item.indexOf('\\n ')) {\n space -= item.length;\n item = !this.options.pedantic\n ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')\n : item.replace(/^ {1,4}/gm, '');\n }\n\n // Determine whether the next list item belongs here.\n // Backpedal if it does not belong in this list.\n if (this.options.smartLists && i !== l - 1) {\n b = block.bullet.exec(cap[i + 1])[0];\n if (bull !== b && !(bull.length > 1 && b.length > 1)) {\n src = cap.slice(i + 1).join('\\n') + src;\n i = l - 1;\n }\n }\n\n // Determine whether item is loose or not.\n // Use: /(^|\\n)(?! )[^\\n]+\\n\\n(?!\\s*$)/\n // for discount behavior.\n loose = next || /\\n\\n(?!\\s*$)/.test(item);\n if (i !== l - 1) {\n next = item.charAt(item.length - 1) === '\\n';\n if (!loose) loose = next;\n }\n\n this.tokens.push({\n type: loose\n ? 'loose_item_start'\n : 'list_item_start'\n });\n\n // Recurse.\n this.token(item, false, bq);\n\n this.tokens.push({\n type: 'list_item_end'\n });\n }\n\n this.tokens.push({\n type: 'list_end'\n });\n\n continue;\n }\n\n // html\n if (cap = this.rules.html.exec(src)) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: this.options.sanitize\n ? 'paragraph'\n : 'html',\n pre: !this.options.sanitizer\n && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),\n text: cap[0]\n });\n continue;\n }\n\n // def\n if ((!bq && top) && (cap = this.rules.def.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.links[cap[1].toLowerCase()] = {\n href: cap[2],\n title: cap[3]\n };\n continue;\n }\n\n // table (gfm)\n if (top && (cap = this.rules.table.exec(src))) {\n src = src.substring(cap[0].length);\n\n item = {\n type: 'table',\n header: cap[1].replace(/^ *| *\\| *$/g, '').split(/ *\\| */),\n align: cap[2].replace(/^ *|\\| *$/g, '').split(/ *\\| */),\n cells: cap[3].replace(/(?: *\\| *)?\\n$/, '').split('\\n')\n };\n\n for (i = 0; i < item.align.length; i++) {\n if (/^ *-+: *$/.test(item.align[i])) {\n item.align[i] = 'right';\n } else if (/^ *:-+: *$/.test(item.align[i])) {\n item.align[i] = 'center';\n } else if (/^ *:-+ *$/.test(item.align[i])) {\n item.align[i] = 'left';\n } else {\n item.align[i] = null;\n }\n }\n\n for (i = 0; i < item.cells.length; i++) {\n item.cells[i] = item.cells[i]\n .replace(/^ *\\| *| *\\| *$/g, '')\n .split(/ *\\| */);\n }\n\n this.tokens.push(item);\n\n continue;\n }\n\n // top-level paragraph\n if (top && (cap = this.rules.paragraph.exec(src))) {\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'paragraph',\n text: cap[1].charAt(cap[1].length - 1) === '\\n'\n ? cap[1].slice(0, -1)\n : cap[1]\n });\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n // Top-level should never reach here.\n src = src.substring(cap[0].length);\n this.tokens.push({\n type: 'text',\n text: cap[0]\n });\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return this.tokens;\n};\n\n/**\n * Inline-Level Grammar\n */\n\nvar inline = {\n escape: /^\\\\([\\\\`*{}\\[\\]()#+\\-.!_>])/,\n autolink: /^<([^ >]+(@|:\\/)[^ >]+)>/,\n url: noop,\n tag: /^|^<\\/?\\w+(?:\"[^\"]*\"|'[^']*'|[^'\">])*?>/,\n link: /^!?\\[(inside)\\]\\(href\\)/,\n reflink: /^!?\\[(inside)\\]\\s*\\[([^\\]]*)\\]/,\n nolink: /^!?\\[((?:\\[[^\\]]*\\]|[^\\[\\]])*)\\]/,\n strong: /^__([\\s\\S]+?)__(?!_)|^\\*\\*([\\s\\S]+?)\\*\\*(?!\\*)/,\n em: /^\\b_((?:[^_]|__)+?)_\\b|^\\*((?:\\*\\*|[\\s\\S])+?)\\*(?!\\*)/,\n code: /^(`+)\\s*([\\s\\S]*?[^`])\\s*\\1(?!`)/,\n br: /^ {2,}\\n(?!\\s*$)/,\n del: noop,\n text: /^[\\s\\S]+?(?=[\\\\?(?:\\s+['\"]([\\s\\S]*?)['\"])?\\s*/;\n\ninline.link = replace(inline.link)\n ('inside', inline._inside)\n ('href', inline._href)\n ();\n\ninline.reflink = replace(inline.reflink)\n ('inside', inline._inside)\n ();\n\n/**\n * Normal Inline Grammar\n */\n\ninline.normal = merge({}, inline);\n\n/**\n * Pedantic Inline Grammar\n */\n\ninline.pedantic = merge({}, inline.normal, {\n strong: /^__(?=\\S)([\\s\\S]*?\\S)__(?!_)|^\\*\\*(?=\\S)([\\s\\S]*?\\S)\\*\\*(?!\\*)/,\n em: /^_(?=\\S)([\\s\\S]*?\\S)_(?!_)|^\\*(?=\\S)([\\s\\S]*?\\S)\\*(?!\\*)/\n});\n\n/**\n * GFM Inline Grammar\n */\n\ninline.gfm = merge({}, inline.normal, {\n escape: replace(inline.escape)('])', '~|])')(),\n url: /^(https?:\\/\\/[^\\s<]+[^<.,:;\"')\\]\\s])/,\n del: /^~~(?=\\S)([\\s\\S]*?\\S)~~/,\n text: replace(inline.text)\n (']|', '~]|')\n ('|', '|https?://|')\n ()\n});\n\n/**\n * GFM + Line Breaks Inline Grammar\n */\n\ninline.breaks = merge({}, inline.gfm, {\n br: replace(inline.br)('{2,}', '*')(),\n text: replace(inline.gfm.text)('{2,}', '*')()\n});\n\n/**\n * Inline Lexer & Compiler\n */\n\nfunction InlineLexer(links, options) {\n this.options = options || marked.defaults;\n this.links = links;\n this.rules = inline.normal;\n this.renderer = this.options.renderer || new Renderer;\n this.renderer.options = this.options;\n\n if (!this.links) {\n throw new\n Error('Tokens array requires a `links` property.');\n }\n\n if (this.options.gfm) {\n if (this.options.breaks) {\n this.rules = inline.breaks;\n } else {\n this.rules = inline.gfm;\n }\n } else if (this.options.pedantic) {\n this.rules = inline.pedantic;\n }\n}\n\n/**\n * Expose Inline Rules\n */\n\nInlineLexer.rules = inline;\n\n/**\n * Static Lexing/Compiling Method\n */\n\nInlineLexer.output = function(src, links, options) {\n var inline = new InlineLexer(links, options);\n return inline.output(src);\n};\n\n/**\n * Lexing/Compiling\n */\n\nInlineLexer.prototype.output = function(src) {\n var out = ''\n , link\n , text\n , href\n , cap;\n\n while (src) {\n // escape\n if (cap = this.rules.escape.exec(src)) {\n src = src.substring(cap[0].length);\n out += cap[1];\n continue;\n }\n\n // autolink\n if (cap = this.rules.autolink.exec(src)) {\n src = src.substring(cap[0].length);\n if (cap[2] === '@') {\n text = cap[1].charAt(6) === ':'\n ? this.mangle(cap[1].substring(7))\n : this.mangle(cap[1]);\n href = this.mangle('mailto:') + text;\n } else {\n text = escape(cap[1]);\n href = text;\n }\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // url (gfm)\n if (!this.inLink && (cap = this.rules.url.exec(src))) {\n src = src.substring(cap[0].length);\n text = escape(cap[1]);\n href = text;\n out += this.renderer.link(href, null, text);\n continue;\n }\n\n // tag\n if (cap = this.rules.tag.exec(src)) {\n if (!this.inLink && /^/i.test(cap[0])) {\n this.inLink = false;\n }\n src = src.substring(cap[0].length);\n out += this.options.sanitize\n ? this.options.sanitizer\n ? this.options.sanitizer(cap[0])\n : escape(cap[0])\n : cap[0]\n continue;\n }\n\n // link\n if (cap = this.rules.link.exec(src)) {\n src = src.substring(cap[0].length);\n this.inLink = true;\n out += this.outputLink(cap, {\n href: cap[2],\n title: cap[3]\n });\n this.inLink = false;\n continue;\n }\n\n // reflink, nolink\n if ((cap = this.rules.reflink.exec(src))\n || (cap = this.rules.nolink.exec(src))) {\n src = src.substring(cap[0].length);\n link = (cap[2] || cap[1]).replace(/\\s+/g, ' ');\n link = this.links[link.toLowerCase()];\n if (!link || !link.href) {\n out += cap[0].charAt(0);\n src = cap[0].substring(1) + src;\n continue;\n }\n this.inLink = true;\n out += this.outputLink(cap, link);\n this.inLink = false;\n continue;\n }\n\n // strong\n if (cap = this.rules.strong.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.strong(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // em\n if (cap = this.rules.em.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.em(this.output(cap[2] || cap[1]));\n continue;\n }\n\n // code\n if (cap = this.rules.code.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.codespan(escape(cap[2], true));\n continue;\n }\n\n // br\n if (cap = this.rules.br.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.br();\n continue;\n }\n\n // del (gfm)\n if (cap = this.rules.del.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.del(this.output(cap[1]));\n continue;\n }\n\n // text\n if (cap = this.rules.text.exec(src)) {\n src = src.substring(cap[0].length);\n out += this.renderer.text(escape(this.smartypants(cap[0])));\n continue;\n }\n\n if (src) {\n throw new\n Error('Infinite loop on byte: ' + src.charCodeAt(0));\n }\n }\n\n return out;\n};\n\n/**\n * Compile Link\n */\n\nInlineLexer.prototype.outputLink = function(cap, link) {\n var href = escape(link.href)\n , title = link.title ? escape(link.title) : null;\n\n return cap[0].charAt(0) !== '!'\n ? this.renderer.link(href, title, this.output(cap[1]))\n : this.renderer.image(href, title, escape(cap[1]));\n};\n\n/**\n * Smartypants Transformations\n */\n\nInlineLexer.prototype.smartypants = function(text) {\n if (!this.options.smartypants) return text;\n return text\n // em-dashes\n .replace(/---/g, '\\u2014')\n // en-dashes\n .replace(/--/g, '\\u2013')\n // opening singles\n .replace(/(^|[-\\u2014/(\\[{\"\\s])'/g, '$1\\u2018')\n // closing singles & apostrophes\n .replace(/'/g, '\\u2019')\n // opening doubles\n .replace(/(^|[-\\u2014/(\\[{\\u2018\\s])\"/g, '$1\\u201c')\n // closing doubles\n .replace(/\"/g, '\\u201d')\n // ellipses\n .replace(/\\.{3}/g, '\\u2026');\n};\n\n/**\n * Mangle Links\n */\n\nInlineLexer.prototype.mangle = function(text) {\n if (!this.options.mangle) return text;\n var out = ''\n , l = text.length\n , i = 0\n , ch;\n\n for (; i < l; i++) {\n ch = text.charCodeAt(i);\n if (Math.random() > 0.5) {\n ch = 'x' + ch.toString(16);\n }\n out += '&#' + ch + ';';\n }\n\n return out;\n};\n\n/**\n * Renderer\n */\n\nfunction Renderer(options) {\n this.options = options || {};\n}\n\nRenderer.prototype.code = function(code, lang, escaped) {\n if (this.options.highlight) {\n var out = this.options.highlight(code, lang);\n if (out != null && out !== code) {\n escaped = true;\n code = out;\n }\n }\n\n if (!lang) {\n return '
    '\n      + (escaped ? code : escape(code, true))\n      + '\\n
    ';\n }\n\n return '
    '\n    + (escaped ? code : escape(code, true))\n    + '\\n
    \\n';\n};\n\nRenderer.prototype.blockquote = function(quote) {\n return '
    \\n' + quote + '
    \\n';\n};\n\nRenderer.prototype.html = function(html) {\n return html;\n};\n\nRenderer.prototype.heading = function(text, level, raw) {\n return ''\n + text\n + '\\n';\n};\n\nRenderer.prototype.hr = function() {\n return this.options.xhtml ? '
    \\n' : '
    \\n';\n};\n\nRenderer.prototype.list = function(body, ordered) {\n var type = ordered ? 'ol' : 'ul';\n return '<' + type + '>\\n' + body + '\\n';\n};\n\nRenderer.prototype.listitem = function(text) {\n return '
  • ' + text + '
  • \\n';\n};\n\nRenderer.prototype.paragraph = function(text) {\n return '

    ' + text + '

    \\n';\n};\n\nRenderer.prototype.table = function(header, body) {\n return '\\n'\n + '\\n'\n + header\n + '\\n'\n + '\\n'\n + body\n + '\\n'\n + '
    \\n';\n};\n\nRenderer.prototype.tablerow = function(content) {\n return '\\n' + content + '\\n';\n};\n\nRenderer.prototype.tablecell = function(content, flags) {\n var type = flags.header ? 'th' : 'td';\n var tag = flags.align\n ? '<' + type + ' style=\"text-align:' + flags.align + '\">'\n : '<' + type + '>';\n return tag + content + '\\n';\n};\n\n// span level renderer\nRenderer.prototype.strong = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.em = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.codespan = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.br = function() {\n return this.options.xhtml ? '
    ' : '
    ';\n};\n\nRenderer.prototype.del = function(text) {\n return '' + text + '';\n};\n\nRenderer.prototype.link = function(href, title, text) {\n if (this.options.sanitize) {\n try {\n var prot = decodeURIComponent(unescape(href))\n .replace(/[^\\w:]/g, '')\n .toLowerCase();\n } catch (e) {\n return '';\n }\n if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0) {\n return '';\n }\n }\n var out = '
    ';\n return out;\n};\n\nRenderer.prototype.image = function(href, title, text) {\n var out = '\"'' : '>';\n return out;\n};\n\nRenderer.prototype.text = function(text) {\n return text;\n};\n\n/**\n * Parsing & Compiling\n */\n\nfunction Parser(options) {\n this.tokens = [];\n this.token = null;\n this.options = options || marked.defaults;\n this.options.renderer = this.options.renderer || new Renderer;\n this.renderer = this.options.renderer;\n this.renderer.options = this.options;\n}\n\n/**\n * Static Parse Method\n */\n\nParser.parse = function(src, options, renderer) {\n var parser = new Parser(options, renderer);\n return parser.parse(src);\n};\n\n/**\n * Parse Loop\n */\n\nParser.prototype.parse = function(src) {\n this.inline = new InlineLexer(src.links, this.options, this.renderer);\n this.tokens = src.reverse();\n\n var out = '';\n while (this.next()) {\n out += this.tok();\n }\n\n return out;\n};\n\n/**\n * Next Token\n */\n\nParser.prototype.next = function() {\n return this.token = this.tokens.pop();\n};\n\n/**\n * Preview Next Token\n */\n\nParser.prototype.peek = function() {\n return this.tokens[this.tokens.length - 1] || 0;\n};\n\n/**\n * Parse Text Tokens\n */\n\nParser.prototype.parseText = function() {\n var body = this.token.text;\n\n while (this.peek().type === 'text') {\n body += '\\n' + this.next().text;\n }\n\n return this.inline.output(body);\n};\n\n/**\n * Parse Current Token\n */\n\nParser.prototype.tok = function() {\n switch (this.token.type) {\n case 'space': {\n return '';\n }\n case 'hr': {\n return this.renderer.hr();\n }\n case 'heading': {\n return this.renderer.heading(\n this.inline.output(this.token.text),\n this.token.depth,\n this.token.text);\n }\n case 'code': {\n return this.renderer.code(this.token.text,\n this.token.lang,\n this.token.escaped);\n }\n case 'table': {\n var header = ''\n , body = ''\n , i\n , row\n , cell\n , flags\n , j;\n\n // header\n cell = '';\n for (i = 0; i < this.token.header.length; i++) {\n flags = { header: true, align: this.token.align[i] };\n cell += this.renderer.tablecell(\n this.inline.output(this.token.header[i]),\n { header: true, align: this.token.align[i] }\n );\n }\n header += this.renderer.tablerow(cell);\n\n for (i = 0; i < this.token.cells.length; i++) {\n row = this.token.cells[i];\n\n cell = '';\n for (j = 0; j < row.length; j++) {\n cell += this.renderer.tablecell(\n this.inline.output(row[j]),\n { header: false, align: this.token.align[j] }\n );\n }\n\n body += this.renderer.tablerow(cell);\n }\n return this.renderer.table(header, body);\n }\n case 'blockquote_start': {\n var body = '';\n\n while (this.next().type !== 'blockquote_end') {\n body += this.tok();\n }\n\n return this.renderer.blockquote(body);\n }\n case 'list_start': {\n var body = ''\n , ordered = this.token.ordered;\n\n while (this.next().type !== 'list_end') {\n body += this.tok();\n }\n\n return this.renderer.list(body, ordered);\n }\n case 'list_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.token.type === 'text'\n ? this.parseText()\n : this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'loose_item_start': {\n var body = '';\n\n while (this.next().type !== 'list_item_end') {\n body += this.tok();\n }\n\n return this.renderer.listitem(body);\n }\n case 'html': {\n var html = !this.token.pre && !this.options.pedantic\n ? this.inline.output(this.token.text)\n : this.token.text;\n return this.renderer.html(html);\n }\n case 'paragraph': {\n return this.renderer.paragraph(this.inline.output(this.token.text));\n }\n case 'text': {\n return this.renderer.paragraph(this.parseText());\n }\n }\n};\n\n/**\n * Helpers\n */\n\nfunction escape(html, encode) {\n return html\n .replace(!encode ? /&(?!#?\\w+;)/g : /&/g, '&')\n .replace(//g, '>')\n .replace(/\"/g, '"')\n .replace(/'/g, ''');\n}\n\nfunction unescape(html) {\n\t// explicitly match decimal, hex, and named HTML entities \n return html.replace(/&(#(?:\\d+)|(?:#x[0-9A-Fa-f]+)|(?:\\w+));?/g, function(_, n) {\n n = n.toLowerCase();\n if (n === 'colon') return ':';\n if (n.charAt(0) === '#') {\n return n.charAt(1) === 'x'\n ? String.fromCharCode(parseInt(n.substring(2), 16))\n : String.fromCharCode(+n.substring(1));\n }\n return '';\n });\n}\n\nfunction replace(regex, opt) {\n regex = regex.source;\n opt = opt || '';\n return function self(name, val) {\n if (!name) return new RegExp(regex, opt);\n val = val.source || val;\n val = val.replace(/(^|[^\\[])\\^/g, '$1');\n regex = regex.replace(name, val);\n return self;\n };\n}\n\nfunction noop() {}\nnoop.exec = noop;\n\nfunction merge(obj) {\n var i = 1\n , target\n , key;\n\n for (; i < arguments.length; i++) {\n target = arguments[i];\n for (key in target) {\n if (Object.prototype.hasOwnProperty.call(target, key)) {\n obj[key] = target[key];\n }\n }\n }\n\n return obj;\n}\n\n\n/**\n * Marked\n */\n\nfunction marked(src, opt, callback) {\n if (callback || typeof opt === 'function') {\n if (!callback) {\n callback = opt;\n opt = null;\n }\n\n opt = merge({}, marked.defaults, opt || {});\n\n var highlight = opt.highlight\n , tokens\n , pending\n , i = 0;\n\n try {\n tokens = Lexer.lex(src, opt)\n } catch (e) {\n return callback(e);\n }\n\n pending = tokens.length;\n\n var done = function(err) {\n if (err) {\n opt.highlight = highlight;\n return callback(err);\n }\n\n var out;\n\n try {\n out = Parser.parse(tokens, opt);\n } catch (e) {\n err = e;\n }\n\n opt.highlight = highlight;\n\n return err\n ? callback(err)\n : callback(null, out);\n };\n\n if (!highlight || highlight.length < 3) {\n return done();\n }\n\n delete opt.highlight;\n\n if (!pending) return done();\n\n for (; i < tokens.length; i++) {\n (function(token) {\n if (token.type !== 'code') {\n return --pending || done();\n }\n return highlight(token.text, token.lang, function(err, code) {\n if (err) return done(err);\n if (code == null || code === token.text) {\n return --pending || done();\n }\n token.text = code;\n token.escaped = true;\n --pending || done();\n });\n })(tokens[i]);\n }\n\n return;\n }\n try {\n if (opt) opt = merge({}, marked.defaults, opt);\n return Parser.parse(Lexer.lex(src, opt), opt);\n } catch (e) {\n e.message += '\\nPlease report this to https://github.com/chjj/marked.';\n if ((opt || marked.defaults).silent) {\n return '

    An error occured:

    '\n        + escape(e.message + '', true)\n        + '
    ';\n }\n throw e;\n }\n}\n\n/**\n * Options\n */\n\nmarked.options =\nmarked.setOptions = function(opt) {\n merge(marked.defaults, opt);\n return marked;\n};\n\nmarked.defaults = {\n gfm: true,\n tables: true,\n breaks: false,\n pedantic: false,\n sanitize: false,\n sanitizer: null,\n mangle: true,\n smartLists: false,\n silent: false,\n highlight: null,\n langPrefix: 'lang-',\n smartypants: false,\n headerPrefix: '',\n renderer: new Renderer,\n xhtml: false\n};\n\n/**\n * Expose\n */\n\nmarked.Parser = Parser;\nmarked.parser = Parser.parse;\n\nmarked.Renderer = Renderer;\n\nmarked.Lexer = Lexer;\nmarked.lexer = Lexer.lex;\n\nmarked.InlineLexer = InlineLexer;\nmarked.inlineLexer = InlineLexer.output;\n\nmarked.parse = marked;\n\nif (typeof module !== 'undefined' && typeof exports === 'object') {\n module.exports = marked;\n} else if (typeof define === 'function' && define.amd) {\n define(function() { return marked; });\n} else {\n this.marked = marked;\n}\n\n}).call(function() {\n return this || (typeof window !== 'undefined' ? window : global);\n}());\n","import marked from 'marked';\n\nmarked.setOptions({\n gfm: true,\n smartypants: true\n});\n\nexport default function(dom, data) {\n let markdownElements = [].slice.call(dom.querySelectorAll('[markdown]'));\n markdownElements.forEach(el => {\n let content = el.innerHTML;\n // Set default indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n\n el.innerHTML = marked(content);\n });\n}\n","\n/* **********************************************\n Begin prism-core.js\n********************************************** */\n\nvar _self = (typeof window !== 'undefined')\n\t? window // if in browser\n\t: (\n\t\t(typeof WorkerGlobalScope !== 'undefined' && self instanceof WorkerGlobalScope)\n\t\t? self // if in worker\n\t\t: {} // if in node js\n\t);\n\n/**\n * Prism: Lightweight, robust, elegant syntax highlighting\n * MIT license http://www.opensource.org/licenses/mit-license.php/\n * @author Lea Verou http://lea.verou.me\n */\n\nvar Prism = (function(){\n\n// Private helper vars\nvar lang = /\\blang(?:uage)?-(\\w+)\\b/i;\nvar uniqueId = 0;\n\nvar _ = _self.Prism = {\n\tutil: {\n\t\tencode: function (tokens) {\n\t\t\tif (tokens instanceof Token) {\n\t\t\t\treturn new Token(tokens.type, _.util.encode(tokens.content), tokens.alias);\n\t\t\t} else if (_.util.type(tokens) === 'Array') {\n\t\t\t\treturn tokens.map(_.util.encode);\n\t\t\t} else {\n\t\t\t\treturn tokens.replace(/&/g, '&').replace(/ text.length) {\n\t\t\t\t\t\t// Something went terribly wrong, ABORT, ABORT!\n\t\t\t\t\t\tbreak tokenloop;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (str instanceof Token) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tpattern.lastIndex = 0;\n\n\t\t\t\t\tvar match = pattern.exec(str),\n\t\t\t\t\t delNum = 1;\n\n\t\t\t\t\t// Greedy patterns can override/remove up to two previously matched tokens\n\t\t\t\t\tif (!match && greedy && i != strarr.length - 1) {\n\t\t\t\t\t\tpattern.lastIndex = pos;\n\t\t\t\t\t\tmatch = pattern.exec(text);\n\t\t\t\t\t\tif (!match) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tvar from = match.index + (lookbehind ? match[1].length : 0),\n\t\t\t\t\t\t to = match.index + match[0].length,\n\t\t\t\t\t\t k = i,\n\t\t\t\t\t\t p = pos;\n\n\t\t\t\t\t\tfor (var len = strarr.length; k < len && p < to; ++k) {\n\t\t\t\t\t\t\tp += strarr[k].length;\n\t\t\t\t\t\t\t// Move the index i to the element in strarr that is closest to from\n\t\t\t\t\t\t\tif (from >= p) {\n\t\t\t\t\t\t\t\t++i;\n\t\t\t\t\t\t\t\tpos = p;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t/*\n\t\t\t\t\t\t * If strarr[i] is a Token, then the match starts inside another Token, which is invalid\n\t\t\t\t\t\t * If strarr[k - 1] is greedy we are in conflict with another greedy pattern\n\t\t\t\t\t\t */\n\t\t\t\t\t\tif (strarr[i] instanceof Token || strarr[k - 1].greedy) {\n\t\t\t\t\t\t\tcontinue;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Number of tokens to delete and replace with the new match\n\t\t\t\t\t\tdelNum = k - i;\n\t\t\t\t\t\tstr = text.slice(pos, p);\n\t\t\t\t\t\tmatch.index -= pos;\n\t\t\t\t\t}\n\n\t\t\t\t\tif (!match) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\n\t\t\t\t\tif(lookbehind) {\n\t\t\t\t\t\tlookbehindLength = match[1].length;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar from = match.index + lookbehindLength,\n\t\t\t\t\t match = match[0].slice(lookbehindLength),\n\t\t\t\t\t to = from + match.length,\n\t\t\t\t\t before = str.slice(0, from),\n\t\t\t\t\t after = str.slice(to);\n\n\t\t\t\t\tvar args = [i, delNum];\n\n\t\t\t\t\tif (before) {\n\t\t\t\t\t\targs.push(before);\n\t\t\t\t\t}\n\n\t\t\t\t\tvar wrapped = new Token(token, inside? _.tokenize(match, inside) : match, alias, match, greedy);\n\n\t\t\t\t\targs.push(wrapped);\n\n\t\t\t\t\tif (after) {\n\t\t\t\t\t\targs.push(after);\n\t\t\t\t\t}\n\n\t\t\t\t\tArray.prototype.splice.apply(strarr, args);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn strarr;\n\t},\n\n\thooks: {\n\t\tall: {},\n\n\t\tadd: function (name, callback) {\n\t\t\tvar hooks = _.hooks.all;\n\n\t\t\thooks[name] = hooks[name] || [];\n\n\t\t\thooks[name].push(callback);\n\t\t},\n\n\t\trun: function (name, env) {\n\t\t\tvar callbacks = _.hooks.all[name];\n\n\t\t\tif (!callbacks || !callbacks.length) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tfor (var i=0, callback; callback = callbacks[i++];) {\n\t\t\t\tcallback(env);\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar Token = _.Token = function(type, content, alias, matchedStr, greedy) {\n\tthis.type = type;\n\tthis.content = content;\n\tthis.alias = alias;\n\t// Copy of the full string this token was created from\n\tthis.length = (matchedStr || \"\").length|0;\n\tthis.greedy = !!greedy;\n};\n\nToken.stringify = function(o, language, parent) {\n\tif (typeof o == 'string') {\n\t\treturn o;\n\t}\n\n\tif (_.util.type(o) === 'Array') {\n\t\treturn o.map(function(element) {\n\t\t\treturn Token.stringify(element, language, o);\n\t\t}).join('');\n\t}\n\n\tvar env = {\n\t\ttype: o.type,\n\t\tcontent: Token.stringify(o.content, language, parent),\n\t\ttag: 'span',\n\t\tclasses: ['token', o.type],\n\t\tattributes: {},\n\t\tlanguage: language,\n\t\tparent: parent\n\t};\n\n\tif (env.type == 'comment') {\n\t\tenv.attributes['spellcheck'] = 'true';\n\t}\n\n\tif (o.alias) {\n\t\tvar aliases = _.util.type(o.alias) === 'Array' ? o.alias : [o.alias];\n\t\tArray.prototype.push.apply(env.classes, aliases);\n\t}\n\n\t_.hooks.run('wrap', env);\n\n\tvar attributes = Object.keys(env.attributes).map(function(name) {\n\t\treturn name + '=\"' + (env.attributes[name] || '').replace(/\"/g, '"') + '\"';\n\t}).join(' ');\n\n\treturn '<' + env.tag + ' class=\"' + env.classes.join(' ') + '\"' + (attributes ? ' ' + attributes : '') + '>' + env.content + '';\n\n};\n\nif (!_self.document) {\n\tif (!_self.addEventListener) {\n\t\t// in Node.js\n\t\treturn _self.Prism;\n\t}\n \t// In worker\n\t_self.addEventListener('message', function(evt) {\n\t\tvar message = JSON.parse(evt.data),\n\t\t lang = message.language,\n\t\t code = message.code,\n\t\t immediateClose = message.immediateClose;\n\n\t\t_self.postMessage(_.highlight(code, _.languages[lang], lang));\n\t\tif (immediateClose) {\n\t\t\t_self.close();\n\t\t}\n\t}, false);\n\n\treturn _self.Prism;\n}\n\n//Get current script and highlight\nvar script = document.currentScript || [].slice.call(document.getElementsByTagName(\"script\")).pop();\n\nif (script) {\n\t_.filename = script.src;\n\n\tif (document.addEventListener && !script.hasAttribute('data-manual')) {\n\t\tif(document.readyState !== \"loading\") {\n\t\t\tif (window.requestAnimationFrame) {\n\t\t\t\twindow.requestAnimationFrame(_.highlightAll);\n\t\t\t} else {\n\t\t\t\twindow.setTimeout(_.highlightAll, 16);\n\t\t\t}\n\t\t}\n\t\telse {\n\t\t\tdocument.addEventListener('DOMContentLoaded', _.highlightAll);\n\t\t}\n\t}\n}\n\nreturn _self.Prism;\n\n})();\n\nif (typeof module !== 'undefined' && module.exports) {\n\tmodule.exports = Prism;\n}\n\n// hack for components to work correctly in node.js\nif (typeof global !== 'undefined') {\n\tglobal.Prism = Prism;\n}\n\n\n/* **********************************************\n Begin prism-markup.js\n********************************************** */\n\nPrism.languages.markup = {\n\t'comment': //,\n\t'prolog': /<\\?[\\w\\W]+?\\?>/,\n\t'doctype': //i,\n\t'cdata': //i,\n\t'tag': {\n\t\tpattern: /<\\/?(?!\\d)[^\\s>\\/=$<]+(?:\\s+[^\\s>\\/=]+(?:=(?:(\"|')(?:\\\\\\1|\\\\?(?!\\1)[\\w\\W])*\\1|[^\\s'\">=]+))?)*\\s*\\/?>/i,\n\t\tinside: {\n\t\t\t'tag': {\n\t\t\t\tpattern: /^<\\/?[^\\s>\\/]+/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /^<\\/?/,\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'attr-value': {\n\t\t\t\tpattern: /=(?:('|\")[\\w\\W]*?(\\1)|[^\\s>]+)/i,\n\t\t\t\tinside: {\n\t\t\t\t\t'punctuation': /[=>\"']/\n\t\t\t\t}\n\t\t\t},\n\t\t\t'punctuation': /\\/?>/,\n\t\t\t'attr-name': {\n\t\t\t\tpattern: /[^\\s>\\/]+/,\n\t\t\t\tinside: {\n\t\t\t\t\t'namespace': /^[^\\s>\\/:]+:/\n\t\t\t\t}\n\t\t\t}\n\n\t\t}\n\t},\n\t'entity': /&#?[\\da-z]{1,8};/i\n};\n\n// Plugin to make entity title show the real entity, idea by Roman Komarov\nPrism.hooks.add('wrap', function(env) {\n\n\tif (env.type === 'entity') {\n\t\tenv.attributes['title'] = env.content.replace(/&/, '&');\n\t}\n});\n\nPrism.languages.xml = Prism.languages.markup;\nPrism.languages.html = Prism.languages.markup;\nPrism.languages.mathml = Prism.languages.markup;\nPrism.languages.svg = Prism.languages.markup;\n\n\n/* **********************************************\n Begin prism-css.js\n********************************************** */\n\nPrism.languages.css = {\n\t'comment': /\\/\\*[\\w\\W]*?\\*\\//,\n\t'atrule': {\n\t\tpattern: /@[\\w-]+?.*?(;|(?=\\s*\\{))/i,\n\t\tinside: {\n\t\t\t'rule': /@[\\w-]+/\n\t\t\t// See rest below\n\t\t}\n\t},\n\t'url': /url\\((?:([\"'])(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1|.*?)\\)/i,\n\t'selector': /[^\\{\\}\\s][^\\{\\};]*?(?=\\s*\\{)/,\n\t'string': {\n\t\tpattern: /(\"|')(\\\\(?:\\r\\n|[\\w\\W])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'property': /(\\b|\\B)[\\w-]+(?=\\s*:)/i,\n\t'important': /\\B!important\\b/i,\n\t'function': /[-a-z0-9]+(?=\\()/i,\n\t'punctuation': /[(){};:]/\n};\n\nPrism.languages.css['atrule'].inside.rest = Prism.util.clone(Prism.languages.css);\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'style': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/style>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.css,\n\t\t\talias: 'language-css'\n\t\t}\n\t});\n\t\n\tPrism.languages.insertBefore('inside', 'attr-value', {\n\t\t'style-attr': {\n\t\t\tpattern: /\\s*style=(\"|').*?\\1/i,\n\t\t\tinside: {\n\t\t\t\t'attr-name': {\n\t\t\t\t\tpattern: /^\\s*style/i,\n\t\t\t\t\tinside: Prism.languages.markup.tag.inside\n\t\t\t\t},\n\t\t\t\t'punctuation': /^\\s*=\\s*['\"]|['\"]\\s*$/,\n\t\t\t\t'attr-value': {\n\t\t\t\t\tpattern: /.+/i,\n\t\t\t\t\tinside: Prism.languages.css\n\t\t\t\t}\n\t\t\t},\n\t\t\talias: 'language-css'\n\t\t}\n\t}, Prism.languages.markup.tag);\n}\n\n/* **********************************************\n Begin prism-clike.js\n********************************************** */\n\nPrism.languages.clike = {\n\t'comment': [\n\t\t{\n\t\t\tpattern: /(^|[^\\\\])\\/\\*[\\w\\W]*?\\*\\//,\n\t\t\tlookbehind: true\n\t\t},\n\t\t{\n\t\t\tpattern: /(^|[^\\\\:])\\/\\/.*/,\n\t\t\tlookbehind: true\n\t\t}\n\t],\n\t'string': {\n\t\tpattern: /([\"'])(\\\\(?:\\r\\n|[\\s\\S])|(?!\\1)[^\\\\\\r\\n])*\\1/,\n\t\tgreedy: true\n\t},\n\t'class-name': {\n\t\tpattern: /((?:\\b(?:class|interface|extends|implements|trait|instanceof|new)\\s+)|(?:catch\\s+\\())[a-z0-9_\\.\\\\]+/i,\n\t\tlookbehind: true,\n\t\tinside: {\n\t\t\tpunctuation: /(\\.|\\\\)/\n\t\t}\n\t},\n\t'keyword': /\\b(if|else|while|do|for|return|in|instanceof|function|new|try|throw|catch|finally|null|break|continue)\\b/,\n\t'boolean': /\\b(true|false)\\b/,\n\t'function': /[a-z0-9_]+(?=\\()/i,\n\t'number': /\\b-?(?:0x[\\da-f]+|\\d*\\.?\\d+(?:e[+-]?\\d+)?)\\b/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*|\\/|~|\\^|%/,\n\t'punctuation': /[{}[\\];(),.:]/\n};\n\n\n/* **********************************************\n Begin prism-javascript.js\n********************************************** */\n\nPrism.languages.javascript = Prism.languages.extend('clike', {\n\t'keyword': /\\b(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|var|void|while|with|yield)\\b/,\n\t'number': /\\b-?(0x[\\dA-Fa-f]+|0b[01]+|0o[0-7]+|\\d*\\.?\\d+([Ee][+-]?\\d+)?|NaN|Infinity)\\b/,\n\t// Allow for all non-ASCII characters (See http://stackoverflow.com/a/2008444)\n\t'function': /[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*(?=\\()/i,\n\t'operator': /--?|\\+\\+?|!=?=?|<=?|>=?|==?=?|&&?|\\|\\|?|\\?|\\*\\*?|\\/|~|\\^|%|\\.{3}/\n});\n\nPrism.languages.insertBefore('javascript', 'keyword', {\n\t'regex': {\n\t\tpattern: /(^|[^/])\\/(?!\\/)(\\[.+?]|\\\\.|[^/\\\\\\r\\n])+\\/[gimyu]{0,5}(?=\\s*($|[\\r\\n,.;})]))/,\n\t\tlookbehind: true,\n\t\tgreedy: true\n\t}\n});\n\nPrism.languages.insertBefore('javascript', 'string', {\n\t'template-string': {\n\t\tpattern: /`(?:\\\\\\\\|\\\\?[^\\\\])*?`/,\n\t\tgreedy: true,\n\t\tinside: {\n\t\t\t'interpolation': {\n\t\t\t\tpattern: /\\$\\{[^}]+\\}/,\n\t\t\t\tinside: {\n\t\t\t\t\t'interpolation-punctuation': {\n\t\t\t\t\t\tpattern: /^\\$\\{|\\}$/,\n\t\t\t\t\t\talias: 'punctuation'\n\t\t\t\t\t},\n\t\t\t\t\trest: Prism.languages.javascript\n\t\t\t\t}\n\t\t\t},\n\t\t\t'string': /[\\s\\S]+/\n\t\t}\n\t}\n});\n\nif (Prism.languages.markup) {\n\tPrism.languages.insertBefore('markup', 'tag', {\n\t\t'script': {\n\t\t\tpattern: /()[\\w\\W]*?(?=<\\/script>)/i,\n\t\t\tlookbehind: true,\n\t\t\tinside: Prism.languages.javascript,\n\t\t\talias: 'language-javascript'\n\t\t}\n\t});\n}\n\nPrism.languages.js = Prism.languages.javascript;\n\n/* **********************************************\n Begin prism-file-highlight.js\n********************************************** */\n\n(function () {\n\tif (typeof self === 'undefined' || !self.Prism || !self.document || !document.querySelector) {\n\t\treturn;\n\t}\n\n\tself.Prism.fileHighlight = function() {\n\n\t\tvar Extensions = {\n\t\t\t'js': 'javascript',\n\t\t\t'py': 'python',\n\t\t\t'rb': 'ruby',\n\t\t\t'ps1': 'powershell',\n\t\t\t'psm1': 'powershell',\n\t\t\t'sh': 'bash',\n\t\t\t'bat': 'batch',\n\t\t\t'h': 'c',\n\t\t\t'tex': 'latex'\n\t\t};\n\n\t\tif(Array.prototype.forEach) { // Check to prevent error in IE8\n\t\t\tArray.prototype.slice.call(document.querySelectorAll('pre[data-src]')).forEach(function (pre) {\n\t\t\t\tvar src = pre.getAttribute('data-src');\n\n\t\t\t\tvar language, parent = pre;\n\t\t\t\tvar lang = /\\blang(?:uage)?-(?!\\*)(\\w+)\\b/i;\n\t\t\t\twhile (parent && !lang.test(parent.className)) {\n\t\t\t\t\tparent = parent.parentNode;\n\t\t\t\t}\n\n\t\t\t\tif (parent) {\n\t\t\t\t\tlanguage = (pre.className.match(lang) || [, ''])[1];\n\t\t\t\t}\n\n\t\t\t\tif (!language) {\n\t\t\t\t\tvar extension = (src.match(/\\.(\\w+)$/) || [, ''])[1];\n\t\t\t\t\tlanguage = Extensions[extension] || extension;\n\t\t\t\t}\n\n\t\t\t\tvar code = document.createElement('code');\n\t\t\t\tcode.className = 'language-' + language;\n\n\t\t\t\tpre.textContent = '';\n\n\t\t\t\tcode.textContent = 'Loading…';\n\n\t\t\t\tpre.appendChild(code);\n\n\t\t\t\tvar xhr = new XMLHttpRequest();\n\n\t\t\t\txhr.open('GET', src, true);\n\n\t\t\t\txhr.onreadystatechange = function () {\n\t\t\t\t\tif (xhr.readyState == 4) {\n\n\t\t\t\t\t\tif (xhr.status < 400 && xhr.responseText) {\n\t\t\t\t\t\t\tcode.textContent = xhr.responseText;\n\n\t\t\t\t\t\t\tPrism.highlightElement(code);\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse if (xhr.status >= 400) {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error ' + xhr.status + ' while fetching file: ' + xhr.statusText;\n\t\t\t\t\t\t}\n\t\t\t\t\t\telse {\n\t\t\t\t\t\t\tcode.textContent = '✖ Error: File does not exist or is empty';\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\txhr.send(null);\n\t\t\t});\n\t\t}\n\n\t};\n\n\tdocument.addEventListener('DOMContentLoaded', self.Prism.fileHighlight);\n\n})();\n","import Prism from \"prismjs\";\n\nexport default function(dom, data) {\n let codeElements = [].slice.call(dom.querySelectorAll(\"dt-code\"));\n codeElements.forEach(el => {\n let content = el.textContent;\n el.innerHTML = \"\";\n let language = el.getAttribute(\"language\");\n let c = dom.createElement(\"code\");\n if (el.getAttribute(\"block\") === \"\") {\n // Let's normalize the tab indents\n content = content.replace(/\\n/, \"\");\n let tabs = content.match(/\\s*/);\n content = content.replace(new RegExp(\"\\n\" + tabs, \"g\"), \"\\n\");\n content = content.trim();\n let p = dom.createElement(\"pre\");\n p.appendChild(c);\n el.appendChild(p);\n } else {\n el.appendChild(c);\n }\n let highlighted = content;\n if (Prism.languages[language]) {\n c.setAttribute(\"class\", \"language-\" + language);\n highlighted = Prism.highlight(content, Prism.languages[language]);\n }\n c.innerHTML = highlighted;\n });\n}\n"],"names":["isNothing","subject","isObject","toArray","sequence","Array","isArray","extend","target","source","index","length","key","sourceKeys","Object","keys","repeat","string","count","cycle","result","isNegativeZero","number","Number","NEGATIVE_INFINITY","YAMLException","reason","mark","Error","call","this","captureStackTrace","constructor","stack","name","message","toString","Mark","buffer","position","line","column","compileStyleAliases","map","forEach","style","alias","String","Type","tag","options","TYPE_CONSTRUCTOR_OPTIONS","indexOf","kind","resolve","construct","data","instanceOf","predicate","represent","defaultStyle","styleAliases","YAML_NODE_KINDS","compileList","schema","exclude","include","includedSchema","currentType","previousType","previousIndex","push","filter","type","compileMap","collectType","scalar","mapping","fallback","arguments","Schema","definition","implicit","explicit","loadKind","compiledImplicit","compiledExplicit","compiledTypeMap","resolveYamlNull","max","constructYamlNull","isNull","object","resolveYamlBoolean","constructYamlBoolean","isBoolean","prototype","isHexCode","c","isOctCode","isDecCode","resolveYamlInteger","ch","hasDigits","charCodeAt","test","slice","constructYamlInteger","base","value","sign","digits","replace","parseInt","split","v","unshift","d","isInteger","common","resolveYamlFloat","YAML_FLOAT_PATTERN","constructYamlFloat","toLowerCase","POSITIVE_INFINITY","NaN","parseFloat","representYamlFloat","res","isNaN","SCIENTIFIC_WITHOUT_DOT","isFloat","resolveYamlTimestamp","YAML_DATE_REGEXP","exec","YAML_TIMESTAMP_REGEXP","constructYamlTimestamp","match","year","month","day","hour","minute","second","tz_hour","tz_minute","date","fraction","delta","Date","UTC","setTime","getTime","representYamlTimestamp","toISOString","resolveYamlMerge","resolveYamlBinary","code","idx","bitlen","BASE64_MAP","charAt","constructYamlBinary","tailbits","input","bits","NodeBuffer","representYamlBinary","tail","isBinary","isBuffer","resolveYamlOmap","pair","pairKey","pairHasKey","objectKeys","_toString","_hasOwnProperty","constructYamlOmap","resolveYamlPairs","constructYamlPairs","resolveYamlSet","constructYamlSet","resolveJavascriptUndefined","constructJavascriptUndefined","representJavascriptUndefined","isUndefined","resolveJavascriptRegExp","regexp","modifiers","constructJavascriptRegExp","RegExp","representJavascriptRegExp","global","multiline","ignoreCase","isRegExp","resolveJavascriptFunction","ast","esprima","parse","range","body","expression","err","constructJavascriptFunction","params","param","Function","representJavascriptFunction","isFunction","is_EOL","is_WHITE_SPACE","is_WS_OR_EOL","is_FLOW_INDICATOR","fromHexCode","lc","escapedHexLen","fromDecimalCode","simpleEscapeSequence","charFromCodepoint","fromCharCode","State","filename","DEFAULT_FULL_SCHEMA","onWarning","legacy","json","listener","implicitTypes","typeMap","lineStart","lineIndent","documents","generateError","state","throwError","throwWarning","captureSegment","start","end","checkJson","_position","_length","_character","_result","PATTERN_NON_PRINTABLE","mergeMappings","destination","overridableKeys","quantity","storeMappingPair","keyTag","keyNode","valueNode","readLineBreak","skipSeparationSpace","allowComments","checkIndent","lineBreaks","testDocumentSeparator","writeFoldedLines","readPlainScalar","nodeIndent","withinFlowCollection","preceding","following","captureStart","captureEnd","hasPendingContent","_line","_lineStart","_lineIndent","_kind","readSingleQuotedScalar","readDoubleQuotedScalar","hexLength","hexResult","tmp","simpleEscapeCheck","simpleEscapeMap","readFlowCollection","terminator","isPair","isExplicitPair","isMapping","readNext","_tag","_anchor","anchor","anchorMap","composeNode","CONTEXT_FLOW_IN","readBlockScalar","folding","chomping","CHOMPING_CLIP","didReadContent","detectedIndent","textIndent","emptyLines","atMoreIndented","CHOMPING_KEEP","CHOMPING_STRIP","readBlockSequence","detected","CONTEXT_BLOCK_IN","readBlockMapping","flowIndent","allowCompact","atExplicitKey","CONTEXT_FLOW_OUT","CONTEXT_BLOCK_OUT","readTagProperty","tagHandle","tagName","isVerbatim","isNamed","PATTERN_TAG_HANDLE","PATTERN_FLOW_INDICATORS","PATTERN_TAG_URI","tagMap","readAnchorProperty","readAlias","hasOwnProperty","parentIndent","nodeContext","allowToSeek","allowBlockStyles","allowBlockScalars","allowBlockCollections","typeIndex","typeQuantity","blockIndent","indentStatus","atNewLine","hasContent","readDocument","directiveName","directiveArgs","documentStart","hasDirectives","version","checkLineBreaks","directiveHandlers","PATTERN_NON_ASCII_LINE_BREAKS","loadDocuments","loadAll","iterator","load","safeLoadAll","output","DEFAULT_SAFE_SCHEMA","safeLoad","compileStyleMap","encodeHex","character","handle","toUpperCase","indent","Math","skipInvalid","flowLevel","styleMap","sortKeys","lineWidth","noRefs","noCompatMode","explicitTypes","duplicates","usedDuplicates","indentString","spaces","ind","next","generateNextLine","level","testImplicitResolving","str","isWhitespace","CHAR_SPACE","CHAR_TAB","isPrintable","isPlainSafe","CHAR_COMMA","CHAR_LEFT_SQUARE_BRACKET","CHAR_RIGHT_SQUARE_BRACKET","CHAR_LEFT_CURLY_BRACKET","CHAR_RIGHT_CURLY_BRACKET","CHAR_COLON","CHAR_SHARP","isPlainSafeFirst","CHAR_MINUS","CHAR_QUESTION","CHAR_AMPERSAND","CHAR_ASTERISK","CHAR_EXCLAMATION","CHAR_VERTICAL_LINE","CHAR_GREATER_THAN","CHAR_SINGLE_QUOTE","CHAR_DOUBLE_QUOTE","CHAR_PERCENT","CHAR_COMMERCIAL_AT","CHAR_GRAVE_ACCENT","chooseScalarStyle","singleLineOnly","indentPerLevel","testAmbiguousType","i","char","hasLineBreak","hasFoldableLine","shouldTrackWidth","previousLineBreak","plain","STYLE_DOUBLE","CHAR_LINE_FEED","STYLE_FOLDED","STYLE_LITERAL","STYLE_PLAIN","STYLE_SINGLE","writeScalar","iskey","dump","testAmbiguity","DEPRECATED_BOOLEANS_SYNTAX","min","blockHeader","dropEndingNewline","foldString","escapeString","indentIndicator","clip","keep","chomp","width","moreIndented","lineRe","nextLF","lastIndex","foldLine","prevMoreIndented","prefix","breakRe","curr","escapeSeq","ESCAPE_SEQUENCES","writeFlowSequence","writeNode","writeBlockSequence","compact","writeFlowMapping","objectKey","objectValue","pairBuffer","objectKeyList","writeBlockMapping","explicitPair","sort","detectType","typeList","block","duplicateIndex","duplicate","objectOrArray","getDuplicateReferences","objects","duplicatesIndexes","inspectNode","safeDump","deprecated","appendHtml","el","html","innerHTML","citation_meta_content","ref","content","author","trim","issue","render","dom","styles","document","addEventListener","event","frontMatter","bibliography","expandData","meta","header","appendix","footer","markdown","citation","console","log","k","querySelector","getAttribute","setAttribute","let","head","createElement","appendChild","s","textContent","layout","article","create","require$$0","getSnippet","maxLength","snippet","where","require$$1","require$$2","DEFAULT","schemas","types","every","require$$3","canonical","lowercase","uppercase","camelcase","binary","octal","decimal","hexadecimal","require$$4","require$$5","_require","require","Buffer","__","require$$6","require$$7","_","window","YAML","args","major","minor","TAG","loader","dumper","require$$8","require$$9","yaml","text","localData","ymlParse","title","description","published","updated","authors","a","names","firstName","join","lastName","personalURL","affiliations","affiliation","affiliationURL","exports","BibtexParser","months","notKey","pos","entries","currentEntry","setInput","t","getEntries","canCommentOut","undefined","skipWhitespace","substring","tryMatch","matchAt","value_braces","bracecount","escaped","value_comment","brcktCnt","value_quotes","single_value","values","key_equals_value","val","key_value_list","kv","entry_body","directive","preamble","comment","entry","bibtex","toJSON","b","toBibtex","out","entryType","citationKey","entryTags","tags","jdx","rawBib","bibtexParse","e","citations","citeTags","apply","querySelectorAll","citationKeys","warn","volume","getFullYear","getMonth","appendHead","journal","zeroPad","n","publishedYear","publishedMonthPadded","publishedDayPadded","getDate","url","doiSuffix","doi","nameAbbrev","issn","publisher","logo","inline_cite","ent","bibliography_cite","cite","name_strings","last","firsts","initials","booktitle","pages","localeCompare","cite_string","bibEl","ol","Lexer","tokens","links","marked","defaults","rules","normal","gfm","tables","InlineLexer","inline","renderer","Renderer","breaks","pedantic","Parser","token","escape","encode","unescape","regex","opt","self","noop","merge","obj","src","callback","pending","highlight","lex","done","lang","silent","newline","fences","hr","heading","nptable","lheading","blockquote","list","def","table","paragraph","bullet","item","lexer","top","bq","loose","cap","bull","space","l","depth","align","cells","ordered","smartLists","sanitize","pre","sanitizer","href","autolink","link","reflink","nolink","strong","em","br","del","_inside","_href","mangle","inLink","outputLink","codespan","smartypants","image","random","langPrefix","quote","raw","headerPrefix","xhtml","listitem","tablerow","tablecell","flags","prot","decodeURIComponent","parser","reverse","tok","pop","peek","parseText","row","cell","j","setOptions","inlineLexer","module","markdownElements","tabs","_self","WorkerGlobalScope","Prism","uniqueId","util","Token","o","objId","defineProperty","clone","languages","id","redef","insertBefore","inside","before","insert","root","grammar","newToken","ret","DFS","visited","plugins","highlightAll","async","env","selector","hooks","run","element","elements","highlightElement","language","parent","className","parentNode","nodeName","Worker","worker","onmessage","evt","highlightedCode","postMessage","JSON","stringify","immediateClose","tokenize","strarr","rest","tokenloop","patterns","pattern","lookbehind","greedy","lookbehindLength","delNum","from","to","p","len","after","wrapped","splice","all","add","callbacks","matchedStr","classes","attributes","aliases","close","script","currentScript","getElementsByTagName","hasAttribute","readyState","requestAnimationFrame","setTimeout","markup","prolog","doctype","cdata","punctuation","namespace","attr-value","attr-name","entity","xml","mathml","svg","css","atrule","rule","property","important","function","style-attr","clike","class-name","keyword","boolean","operator","javascript","template-string","interpolation","interpolation-punctuation","js","fileHighlight","Extensions","py","rb","ps1","psm1","sh","bat","h","tex","extension","xhr","XMLHttpRequest","open","onreadystatechange","status","responseText","statusText","send","codeElements","highlighted"],"mappings":"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"} \ No newline at end of file