Skip to content

Instantly share code, notes, and snippets.

@kumavis
Created March 18, 2015 07:26
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kumavis/d85661338746b82c46ef to your computer and use it in GitHub Desktop.
Save kumavis/d85661338746b82c46ef to your computer and use it in GitHub Desktop.
requirebin sketch
var esquery = require('esquery')
var esprima = require('esprima')
var treeify = require('treeify').asTree
var src = 'var x = require("x"); var z = require("z")'
function go(selector){
var ast = esprima.parse(src);
var selectorAst = esquery.parse(selector);
log(selectorAst)
var matches = esquery.match(ast, selectorAst);
return matches
}
var results = go('[type="CallExpression"]').map( extractDependencyName )
log(results)
function extractDependencyName(node){
return node.arguments[0].value
}
function log(output) {
alert( treeify(output, true) )
}
require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({1:[function(require,module,exports){(function(root,factory){"use strict";if(typeof define==="function"&&define.amd){define(["exports"],factory)}else if(typeof exports!=="undefined"){factory(exports)}else{factory(root.estraverse={})}})(this,function(exports){"use strict";var Syntax,isArray,VisitorOption,VisitorKeys,BREAK,SKIP;Syntax={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",ArrowFunctionExpression:"ArrowFunctionExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DebuggerStatement:"DebuggerStatement",DirectiveStatement:"DirectiveStatement",DoWhileStatement:"DoWhileStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement",YieldExpression:"YieldExpression"};function ignoreJSHintError(){}isArray=Array.isArray;if(!isArray){isArray=function isArray(array){return Object.prototype.toString.call(array)==="[object Array]"}}function deepCopy(obj){var ret={},key,val;for(key in obj){if(obj.hasOwnProperty(key)){val=obj[key];if(typeof val==="object"&&val!==null){ret[key]=deepCopy(val)}else{ret[key]=val}}}return ret}function shallowCopy(obj){var ret={},key;for(key in obj){if(obj.hasOwnProperty(key)){ret[key]=obj[key]}}return ret}ignoreJSHintError(shallowCopy);function upperBound(array,func){var diff,len,i,current;len=array.length;i=0;while(len){diff=len>>>1;current=i+diff;if(func(array[current])){len=diff}else{i=current+1;len-=diff+1}}return i}function lowerBound(array,func){var diff,len,i,current;len=array.length;i=0;while(len){diff=len>>>1;current=i+diff;if(func(array[current])){i=current+1;len-=diff+1}else{len=diff}}return i}ignoreJSHintError(lowerBound);VisitorKeys={AssignmentExpression:["left","right"],ArrayExpression:["elements"],ArrowFunctionExpression:["params","body"],BlockStatement:["body"],BinaryExpression:["left","right"],BreakStatement:["label"],CallExpression:["callee","arguments"],CatchClause:["param","body"],ClassBody:["body"],ClassDeclaration:["id","body","superClass"],ClassExpression:["id","body","superClass"],ConditionalExpression:["test","consequent","alternate"],ContinueStatement:["label"],DebuggerStatement:[],DirectiveStatement:[],DoWhileStatement:["body","test"],EmptyStatement:[],ExpressionStatement:["expression"],ForStatement:["init","test","update","body"],ForInStatement:["left","right","body"],FunctionDeclaration:["id","params","body"],FunctionExpression:["id","params","body"],Identifier:[],IfStatement:["test","consequent","alternate"],Literal:[],LabeledStatement:["label","body"],LogicalExpression:["left","right"],MemberExpression:["object","property"],MethodDefinition:["key","value"],NewExpression:["callee","arguments"],ObjectExpression:["properties"],Program:["body"],Property:["key","value"],ReturnStatement:["argument"],SequenceExpression:["expressions"],SwitchStatement:["discriminant","cases"],SwitchCase:["test","consequent"],ThisExpression:[],ThrowStatement:["argument"],TryStatement:["block","handlers","handler","guardedHandlers","finalizer"],UnaryExpression:["argument"],UpdateExpression:["argument"],VariableDeclaration:["declarations"],VariableDeclarator:["id","init"],WhileStatement:["test","body"],WithStatement:["object","body"],YieldExpression:["argument"]};BREAK={};SKIP={};VisitorOption={Break:BREAK,Skip:SKIP};function Reference(parent,key){this.parent=parent;this.key=key}Reference.prototype.replace=function replace(node){this.parent[this.key]=node};function Element(node,path,wrap,ref){this.node=node;this.path=path;this.wrap=wrap;this.ref=ref}function Controller(){}Controller.prototype.path=function path(){var i,iz,j,jz,result,element;function addToPath(result,path){if(isArray(path)){for(j=0,jz=path.length;j<jz;++j){result.push(path[j])}}else{result.push(path)}}if(!this.__current.path){return null}result=[];for(i=2,iz=this.__leavelist.length;i<iz;++i){element=this.__leavelist[i];addToPath(result,element.path)}addToPath(result,this.__current.path);return result};Controller.prototype.parents=function parents(){var i,iz,result;result=[];for(i=1,iz=this.__leavelist.length;i<iz;++i){result.push(this.__leavelist[i].node)}return result};Controller.prototype.current=function current(){return this.__current.node};Controller.prototype.__execute=function __execute(callback,element){var previous,result;result=undefined;previous=this.__current;this.__current=element;this.__state=null;if(callback){result=callback.call(this,element.node,this.__leavelist[this.__leavelist.length-1].node)}this.__current=previous;return result};Controller.prototype.notify=function notify(flag){this.__state=flag};Controller.prototype.skip=function(){this.notify(SKIP)};Controller.prototype["break"]=function(){this.notify(BREAK)};Controller.prototype.__initialize=function(root,visitor){this.visitor=visitor;this.root=root;this.__worklist=[];this.__leavelist=[];this.__current=null;this.__state=null};Controller.prototype.traverse=function traverse(root,visitor){var worklist,leavelist,element,node,nodeType,ret,key,current,current2,candidates,candidate,sentinel;this.__initialize(root,visitor);sentinel={};worklist=this.__worklist;leavelist=this.__leavelist;worklist.push(new Element(root,null,null,null));leavelist.push(new Element(null,null,null,null));while(worklist.length){element=worklist.pop();if(element===sentinel){element=leavelist.pop();ret=this.__execute(visitor.leave,element);if(this.__state===BREAK||ret===BREAK){return}continue}if(element.node){ret=this.__execute(visitor.enter,element);if(this.__state===BREAK||ret===BREAK){return}worklist.push(sentinel);leavelist.push(element);if(this.__state===SKIP||ret===SKIP){continue}node=element.node;nodeType=element.wrap||node.type;candidates=VisitorKeys[nodeType];current=candidates.length;while((current-=1)>=0){key=candidates[current];candidate=node[key];if(!candidate){continue}if(!isArray(candidate)){worklist.push(new Element(candidate,key,null,null));continue}current2=candidate.length;while((current2-=1)>=0){if(!candidate[current2]){continue}if(nodeType===Syntax.ObjectExpression&&"properties"===candidates[current]){element=new Element(candidate[current2],[key,current2],"Property",null)}else{element=new Element(candidate[current2],[key,current2],null,null)}worklist.push(element)}}}}};Controller.prototype.replace=function replace(root,visitor){var worklist,leavelist,node,nodeType,target,element,current,current2,candidates,candidate,sentinel,outer,key;this.__initialize(root,visitor);sentinel={};worklist=this.__worklist;leavelist=this.__leavelist;outer={root:root};element=new Element(root,null,null,new Reference(outer,"root"));worklist.push(element);leavelist.push(element);while(worklist.length){element=worklist.pop();if(element===sentinel){element=leavelist.pop();target=this.__execute(visitor.leave,element);if(target!==undefined&&target!==BREAK&&target!==SKIP){element.ref.replace(target)}if(this.__state===BREAK||target===BREAK){return outer.root}continue}target=this.__execute(visitor.enter,element);if(target!==undefined&&target!==BREAK&&target!==SKIP){element.ref.replace(target);element.node=target}if(this.__state===BREAK||target===BREAK){return outer.root}node=element.node;if(!node){continue}worklist.push(sentinel);leavelist.push(element);if(this.__state===SKIP||target===SKIP){continue}nodeType=element.wrap||node.type;candidates=VisitorKeys[nodeType];current=candidates.length;while((current-=1)>=0){key=candidates[current];candidate=node[key];if(!candidate){continue}if(!isArray(candidate)){worklist.push(new Element(candidate,key,null,new Reference(node,key)));continue}current2=candidate.length;while((current2-=1)>=0){if(!candidate[current2]){continue}if(nodeType===Syntax.ObjectExpression&&"properties"===candidates[current]){element=new Element(candidate[current2],[key,current2],"Property",new Reference(candidate,current2))}else{element=new Element(candidate[current2],[key,current2],null,new Reference(candidate,current2))}worklist.push(element)}}}return outer.root};function traverse(root,visitor){var controller=new Controller;return controller.traverse(root,visitor)}function replace(root,visitor){var controller=new Controller;return controller.replace(root,visitor)}function extendCommentRange(comment,tokens){var target;target=upperBound(tokens,function search(token){return token.range[0]>comment.range[0]});comment.extendedRange=[comment.range[0],comment.range[1]];if(target!==tokens.length){comment.extendedRange[1]=tokens[target].range[0]}target-=1;if(target>=0){comment.extendedRange[0]=tokens[target].range[1]}return comment}function attachComments(tree,providedComments,tokens){var comments=[],comment,len,i,cursor;if(!tree.range){throw new Error("attachComments needs range information")}if(!tokens.length){if(providedComments.length){for(i=0,len=providedComments.length;i<len;i+=1){comment=deepCopy(providedComments[i]);comment.extendedRange=[0,tree.range[0]];comments.push(comment)}tree.leadingComments=comments}return tree}for(i=0,len=providedComments.length;i<len;i+=1){comments.push(extendCommentRange(deepCopy(providedComments[i]),tokens))}cursor=0;traverse(tree,{enter:function(node){var comment;while(cursor<comments.length){comment=comments[cursor];if(comment.extendedRange[1]>node.range[0]){break}if(comment.extendedRange[1]===node.range[0]){if(!node.leadingComments){node.leadingComments=[]}node.leadingComments.push(comment);comments.splice(cursor,1)}else{cursor+=1}}if(cursor===comments.length){return VisitorOption.Break}if(comments[cursor].extendedRange[0]>node.range[1]){return VisitorOption.Skip}}});cursor=0;traverse(tree,{leave:function(node){var comment;while(cursor<comments.length){comment=comments[cursor];if(node.range[1]<comment.extendedRange[0]){break}if(node.range[1]===comment.extendedRange[0]){if(!node.trailingComments){node.trailingComments=[]}node.trailingComments.push(comment);comments.splice(cursor,1)}else{cursor+=1}}if(cursor===comments.length){return VisitorOption.Break}if(comments[cursor].extendedRange[0]>node.range[1]){return VisitorOption.Skip}}});return tree}exports.version="1.3.2";exports.Syntax=Syntax;exports.traverse=traverse;exports.replace=replace;exports.attachComments=attachComments;exports.VisitorKeys=VisitorKeys;exports.VisitorOption=VisitorOption;exports.Controller=Controller})},{}],2:[function(require,module,exports){var result=function(){function subclass(child,parent){function ctor(){this.constructor=child}ctor.prototype=parent.prototype;child.prototype=new ctor}function quote(s){return'"'+s.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}var result={parse:function(input){var parseFunctions={start:parse_start};var options=arguments.length>1?arguments[1]:{},startRule;if(options.startRule!==undefined){startRule=options.startRule;if(parseFunctions[startRule]===undefined){throw new Error("Can't start parsing from rule "+quote(startRule)+".")}}else{startRule="start"}var pos=0;var reportedPos=0;var cachedReportedPos=0;var cachedReportedPosDetails={line:1,column:1,seenCR:false};var reportFailures=0;var rightmostFailuresPos=0;var rightmostFailuresExpected=[];var cache={};function padLeft(input,padding,length){var result=input;var padLength=length-input.length;for(var i=0;i<padLength;i++){result=padding+result}return result}function escape(ch){var charCode=ch.charCodeAt(0);var escapeChar;var length;if(charCode<=255){escapeChar="x";length=2}else{escapeChar="u";length=4}return"\\"+escapeChar+padLeft(charCode.toString(16).toUpperCase(),"0",length)}function computeReportedPosDetails(){function advanceCachedReportedPos(){var ch;for(;cachedReportedPos<reportedPos;cachedReportedPos++){ch=input.charAt(cachedReportedPos);if(ch==="\n"){if(!cachedReportedPosDetails.seenCR){cachedReportedPosDetails.line++}cachedReportedPosDetails.column=1;cachedReportedPosDetails.seenCR=false}else if(ch==="\r"||ch==="\u2028"||ch==="\u2029"){cachedReportedPosDetails.line++;cachedReportedPosDetails.column=1;cachedReportedPosDetails.seenCR=true}else{cachedReportedPosDetails.column++;cachedReportedPosDetails.seenCR=false}}}if(cachedReportedPos!==reportedPos){if(cachedReportedPos>reportedPos){cachedReportedPos=0;cachedReportedPosDetails={line:1,column:1,seenCR:false}}advanceCachedReportedPos()}return cachedReportedPosDetails}function text(){return input.substring(reportedPos,pos)}function offset(){return reportedPos}function line(){return computeReportedPosDetails().line}function column(){return computeReportedPosDetails().column}function matchFailed(failure){if(pos<rightmostFailuresPos){return}if(pos>rightmostFailuresPos){rightmostFailuresPos=pos;rightmostFailuresExpected=[]}rightmostFailuresExpected.push(failure)}function parse_start(){var cacheKey="start@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1;r1=pos;r0=parse_selectors();if(r0!==null){reportedPos=r1;r0=function(ss){return ss.length===1?ss[0]:{type:"matches",selectors:ss}}(r0)}if(r0===null){pos=r1}if(r0===null){r1=pos;r0="";if(r0!==null){reportedPos=r1;r0=function(){return void 0}()}if(r0===null){pos=r1}}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse__(){var cacheKey="_@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1;r0=[];if(input.charCodeAt(pos)===32){r1=" ";pos++}else{r1=null;if(reportFailures===0){matchFailed('" "')}}while(r1!==null){r0.push(r1);if(input.charCodeAt(pos)===32){r1=" ";pos++}else{r1=null;if(reportFailures===0){matchFailed('" "')}}}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_identifierName(){var cacheKey="identifierName@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2;r1=pos;if(/^[^ [\],():#!=><~+.]/.test(input.charAt(pos))){r2=input.charAt(pos);pos++}else{r2=null;if(reportFailures===0){matchFailed("[^ [\\],():#!=><~+.]")}}if(r2!==null){r0=[];while(r2!==null){r0.push(r2);if(/^[^ [\],():#!=><~+.]/.test(input.charAt(pos))){r2=input.charAt(pos);pos++}else{r2=null;if(reportFailures===0){matchFailed("[^ [\\],():#!=><~+.]")}}}}else{r0=null}if(r0!==null){reportedPos=r1;r0=function(i){return i.join("")}(r0)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_binaryOp(){var cacheKey="binaryOp@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5;r1=pos;r2=pos;r3=parse__();if(r3!==null){if(input.charCodeAt(pos)===62){r4=">";pos++}else{r4=null;if(reportFailures===0){matchFailed('">"')}}if(r4!==null){r5=parse__();if(r5!==null){r0=[r3,r4,r5]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(){return"child"}()}if(r0===null){pos=r1}if(r0===null){r1=pos;r2=pos;r3=parse__();if(r3!==null){if(input.charCodeAt(pos)===126){r4="~";pos++}else{r4=null;if(reportFailures===0){matchFailed('"~"')}}if(r4!==null){r5=parse__();if(r5!==null){r0=[r3,r4,r5]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(){return"sibling"}()}if(r0===null){pos=r1}if(r0===null){r1=pos;r2=pos;r3=parse__();if(r3!==null){if(input.charCodeAt(pos)===43){r4="+";pos++}else{r4=null;if(reportFailures===0){matchFailed('"+"')}}if(r4!==null){r5=parse__();if(r5!==null){r0=[r3,r4,r5]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(){return"adjacent"}()}if(r0===null){pos=r1}if(r0===null){r1=pos;r2=pos;if(input.charCodeAt(pos)===32){r3=" ";pos++}else{r3=null;if(reportFailures===0){matchFailed('" "')}}if(r3!==null){r4=parse__();if(r4!==null){r0=[r3,r4]}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(){return"descendant"}()}if(r0===null){pos=r1}}}}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_selectors(){var cacheKey="selectors@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10;r1=pos;r2=pos;r3=parse_selector();if(r3!==null){r4=[];r6=pos;r7=parse__();if(r7!==null){if(input.charCodeAt(pos)===44){r8=",";pos++}else{r8=null;if(reportFailures===0){matchFailed('","')}}if(r8!==null){r9=parse__();if(r9!==null){r10=parse_selector();if(r10!==null){r5=[r7,r8,r9,r10]}else{r5=null;pos=r6}}else{r5=null;pos=r6}}else{r5=null;pos=r6}}else{r5=null;pos=r6}while(r5!==null){r4.push(r5);r6=pos;r7=parse__();if(r7!==null){if(input.charCodeAt(pos)===44){r8=",";pos++}else{r8=null;if(reportFailures===0){matchFailed('","')}}if(r8!==null){r9=parse__();if(r9!==null){r10=parse_selector();if(r10!==null){r5=[r7,r8,r9,r10]}else{r5=null;pos=r6}}else{r5=null;pos=r6}}else{r5=null;pos=r6}}else{r5=null;pos=r6}}if(r4!==null){r0=[r3,r4]}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(s,ss){return[s].concat(ss.map(function(s){return s[3]}))}(r3,r4)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_selector(){var cacheKey="selector@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7,r8;r1=pos;r2=pos;r3=parse_sequence();if(r3!==null){r4=[];r6=pos;r7=parse_binaryOp();if(r7!==null){r8=parse_sequence();if(r8!==null){r5=[r7,r8]}else{r5=null;pos=r6}}else{r5=null;pos=r6}while(r5!==null){r4.push(r5);r6=pos;r7=parse_binaryOp();if(r7!==null){r8=parse_sequence();if(r8!==null){r5=[r7,r8]}else{r5=null;pos=r6}}else{r5=null;pos=r6}}if(r4!==null){r0=[r3,r4]}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(a,ops){return ops.reduce(function(memo,rhs){return{type:rhs[0],left:memo,right:rhs[1]}},a)}(r3,r4)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_sequence(){var cacheKey="sequence@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6;r1=pos;r3=pos;r4=pos;r5=parse_atom();if(r5!==null){if(input.charCodeAt(pos)===33){r6="!";pos++}else{r6=null;if(reportFailures===0){matchFailed('"!"')}}r6=r6!==null?r6:"";if(r6!==null){r2=[r5,r6]}else{r2=null;pos=r4}}else{r2=null;pos=r4}if(r2!==null){reportedPos=r3;r2=function(a,s){if(s)a.subject=true;return a}(r5,r6)}if(r2===null){pos=r3}if(r2!==null){r0=[];while(r2!==null){r0.push(r2);r3=pos;r4=pos;r5=parse_atom();if(r5!==null){if(input.charCodeAt(pos)===33){r6="!";pos++}else{r6=null;if(reportFailures===0){matchFailed('"!"')}}r6=r6!==null?r6:"";if(r6!==null){r2=[r5,r6]}else{r2=null;pos=r4}}else{r2=null;pos=r4}if(r2!==null){reportedPos=r3;r2=function(a,s){if(s)a.subject=true;return a}(r5,r6)}if(r2===null){pos=r3}}}else{r0=null}if(r0!==null){reportedPos=r1;r0=function(bs){return bs.length===1?bs[0]:{type:"compound",selectors:bs}}(r0)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_atom(){var cacheKey="atom@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0;r0=parse_wildcard();if(r0===null){r0=parse_identifier();if(r0===null){r0=parse_attr();if(r0===null){r0=parse_field();if(r0===null){r0=parse_negation();if(r0===null){r0=parse_matches();if(r0===null){r0=parse_firstChild();if(r0===null){r0=parse_lastChild();if(r0===null){r0=parse_nthChild();if(r0===null){r0=parse_nthLastChild()}}}}}}}}}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_wildcard(){var cacheKey="wildcard@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1;r1=pos;if(input.charCodeAt(pos)===42){r0="*";pos++}else{r0=null;if(reportFailures===0){matchFailed('"*"')}}if(r0!==null){reportedPos=r1;r0=function(a){return{type:"wildcard",value:a}}(r0)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_identifier(){var cacheKey="identifier@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4;r1=pos;r2=pos;if(input.charCodeAt(pos)===35){r3="#";pos++}else{r3=null;if(reportFailures===0){matchFailed('"#"')}}r3=r3!==null?r3:"";if(r3!==null){r4=parse_identifierName();if(r4!==null){r0=[r3,r4]}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(i){return{type:"identifier",value:i.toLowerCase()}}(r4)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_attr(){var cacheKey="attr@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7;r1=pos;r2=pos;if(input.charCodeAt(pos)===91){r3="[";pos++}else{r3=null;if(reportFailures===0){matchFailed('"["')}}if(r3!==null){r4=parse__();if(r4!==null){r5=parse_attrValue();if(r5!==null){r6=parse__();if(r6!==null){if(input.charCodeAt(pos)===93){r7="]";pos++}else{r7=null;if(reportFailures===0){matchFailed('"]"')}}if(r7!==null){r0=[r3,r4,r5,r6,r7]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(v){return v}(r5)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_attrOps(){var cacheKey="attrOps@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4;r1=pos;r2=pos;if(/^[><!]/.test(input.charAt(pos))){r3=input.charAt(pos);pos++}else{r3=null;if(reportFailures===0){matchFailed("[><!]")}}r3=r3!==null?r3:"";if(r3!==null){if(input.charCodeAt(pos)===61){r4="=";pos++}else{r4=null;if(reportFailures===0){matchFailed('"="')}}if(r4!==null){r0=[r3,r4]}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(a){return a+"="}(r3)}if(r0===null){pos=r1}if(r0===null){if(/^[><]/.test(input.charAt(pos))){r0=input.charAt(pos);pos++}else{r0=null;if(reportFailures===0){matchFailed("[><]")}}}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_attrEqOps(){var cacheKey="attrEqOps@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4;r1=pos;r2=pos;if(input.charCodeAt(pos)===33){r3="!";pos++}else{r3=null;if(reportFailures===0){matchFailed('"!"')}}r3=r3!==null?r3:"";if(r3!==null){if(input.charCodeAt(pos)===61){r4="=";pos++}else{r4=null;if(reportFailures===0){matchFailed('"="')}}if(r4!==null){r0=[r3,r4]}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(a){return a+"="}(r3)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_attrName(){var cacheKey="attrName@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2;r1=pos;r2=parse_identifierName();if(r2===null){if(input.charCodeAt(pos)===46){r2=".";pos++}else{r2=null;if(reportFailures===0){matchFailed('"."')}}}if(r2!==null){r0=[];while(r2!==null){r0.push(r2);r2=parse_identifierName();if(r2===null){if(input.charCodeAt(pos)===46){r2=".";pos++}else{r2=null;if(reportFailures===0){matchFailed('"."')}}}}}else{r0=null}if(r0!==null){reportedPos=r1;r0=function(i){return i.join("")}(r0)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_attrValue(){var cacheKey="attrValue@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7;r1=pos;r2=pos;r3=parse_attrName();if(r3!==null){r4=parse__();if(r4!==null){r5=parse_attrEqOps();if(r5!==null){r6=parse__();if(r6!==null){r7=parse_type();if(r7===null){r7=parse_regex()}if(r7!==null){r0=[r3,r4,r5,r6,r7]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(name,op,value){return{type:"attribute",name:name,operator:op,value:value}}(r3,r5,r7)}if(r0===null){pos=r1}if(r0===null){r1=pos;r2=pos;r3=parse_attrName();if(r3!==null){r4=parse__();if(r4!==null){r5=parse_attrOps();if(r5!==null){r6=parse__();if(r6!==null){r7=parse_string();if(r7===null){r7=parse_number();if(r7===null){r7=parse_path()}}if(r7!==null){r0=[r3,r4,r5,r6,r7]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(name,op,value){return{type:"attribute",name:name,operator:op,value:value}}(r3,r5,r7)}if(r0===null){pos=r1}if(r0===null){r1=pos;r0=parse_attrName();if(r0!==null){reportedPos=r1;r0=function(name){return{type:"attribute",name:name}}(r0)}if(r0===null){pos=r1}}}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_string(){var cacheKey="string@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;r1=pos;r2=pos;if(input.charCodeAt(pos)===34){r3='"';pos++}else{r3=null;if(reportFailures===0){matchFailed('"\\""')}}if(r3!==null){r4=[];if(/^[^\\"]/.test(input.charAt(pos))){r5=input.charAt(pos);pos++}else{r5=null;if(reportFailures===0){matchFailed('[^\\\\"]')}}if(r5===null){r6=pos;r7=pos;if(input.charCodeAt(pos)===92){r8="\\";pos++}else{r8=null;if(reportFailures===0){matchFailed('"\\\\"')}}if(r8!==null){if(input.length>pos){r9=input.charAt(pos);pos++}else{r9=null;if(reportFailures===0){matchFailed("any character")}}if(r9!==null){r5=[r8,r9]}else{r5=null;pos=r7}}else{r5=null;pos=r7}if(r5!==null){reportedPos=r6;r5=function(a,b){return a+b}(r8,r9)}if(r5===null){pos=r6}}while(r5!==null){r4.push(r5);if(/^[^\\"]/.test(input.charAt(pos))){r5=input.charAt(pos);pos++}else{r5=null;if(reportFailures===0){matchFailed('[^\\\\"]')}}if(r5===null){r6=pos;r7=pos;if(input.charCodeAt(pos)===92){r8="\\";pos++}else{r8=null;if(reportFailures===0){matchFailed('"\\\\"')}}if(r8!==null){if(input.length>pos){r9=input.charAt(pos);pos++}else{r9=null;if(reportFailures===0){matchFailed("any character")}}if(r9!==null){r5=[r8,r9]}else{r5=null;pos=r7}}else{r5=null;pos=r7}if(r5!==null){reportedPos=r6;r5=function(a,b){return a+b}(r8,r9)}if(r5===null){pos=r6}}}if(r4!==null){if(input.charCodeAt(pos)===34){r5='"';pos++}else{r5=null;if(reportFailures===0){matchFailed('"\\""')}}if(r5!==null){r0=[r3,r4,r5]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(d){return{type:"literal",value:strUnescape(d.join(""))}}(r4)}if(r0===null){pos=r1}if(r0===null){r1=pos;r2=pos;if(input.charCodeAt(pos)===39){r3="'";pos++}else{r3=null;if(reportFailures===0){matchFailed('"\'"')}}if(r3!==null){r4=[];if(/^[^\\']/.test(input.charAt(pos))){r5=input.charAt(pos);pos++}else{r5=null;if(reportFailures===0){matchFailed("[^\\\\']")}}if(r5===null){r6=pos;r7=pos;if(input.charCodeAt(pos)===92){r8="\\";pos++}else{r8=null;if(reportFailures===0){matchFailed('"\\\\"')}}if(r8!==null){if(input.length>pos){r9=input.charAt(pos);pos++}else{r9=null;if(reportFailures===0){matchFailed("any character")}}if(r9!==null){r5=[r8,r9]}else{r5=null;pos=r7}}else{r5=null;pos=r7}if(r5!==null){reportedPos=r6;r5=function(a,b){return a+b}(r8,r9)}if(r5===null){pos=r6}}while(r5!==null){r4.push(r5);if(/^[^\\']/.test(input.charAt(pos))){r5=input.charAt(pos);pos++}else{r5=null;if(reportFailures===0){matchFailed("[^\\\\']")}}if(r5===null){r6=pos;r7=pos;if(input.charCodeAt(pos)===92){r8="\\";pos++}else{r8=null;if(reportFailures===0){matchFailed('"\\\\"')}}if(r8!==null){if(input.length>pos){r9=input.charAt(pos);pos++}else{r9=null;if(reportFailures===0){matchFailed("any character")}}if(r9!==null){r5=[r8,r9]}else{r5=null;pos=r7}}else{r5=null;pos=r7}if(r5!==null){reportedPos=r6;r5=function(a,b){return a+b}(r8,r9)}if(r5===null){pos=r6}}}if(r4!==null){if(input.charCodeAt(pos)===39){r5="'";pos++}else{r5=null;if(reportFailures===0){matchFailed('"\'"')}}if(r5!==null){r0=[r3,r4,r5]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(d){return{type:"literal",value:strUnescape(d.join(""))}}(r4)}if(r0===null){pos=r1}}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_number(){var cacheKey="number@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6;r1=pos;r2=pos;r4=pos;r5=[];if(/^[0-9]/.test(input.charAt(pos))){r6=input.charAt(pos);pos++}else{r6=null;if(reportFailures===0){matchFailed("[0-9]")}}while(r6!==null){r5.push(r6);if(/^[0-9]/.test(input.charAt(pos))){r6=input.charAt(pos);pos++}else{r6=null;if(reportFailures===0){matchFailed("[0-9]")}}}if(r5!==null){if(input.charCodeAt(pos)===46){r6=".";pos++}else{r6=null;if(reportFailures===0){matchFailed('"."')}}if(r6!==null){r3=[r5,r6]}else{r3=null;pos=r4}}else{r3=null;pos=r4}r3=r3!==null?r3:"";if(r3!==null){if(/^[0-9]/.test(input.charAt(pos))){r5=input.charAt(pos);pos++}else{r5=null;if(reportFailures===0){matchFailed("[0-9]")}}if(r5!==null){r4=[];while(r5!==null){r4.push(r5);if(/^[0-9]/.test(input.charAt(pos))){r5=input.charAt(pos);pos++}else{r5=null;if(reportFailures===0){matchFailed("[0-9]")}}}}else{r4=null}if(r4!==null){r0=[r3,r4]}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(a,b){return{type:"literal",value:parseFloat((a?a.join(""):"")+b.join(""))}}(r3,r4)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_path(){var cacheKey="path@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1;r1=pos;r0=parse_identifierName();if(r0!==null){reportedPos=r1;r0=function(i){return{type:"literal",value:i}}(r0)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_type(){var cacheKey="type@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7;r1=pos;r2=pos;if(input.substr(pos,5)==="type("){r3="type(";pos+=5}else{r3=null;if(reportFailures===0){matchFailed('"type("')}}if(r3!==null){r4=parse__();if(r4!==null){if(/^[^ )]/.test(input.charAt(pos))){r6=input.charAt(pos);pos++}else{r6=null;if(reportFailures===0){matchFailed("[^ )]")}}if(r6!==null){r5=[];while(r6!==null){r5.push(r6);if(/^[^ )]/.test(input.charAt(pos))){r6=input.charAt(pos);pos++}else{r6=null;if(reportFailures===0){matchFailed("[^ )]")}}}}else{r5=null}if(r5!==null){r6=parse__();
if(r6!==null){if(input.charCodeAt(pos)===41){r7=")";pos++}else{r7=null;if(reportFailures===0){matchFailed('")"')}}if(r7!==null){r0=[r3,r4,r5,r6,r7]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(t){return{type:"type",value:t.join("")}}(r5)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_regex(){var cacheKey="regex@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5;r1=pos;r2=pos;if(input.charCodeAt(pos)===47){r3="/";pos++}else{r3=null;if(reportFailures===0){matchFailed('"/"')}}if(r3!==null){if(/^[^\/]/.test(input.charAt(pos))){r5=input.charAt(pos);pos++}else{r5=null;if(reportFailures===0){matchFailed("[^\\/]")}}if(r5!==null){r4=[];while(r5!==null){r4.push(r5);if(/^[^\/]/.test(input.charAt(pos))){r5=input.charAt(pos);pos++}else{r5=null;if(reportFailures===0){matchFailed("[^\\/]")}}}}else{r4=null}if(r4!==null){if(input.charCodeAt(pos)===47){r5="/";pos++}else{r5=null;if(reportFailures===0){matchFailed('"/"')}}if(r5!==null){r0=[r3,r4,r5]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(d){return{type:"regexp",value:new RegExp(d.join(""))}}(r4)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_field(){var cacheKey="field@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7,r8,r9;r1=pos;r2=pos;if(input.charCodeAt(pos)===46){r3=".";pos++}else{r3=null;if(reportFailures===0){matchFailed('"."')}}if(r3!==null){r4=parse_identifierName();if(r4!==null){r5=[];r7=pos;if(input.charCodeAt(pos)===46){r8=".";pos++}else{r8=null;if(reportFailures===0){matchFailed('"."')}}if(r8!==null){r9=parse_identifierName();if(r9!==null){r6=[r8,r9]}else{r6=null;pos=r7}}else{r6=null;pos=r7}while(r6!==null){r5.push(r6);r7=pos;if(input.charCodeAt(pos)===46){r8=".";pos++}else{r8=null;if(reportFailures===0){matchFailed('"."')}}if(r8!==null){r9=parse_identifierName();if(r9!==null){r6=[r8,r9]}else{r6=null;pos=r7}}else{r6=null;pos=r7}}if(r5!==null){r0=[r3,r4,r5]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(i,is){return{type:"field",name:is.reduce(function(memo,p){return memo+p[0]+p[1]},i)}}(r4,r5)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_negation(){var cacheKey="negation@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7;r1=pos;r2=pos;if(input.substr(pos,5)===":not("){r3=":not(";pos+=5}else{r3=null;if(reportFailures===0){matchFailed('":not("')}}if(r3!==null){r4=parse__();if(r4!==null){r5=parse_selectors();if(r5!==null){r6=parse__();if(r6!==null){if(input.charCodeAt(pos)===41){r7=")";pos++}else{r7=null;if(reportFailures===0){matchFailed('")"')}}if(r7!==null){r0=[r3,r4,r5,r6,r7]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(ss){return{type:"not",selectors:ss}}(r5)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_matches(){var cacheKey="matches@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7;r1=pos;r2=pos;if(input.substr(pos,9)===":matches("){r3=":matches(";pos+=9}else{r3=null;if(reportFailures===0){matchFailed('":matches("')}}if(r3!==null){r4=parse__();if(r4!==null){r5=parse_selectors();if(r5!==null){r6=parse__();if(r6!==null){if(input.charCodeAt(pos)===41){r7=")";pos++}else{r7=null;if(reportFailures===0){matchFailed('")"')}}if(r7!==null){r0=[r3,r4,r5,r6,r7]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(ss){return{type:"matches",selectors:ss}}(r5)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_firstChild(){var cacheKey="firstChild@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1;r1=pos;if(input.substr(pos,12)===":first-child"){r0=":first-child";pos+=12}else{r0=null;if(reportFailures===0){matchFailed('":first-child"')}}if(r0!==null){reportedPos=r1;r0=function(){return nth(1)}()}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_lastChild(){var cacheKey="lastChild@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1;r1=pos;if(input.substr(pos,11)===":last-child"){r0=":last-child";pos+=11}else{r0=null;if(reportFailures===0){matchFailed('":last-child"')}}if(r0!==null){reportedPos=r1;r0=function(){return nthLast(1)}()}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_nthChild(){var cacheKey="nthChild@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7;r1=pos;r2=pos;if(input.substr(pos,11)===":nth-child("){r3=":nth-child(";pos+=11}else{r3=null;if(reportFailures===0){matchFailed('":nth-child("')}}if(r3!==null){r4=parse__();if(r4!==null){if(/^[0-9]/.test(input.charAt(pos))){r6=input.charAt(pos);pos++}else{r6=null;if(reportFailures===0){matchFailed("[0-9]")}}if(r6!==null){r5=[];while(r6!==null){r5.push(r6);if(/^[0-9]/.test(input.charAt(pos))){r6=input.charAt(pos);pos++}else{r6=null;if(reportFailures===0){matchFailed("[0-9]")}}}}else{r5=null}if(r5!==null){r6=parse__();if(r6!==null){if(input.charCodeAt(pos)===41){r7=")";pos++}else{r7=null;if(reportFailures===0){matchFailed('")"')}}if(r7!==null){r0=[r3,r4,r5,r6,r7]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(n){return nth(parseInt(n.join(""),10))}(r5)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function parse_nthLastChild(){var cacheKey="nthLastChild@"+pos;var cachedResult=cache[cacheKey];if(cachedResult){pos=cachedResult.nextPos;return cachedResult.result}var r0,r1,r2,r3,r4,r5,r6,r7;r1=pos;r2=pos;if(input.substr(pos,16)===":nth-last-child("){r3=":nth-last-child(";pos+=16}else{r3=null;if(reportFailures===0){matchFailed('":nth-last-child("')}}if(r3!==null){r4=parse__();if(r4!==null){if(/^[0-9]/.test(input.charAt(pos))){r6=input.charAt(pos);pos++}else{r6=null;if(reportFailures===0){matchFailed("[0-9]")}}if(r6!==null){r5=[];while(r6!==null){r5.push(r6);if(/^[0-9]/.test(input.charAt(pos))){r6=input.charAt(pos);pos++}else{r6=null;if(reportFailures===0){matchFailed("[0-9]")}}}}else{r5=null}if(r5!==null){r6=parse__();if(r6!==null){if(input.charCodeAt(pos)===41){r7=")";pos++}else{r7=null;if(reportFailures===0){matchFailed('")"')}}if(r7!==null){r0=[r3,r4,r5,r6,r7]}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}}else{r0=null;pos=r2}if(r0!==null){reportedPos=r1;r0=function(n){return nthLast(parseInt(n.join(""),10))}(r5)}if(r0===null){pos=r1}cache[cacheKey]={nextPos:pos,result:r0};return r0}function cleanupExpected(expected){expected.sort();var lastExpected=null;var cleanExpected=[];for(var i=0;i<expected.length;i++){if(expected[i]!==lastExpected){cleanExpected.push(expected[i]);lastExpected=expected[i]}}return cleanExpected}function nth(n){return{type:"nth-child",index:{type:"literal",value:n}}}function nthLast(n){return{type:"nth-last-child",index:{type:"literal",value:n}}}function strUnescape(s){return s.replace(/\\(.)/g,function(match,ch){switch(ch){case"a":return"a";case"b":return"\b";case"f":return"\f";case"n":return"\n";case"r":return"\r";case"t":return" ";case"v":return" ";default:return ch}})}var result=parseFunctions[startRule]();if(result===null||pos!==input.length){reportedPos=Math.max(pos,rightmostFailuresPos);var found=reportedPos<input.length?input.charAt(reportedPos):null;var reportedPosDetails=computeReportedPosDetails();throw new this.SyntaxError(cleanupExpected(rightmostFailuresExpected),found,reportedPos,reportedPosDetails.line,reportedPosDetails.column)}return result}};result.SyntaxError=function(expected,found,offset,line,column){function buildMessage(expected,found){var expectedHumanized,foundHumanized;switch(expected.length){case 0:expectedHumanized="end of input";break;case 1:expectedHumanized=expected[0];break;default:expectedHumanized=expected.slice(0,expected.length-1).join(", ")+" or "+expected[expected.length-1]}foundHumanized=found?quote(found):"end of input";return"Expected "+expectedHumanized+" but "+foundHumanized+" found."}this.name="SyntaxError";this.expected=expected;this.found=found;this.message=buildMessage(expected,found);this.offset=offset;this.line=line;this.column=column};subclass(result.SyntaxError,Error);return result}();if(typeof define==="function"&&define.amd){define(function(){return result})}else if(typeof module!=="undefined"&&module.exports){module.exports=result}else{this.esquery=result}},{}],esquery:[function(require,module,exports){(function(){var estraverse=require("estraverse");var parser=require("./parser");var isArray=Array.isArray||function isArray(array){return{}.toString.call(array)==="[object Array]"};function esqueryModule(){function getPath(obj,key){var i,keys=key.split(".");for(i=0;i<keys.length;i++){if(obj==null){return obj}obj=obj[keys[i]]}return obj}function inPath(node,ancestor,path){var field,remainingPath,i;if(path.length===0){return node===ancestor}if(ancestor==null){return false}field=ancestor[path[0]];remainingPath=path.slice(1);if(isArray(field)){for(i=0,l=field.length;i<l;++i){if(inPath(node,field[i],remainingPath)){return true}}return false}else{return inPath(node,field,remainingPath)}}function matches(node,selector,ancestry){var path,ancestor,i,l,p;if(!selector){return true}if(!node){return false}if(!ancestry){ancestry=[]}switch(selector.type){case"wildcard":return true;case"identifier":return selector.value.toLowerCase()===node.type.toLowerCase();case"field":path=selector.name.split(".");ancestor=ancestry[path.length-1];return inPath(node,ancestor,path);case"matches":for(i=0,l=selector.selectors.length;i<l;++i){if(matches(node,selector.selectors[i],ancestry)){return true}}return false;case"compound":for(i=0,l=selector.selectors.length;i<l;++i){if(!matches(node,selector.selectors[i],ancestry)){return false}}return true;case"not":for(i=0,l=selector.selectors.length;i<l;++i){if(matches(node,selector.selectors[i],ancestry)){return false}}return true;case"child":if(matches(node,selector.right,ancestry)){return matches(ancestry[0],selector.left,ancestry.slice(1))}return false;case"descendant":if(matches(node,selector.right,ancestry)){for(i=0,l=ancestry.length;i<l;++i){if(matches(ancestry[i],selector.left,ancestry.slice(i+1))){return true}}}return false;case"attribute":p=getPath(node,selector.name);switch(selector.operator){case null:case void 0:return p!=null;case"=":switch(selector.value.type){case"regexp":return selector.value.value.test(p);case"literal":return selector.value.value===p;case"type":return selector.value.value===typeof p}case"!=":switch(selector.value.type){case"regexp":return!selector.value.value.test(p);case"literal":return selector.value.value!==p;case"type":return selector.value.value!==typeof p}case"<=":return p<=selector.value.value;case"<":return p<selector.value.value;case">":return p>selector.value.value;case">=":return p>=selector.value.value}case"sibling":return matches(node,selector.right,ancestry)&&sibling(node,selector.left,ancestry)||matches(node,selector.left,ancestry)&&sibling(node,selector.right,ancestry);case"adjacent":return matches(node,selector.right,ancestry)&&adjacent(node,selector.left,ancestry)||matches(node,selector.left,ancestry)&&adjacent(node,selector.right,ancestry);case"nth-child":return matches(node,selector.right,ancestry)&&nthChild(node,ancestry,function(length){return selector.index.value-1});case"nth-last-child":return matches(node,selector.right,ancestry)&&nthChild(node,ancestry,function(length){return length-selector.index.value})}throw new Error("Unknown selector type: "+selector.type)}function sibling(node,selector,ancestry){var parent=ancestry[0],listProp,keys,i,l,k,m;if(!parent){return false}keys=estraverse.VisitorKeys[parent.type];for(i=0,l=keys.length;i<l;++i){listProp=parent[keys[i]];if(isArray(listProp)){for(k=0,m=listProp.length;k<m;++k){if(listProp[k]!==node&&matches(listProp[k],selector,ancestry)){return true}}}}return false}function adjacent(node,selector,ancestry){var parent=ancestry[0],listProp,keys,i,l,idx;if(!parent){return false}keys=estraverse.VisitorKeys[parent.type];for(i=0,l=keys.length;i<l;++i){listProp=parent[keys[i]];if(isArray(listProp)){idx=listProp.indexOf(node);if(idx<0){continue}if(idx>0&&matches(listProp[idx-1],selector,ancestry)){return true}if(idx<listProp.length-1&&matches(listProp[idx+1],selector,ancestry)){return true}}}return false}function nthChild(node,ancestry,idxFn){var parent=ancestry[0],listProp,keys,i,l,idx;if(!parent){return false}keys=estraverse.VisitorKeys[parent.type];for(i=0,l=keys.length;i<l;++i){listProp=parent[keys[i]];if(isArray(listProp)){idx=listProp.indexOf(node);if(idx>=0&&idx===idxFn(listProp.length)){return true}}}return false}function subjects(selector,ancestor){var results,p;if(selector==null||typeof selector!="object"){return[]}if(ancestor==null){ancestor=selector}results=selector.subject?[ancestor]:[];for(p in selector){if(!{}.hasOwnProperty.call(selector,p)){continue}[].push.apply(results,subjects(selector[p],p==="left"?selector[p]:ancestor))}return results}function match(ast,selector){var ancestry=[],results=[],altSubjects,i,l,k,m;if(!selector){return results}altSubjects=subjects(selector);estraverse.traverse(ast,{enter:function(node,parent){if(parent!=null){ancestry.unshift(parent)}if(matches(node,selector,ancestry)){if(altSubjects.length){for(i=0,l=altSubjects.length;i<l;++i){if(matches(node,altSubjects[i],ancestry)){results.push(node)}for(k=0,m=ancestry.length;k<m;++k){if(matches(ancestry[k],altSubjects[i],ancestry.slice(k+1))){results.push(ancestry[k])}}}}else{results.push(node)}}},leave:function(){ancestry.shift()}});return results}function parse(selector){return parser.parse(selector)}function query(ast,selector){return match(ast,parse(selector))}query.parse=parse;query.match=match;query.matches=matches;return query.query=query}if(typeof define==="function"&&define.amd){define(esqueryModule)}else if(typeof module!=="undefined"&&module.exports){module.exports=esqueryModule()}else{this.esquery=esqueryModule()}})()},{"./parser":2,estraverse:1}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({esprima:[function(require,module,exports){(function(root,factory){"use strict";if(typeof define==="function"&&define.amd){define(["exports"],factory)}else if(typeof exports!=="undefined"){factory(exports)}else{factory(root.esprima={})}})(this,function(exports){"use strict";var Token,TokenName,FnExprTokens,Syntax,PlaceHolders,Messages,Regex,source,strict,index,lineNumber,lineStart,hasLineTerminator,lastIndex,lastLineNumber,lastLineStart,startIndex,startLineNumber,startLineStart,scanning,length,lookahead,state,extra;Token={BooleanLiteral:1,EOF:2,Identifier:3,Keyword:4,NullLiteral:5,NumericLiteral:6,Punctuator:7,StringLiteral:8,RegularExpression:9};TokenName={};TokenName[Token.BooleanLiteral]="Boolean";TokenName[Token.EOF]="<end>";TokenName[Token.Identifier]="Identifier";TokenName[Token.Keyword]="Keyword";TokenName[Token.NullLiteral]="Null";TokenName[Token.NumericLiteral]="Numeric";TokenName[Token.Punctuator]="Punctuator";TokenName[Token.StringLiteral]="String";TokenName[Token.RegularExpression]="RegularExpression";FnExprTokens=["(","{","[","in","typeof","instanceof","new","return","case","delete","throw","void","=","+=","-=","*=","/=","%=","<<=",">>=",">>>=","&=","|=","^=",",","+","-","*","/","%","++","--","<<",">>",">>>","&","|","^","!","~","&&","||","?",":","===","==",">=","<=","<",">","!=","!=="];Syntax={AssignmentExpression:"AssignmentExpression",ArrayExpression:"ArrayExpression",ArrowFunctionExpression:"ArrowFunctionExpression",BlockStatement:"BlockStatement",BinaryExpression:"BinaryExpression",BreakStatement:"BreakStatement",CallExpression:"CallExpression",CatchClause:"CatchClause",ClassBody:"ClassBody",ClassDeclaration:"ClassDeclaration",ClassExpression:"ClassExpression",ConditionalExpression:"ConditionalExpression",ContinueStatement:"ContinueStatement",DoWhileStatement:"DoWhileStatement",DebuggerStatement:"DebuggerStatement",EmptyStatement:"EmptyStatement",ExpressionStatement:"ExpressionStatement",ForStatement:"ForStatement",ForInStatement:"ForInStatement",FunctionDeclaration:"FunctionDeclaration",FunctionExpression:"FunctionExpression",Identifier:"Identifier",IfStatement:"IfStatement",Literal:"Literal",LabeledStatement:"LabeledStatement",LogicalExpression:"LogicalExpression",MemberExpression:"MemberExpression",MethodDefinition:"MethodDefinition",NewExpression:"NewExpression",ObjectExpression:"ObjectExpression",Program:"Program",Property:"Property",RestElement:"RestElement",ReturnStatement:"ReturnStatement",SequenceExpression:"SequenceExpression",SwitchStatement:"SwitchStatement",SwitchCase:"SwitchCase",ThisExpression:"ThisExpression",ThrowStatement:"ThrowStatement",TryStatement:"TryStatement",UnaryExpression:"UnaryExpression",UpdateExpression:"UpdateExpression",VariableDeclaration:"VariableDeclaration",VariableDeclarator:"VariableDeclarator",WhileStatement:"WhileStatement",WithStatement:"WithStatement"};PlaceHolders={ArrowParameterPlaceHolder:"ArrowParameterPlaceHolder"};Messages={UnexpectedToken:"Unexpected token %0",UnexpectedNumber:"Unexpected number",UnexpectedString:"Unexpected string",UnexpectedIdentifier:"Unexpected identifier",UnexpectedReserved:"Unexpected reserved word",UnexpectedEOS:"Unexpected end of input",NewlineAfterThrow:"Illegal newline after throw",InvalidRegExp:"Invalid regular expression",UnterminatedRegExp:"Invalid regular expression: missing /",InvalidLHSInAssignment:"Invalid left-hand side in assignment",InvalidLHSInForIn:"Invalid left-hand side in for-in",MultipleDefaultsInSwitch:"More than one default clause in switch statement",NoCatchOrFinally:"Missing catch or finally after try",UnknownLabel:"Undefined label '%0'",Redeclaration:"%0 '%1' has already been declared",IllegalContinue:"Illegal continue statement",IllegalBreak:"Illegal break statement",IllegalReturn:"Illegal return statement",StrictModeWith:"Strict mode code may not include a with statement",StrictCatchVariable:"Catch variable may not be eval or arguments in strict mode",StrictVarName:"Variable name may not be eval or arguments in strict mode",StrictParamName:"Parameter name eval or arguments is not allowed in strict mode",StrictParamDupe:"Strict mode function may not have duplicate parameter names",StrictFunctionName:"Function name may not be eval or arguments in strict mode",StrictOctalLiteral:"Octal literals are not allowed in strict mode.",StrictDelete:"Delete of an unqualified identifier in strict mode.",StrictLHSAssignment:"Assignment to eval or arguments is not allowed in strict mode",StrictLHSPostfix:"Postfix increment/decrement may not have eval or arguments operand in strict mode",StrictLHSPrefix:"Prefix increment/decrement may not have eval or arguments operand in strict mode",StrictReservedWord:"Use of future reserved word in strict mode",ParameterAfterRestParameter:"Rest parameter must be last formal parameter",DefaultRestParameter:"Unexpected token =",ObjectPatternAsRestParameter:"Unexpected token {",DuplicateProtoProperty:"Duplicate __proto__ fields are not allowed in object literals",ConstructorSpecialMethod:"Class constructor may not be an accessor",DuplicateConstructor:"A class may only have one constructor",StaticPrototype:"Classes may not have static property named prototype"};Regex={NonAsciiIdentifierStart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙա-ևא-תװ-ײؠ-يٮٯٱ-ۓەۥۦۮۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࢠ-ࢲऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএঐও-নপ-রলশ-হঽৎড়ঢ়য়-ৡৰৱਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલળવ-હઽૐૠૡଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହଽଡ଼ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘౙౠౡಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠೡೱೲഅ-ഌഎ-ഐഒ-ഺഽൎൠൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาำเ-ๆກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ະາຳຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡷᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᧁ-ᧇᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᳩ-ᳬᳮ-ᳱᳵᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⸯ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻﹰ-ﹴﹶ-ﻼA-Za-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]"),NonAsciiIdentifierPart:new RegExp("[ªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ̀-ʹͶͷͺ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁ҃-҇Ҋ-ԯԱ-Ֆՙա-և֑-ׇֽֿׁׂׅׄא-תװ-ײؐ-ؚؠ-٩ٮ-ۓە-ۜ۟-۪ۨ-ۼۿܐ-݊ݍ-ޱ߀-ߵߺࠀ-࠭ࡀ-࡛ࢠ-ࢲࣤ-ॣ०-९ॱ-ঃঅ-ঌএঐও-নপ-রলশ-হ়-ৄেৈো-ৎৗড়ঢ়য়-ৣ০-ৱਁ-ਃਅ-ਊਏਐਓ-ਨਪ-ਰਲਲ਼ਵਸ਼ਸਹ਼ਾ-ੂੇੈੋ-੍ੑਖ਼-ੜਫ਼੦-ੵઁ-ઃઅ-ઍએ-ઑઓ-નપ-રલળવ-હ઼-ૅે-ૉો-્ૐૠ-ૣ૦-૯ଁ-ଃଅ-ଌଏଐଓ-ନପ-ରଲଳଵ-ହ଼-ୄେୈୋ-୍ୖୗଡ଼ଢ଼ୟ-ୣ୦-୯ୱஂஃஅ-ஊஎ-ஐஒ-கஙசஜஞடணதந-பம-ஹா-ூெ-ைொ-்ௐௗ௦-௯ఀ-ఃఅ-ఌఎ-ఐఒ-నప-హఽ-ౄె-ైొ-్ౕౖౘౙౠ-ౣ౦-౯ಁ-ಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ಼-ೄೆ-ೈೊ-್ೕೖೞೠ-ೣ೦-೯ೱೲഁ-ഃഅ-ഌഎ-ഐഒ-ഺഽ-ൄെ-ൈൊ-ൎൗൠ-ൣ൦-൯ൺ-ൿංඃඅ-ඖක-නඳ-රලව-ෆ්ා-ුූෘ-ෟ෦-෯ෲෳก-ฺเ-๎๐-๙ກຂຄງຈຊຍດ-ທນ-ຟມ-ຣລວສຫອ-ູົ-ຽເ-ໄໆ່-ໍ໐-໙ໜ-ໟༀ༘༙༠-༩༹༵༷༾-ཇཉ-ཬཱ-྄྆-ྗྙ-ྼ࿆က-၉ၐ-ႝႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ፝-፟ᎀ-ᎏᎠ-Ᏼᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-᜔ᜠ-᜴ᝀ-ᝓᝠ-ᝬᝮ-ᝰᝲᝳក-៓ៗៜ៝០-៩᠋-᠍᠐-᠙ᠠ-ᡷᢀ-ᢪᢰ-ᣵᤀ-ᤞᤠ-ᤫᤰ-᤻᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧙ᨀ-ᨛᨠ-ᩞ᩠-᩿᩼-᪉᪐-᪙ᪧ᪰-᪽ᬀ-ᭋ᭐-᭙᭫-᭳ᮀ-᯳ᰀ-᰷᱀-᱉ᱍ-ᱽ᳐-᳔᳒-ᳶ᳸᳹ᴀ-᷵᷼-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‌‍‿⁀⁔ⁱⁿₐ-ₜ⃐-⃥⃜⃡-⃰ℂℇℊ-ℓℕℙ-ℝℤΩℨK-ℭℯ-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ⵿-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞⷠ-ⷿⸯ々-〇〡-〯〱-〵〸-〼ぁ-ゖ゙゚ゝ-ゟァ-ヺー-ヿㄅ-ㄭㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿌ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-꙯ꙴ-꙽ꙿ-ꚝꚟ-꛱ꜗ-ꜟꜢ-ꞈꞋ-ꞎꞐ-ꞭꞰꞱꟷ-ꠧꡀ-ꡳꢀ-꣄꣐-꣙꣠-ꣷꣻ꤀-꤭ꤰ-꥓ꥠ-ꥼꦀ-꧀ꧏ-꧙ꧠ-ꧾꨀ-ꨶꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺ-ꫂꫛ-ꫝꫠ-ꫯꫲ-꫶ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭟꭤꭥꯀ-ꯪ꯬꯭꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּסּףּפּצּ-ﮱﯓ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷻ︀-️︠-︭︳︴﹍-﹏ﹰ-ﹴﹶ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ]")};function assert(condition,message){if(!condition){throw new Error("ASSERT: "+message)}}function isDecimalDigit(ch){return ch>=48&&ch<=57}function isHexDigit(ch){return"0123456789abcdefABCDEF".indexOf(ch)>=0}function isOctalDigit(ch){return"01234567".indexOf(ch)>=0}function isWhiteSpace(ch){return ch===32||ch===9||ch===11||ch===12||ch===160||ch>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].indexOf(ch)>=0}function isLineTerminator(ch){return ch===10||ch===13||ch===8232||ch===8233}function isIdentifierStart(ch){return ch===36||ch===95||ch>=65&&ch<=90||ch>=97&&ch<=122||ch===92||ch>=128&&Regex.NonAsciiIdentifierStart.test(String.fromCharCode(ch))}function isIdentifierPart(ch){return ch===36||ch===95||ch>=65&&ch<=90||ch>=97&&ch<=122||ch>=48&&ch<=57||ch===92||ch>=128&&Regex.NonAsciiIdentifierPart.test(String.fromCharCode(ch))}function isFutureReservedWord(id){switch(id){case"enum":case"export":case"import":case"super":return true;default:return false}}function isStrictModeReservedWord(id){switch(id){case"implements":case"interface":case"package":case"private":case"protected":case"public":case"static":case"yield":case"let":return true;default:return false}}function isRestrictedWord(id){return id==="eval"||id==="arguments"}function isKeyword(id){if(strict&&isStrictModeReservedWord(id)){return true}switch(id.length){case 2:return id==="if"||id==="in"||id==="do";case 3:return id==="var"||id==="for"||id==="new"||id==="try"||id==="let";case 4:return id==="this"||id==="else"||id==="case"||id==="void"||id==="with"||id==="enum";case 5:return id==="while"||id==="break"||id==="catch"||id==="throw"||id==="const"||id==="yield"||id==="class"||id==="super";case 6:return id==="return"||id==="typeof"||id==="delete"||id==="switch"||id==="export"||id==="import";case 7:return id==="default"||id==="finally"||id==="extends";case 8:return id==="function"||id==="continue"||id==="debugger";case 10:return id==="instanceof";default:return false}}function addComment(type,value,start,end,loc){var comment;assert(typeof start==="number","Comment must have valid position");state.lastCommentStart=start;comment={type:type,value:value};if(extra.range){comment.range=[start,end]}if(extra.loc){comment.loc=loc}extra.comments.push(comment);if(extra.attachComment){extra.leadingComments.push(comment);extra.trailingComments.push(comment)}}function skipSingleLineComment(offset){var start,loc,ch,comment;start=index-offset;loc={start:{line:lineNumber,column:index-lineStart-offset}};while(index<length){ch=source.charCodeAt(index);++index;if(isLineTerminator(ch)){hasLineTerminator=true;if(extra.comments){comment=source.slice(start+offset,index-1);loc.end={line:lineNumber,column:index-lineStart-1};addComment("Line",comment,start,index-1,loc)}if(ch===13&&source.charCodeAt(index)===10){++index}++lineNumber;lineStart=index;return}}if(extra.comments){comment=source.slice(start+offset,index);loc.end={line:lineNumber,column:index-lineStart};addComment("Line",comment,start,index,loc)}}function skipMultiLineComment(){var start,loc,ch,comment;if(extra.comments){start=index-2;loc={start:{line:lineNumber,column:index-lineStart-2}}}while(index<length){ch=source.charCodeAt(index);if(isLineTerminator(ch)){if(ch===13&&source.charCodeAt(index+1)===10){++index}hasLineTerminator=true;++lineNumber;++index;lineStart=index}else if(ch===42){if(source.charCodeAt(index+1)===47){++index;++index;if(extra.comments){comment=source.slice(start+2,index-2);loc.end={line:lineNumber,column:index-lineStart};addComment("Block",comment,start,index,loc)}return}++index}else{++index}}if(extra.errors&&index>=length){if(extra.comments){loc.end={line:lineNumber,column:index-lineStart};comment=source.slice(start+2,index);addComment("Block",comment,start,index,loc)}tolerateUnexpectedToken()}else{throwUnexpectedToken()}}function skipComment(){var ch,start;hasLineTerminator=false;start=index===0;while(index<length){ch=source.charCodeAt(index);if(isWhiteSpace(ch)){++index}else if(isLineTerminator(ch)){hasLineTerminator=true;++index;if(ch===13&&source.charCodeAt(index)===10){++index}++lineNumber;lineStart=index;start=true}else if(ch===47){ch=source.charCodeAt(index+1);if(ch===47){++index;++index;skipSingleLineComment(2);start=true}else if(ch===42){++index;++index;skipMultiLineComment()}else{break}}else if(start&&ch===45){if(source.charCodeAt(index+1)===45&&source.charCodeAt(index+2)===62){index+=3;skipSingleLineComment(3)}else{break}}else if(ch===60){if(source.slice(index+1,index+4)==="!--"){++index;++index;++index;++index;skipSingleLineComment(4)}else{break}}else{break}}}function scanHexEscape(prefix){var i,len,ch,code=0;len=prefix==="u"?4:2;for(i=0;i<len;++i){if(index<length&&isHexDigit(source[index])){ch=source[index++];code=code*16+"0123456789abcdef".indexOf(ch.toLowerCase())}else{return""}}return String.fromCharCode(code)}function scanUnicodeCodePointEscape(){var ch,code,cu1,cu2;ch=source[index];code=0;if(ch==="}"){throwUnexpectedToken()}while(index<length){ch=source[index++];if(!isHexDigit(ch)){break}code=code*16+"0123456789abcdef".indexOf(ch.toLowerCase())}if(code>1114111||ch!=="}"){throwUnexpectedToken()}if(code<=65535){return String.fromCharCode(code)}cu1=(code-65536>>10)+55296;cu2=(code-65536&1023)+56320;return String.fromCharCode(cu1,cu2)}function getEscapedIdentifier(){var ch,id;ch=source.charCodeAt(index++);id=String.fromCharCode(ch);if(ch===92){if(source.charCodeAt(index)!==117){throwUnexpectedToken()}++index;ch=scanHexEscape("u");if(!ch||ch==="\\"||!isIdentifierStart(ch.charCodeAt(0))){throwUnexpectedToken()}id=ch}while(index<length){ch=source.charCodeAt(index);if(!isIdentifierPart(ch)){break}++index;id+=String.fromCharCode(ch);if(ch===92){id=id.substr(0,id.length-1);if(source.charCodeAt(index)!==117){throwUnexpectedToken()}++index;ch=scanHexEscape("u");if(!ch||ch==="\\"||!isIdentifierPart(ch.charCodeAt(0))){throwUnexpectedToken()}id+=ch}}return id}function getIdentifier(){var start,ch;start=index++;while(index<length){ch=source.charCodeAt(index);if(ch===92){index=start;return getEscapedIdentifier()}if(isIdentifierPart(ch)){++index}else{break}}return source.slice(start,index)}function scanIdentifier(){var start,id,type;start=index;id=source.charCodeAt(index)===92?getEscapedIdentifier():getIdentifier();if(id.length===1){type=Token.Identifier}else if(isKeyword(id)){type=Token.Keyword}else if(id==="null"){type=Token.NullLiteral}else if(id==="true"||id==="false"){type=Token.BooleanLiteral}else{type=Token.Identifier}return{type:type,value:id,lineNumber:lineNumber,lineStart:lineStart,start:start,end:index}}function scanPunctuator(){var token,str;token={type:Token.Punctuator,value:"",lineNumber:lineNumber,lineStart:lineStart,start:index,end:index};str=source[index];switch(str){case"(":if(extra.tokenize){extra.openParenToken=extra.tokens.length}++index;break;case"{":if(extra.tokenize){extra.openCurlyToken=extra.tokens.length}++index;break;case".":++index;if(source[index]==="."&&source[index+1]==="."){index+=2;str="..."}break;case")":case";":case",":case"}":case"[":case"]":case":":case"?":case"~":++index;break;default:str=source.substr(index,4);if(str===">>>="){index+=4}else{str=str.substr(0,3);if(str==="==="||str==="!=="||str===">>>"||str==="<<="||str===">>="){index+=3}else{str=str.substr(0,2);if(str==="&&"||str==="||"||str==="=="||str==="!="||str==="+="||str==="-="||str==="*="||str==="/="||str==="++"||str==="--"||str==="<<"||str===">>"||str==="&="||str==="|="||str==="^="||str==="%="||str==="<="||str===">="||str==="=>"){index+=2}else{str=source[index];if("<>=!+-*%&|^/".indexOf(str)>=0){++index}}}}}if(index===token.start){throwUnexpectedToken()}token.end=index;token.value=str;return token}function scanHexLiteral(start){var number="";while(index<length){if(!isHexDigit(source[index])){break}number+=source[index++]}if(number.length===0){throwUnexpectedToken()}if(isIdentifierStart(source.charCodeAt(index))){throwUnexpectedToken()}return{type:Token.NumericLiteral,value:parseInt("0x"+number,16),lineNumber:lineNumber,lineStart:lineStart,start:start,end:index}}function scanBinaryLiteral(start){var ch,number;number="";while(index<length){ch=source[index];if(ch!=="0"&&ch!=="1"){break}number+=source[index++]}if(number.length===0){throwUnexpectedToken()}if(index<length){ch=source.charCodeAt(index);if(isIdentifierStart(ch)||isDecimalDigit(ch)){throwUnexpectedToken()}}return{type:Token.NumericLiteral,value:parseInt(number,2),lineNumber:lineNumber,lineStart:lineStart,start:start,end:index}}function scanOctalLiteral(prefix,start){var number,octal;if(isOctalDigit(prefix)){octal=true;number="0"+source[index++]}else{octal=false;++index;number=""}while(index<length){if(!isOctalDigit(source[index])){break}number+=source[index++]}if(!octal&&number.length===0){throwUnexpectedToken()}if(isIdentifierStart(source.charCodeAt(index))||isDecimalDigit(source.charCodeAt(index))){throwUnexpectedToken()}return{type:Token.NumericLiteral,value:parseInt(number,8),octal:octal,lineNumber:lineNumber,lineStart:lineStart,start:start,end:index}}function isImplicitOctalLiteral(){var i,ch;for(i=index+1;i<length;++i){ch=source[i];if(ch==="8"||ch==="9"){return false}if(!isOctalDigit(ch)){return true}}return true}function scanNumericLiteral(){var number,start,ch;ch=source[index];assert(isDecimalDigit(ch.charCodeAt(0))||ch===".","Numeric literal must start with a decimal digit or a decimal point");start=index;number="";if(ch!=="."){number=source[index++];ch=source[index];if(number==="0"){
if(ch==="x"||ch==="X"){++index;return scanHexLiteral(start)}if(ch==="b"||ch==="B"){++index;return scanBinaryLiteral(start)}if(ch==="o"||ch==="O"){return scanOctalLiteral(ch,start)}if(isOctalDigit(ch)){if(isImplicitOctalLiteral()){return scanOctalLiteral(ch,start)}}}while(isDecimalDigit(source.charCodeAt(index))){number+=source[index++]}ch=source[index]}if(ch==="."){number+=source[index++];while(isDecimalDigit(source.charCodeAt(index))){number+=source[index++]}ch=source[index]}if(ch==="e"||ch==="E"){number+=source[index++];ch=source[index];if(ch==="+"||ch==="-"){number+=source[index++]}if(isDecimalDigit(source.charCodeAt(index))){while(isDecimalDigit(source.charCodeAt(index))){number+=source[index++]}}else{throwUnexpectedToken()}}if(isIdentifierStart(source.charCodeAt(index))){throwUnexpectedToken()}return{type:Token.NumericLiteral,value:parseFloat(number),lineNumber:lineNumber,lineStart:lineStart,start:start,end:index}}function scanStringLiteral(){var str="",quote,start,ch,code,unescaped,restore,octal=false;quote=source[index];assert(quote==="'"||quote==='"',"String literal must starts with a quote");start=index;++index;while(index<length){ch=source[index++];if(ch===quote){quote="";break}else if(ch==="\\"){ch=source[index++];if(!ch||!isLineTerminator(ch.charCodeAt(0))){switch(ch){case"u":case"x":if(source[index]==="{"){++index;str+=scanUnicodeCodePointEscape()}else{restore=index;unescaped=scanHexEscape(ch);if(unescaped){str+=unescaped}else{index=restore;str+=ch}}break;case"n":str+="\n";break;case"r":str+="\r";break;case"t":str+=" ";break;case"b":str+="\b";break;case"f":str+="\f";break;case"v":str+=" ";break;default:if(isOctalDigit(ch)){code="01234567".indexOf(ch);if(code!==0){octal=true}if(index<length&&isOctalDigit(source[index])){octal=true;code=code*8+"01234567".indexOf(source[index++]);if("0123".indexOf(ch)>=0&&index<length&&isOctalDigit(source[index])){code=code*8+"01234567".indexOf(source[index++])}}str+=String.fromCharCode(code)}else{str+=ch}break}}else{++lineNumber;if(ch==="\r"&&source[index]==="\n"){++index}lineStart=index}}else if(isLineTerminator(ch.charCodeAt(0))){break}else{str+=ch}}if(quote!==""){throwUnexpectedToken()}return{type:Token.StringLiteral,value:str,octal:octal,lineNumber:startLineNumber,lineStart:startLineStart,start:start,end:index}}function testRegExp(pattern,flags){var tmp=pattern;if(flags.indexOf("u")>=0){tmp=tmp.replace(/\\u\{([0-9a-fA-F]+)\}/g,function($0,$1){if(parseInt($1,16)<=1114111){return"x"}throwUnexpectedToken(null,Messages.InvalidRegExp)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x")}try{RegExp(tmp)}catch(e){throwUnexpectedToken(null,Messages.InvalidRegExp)}try{return new RegExp(pattern,flags)}catch(exception){return null}}function scanRegExpBody(){var ch,str,classMarker,terminated,body;ch=source[index];assert(ch==="/","Regular expression literal must start with a slash");str=source[index++];classMarker=false;terminated=false;while(index<length){ch=source[index++];str+=ch;if(ch==="\\"){ch=source[index++];if(isLineTerminator(ch.charCodeAt(0))){throwUnexpectedToken(null,Messages.UnterminatedRegExp)}str+=ch}else if(isLineTerminator(ch.charCodeAt(0))){throwUnexpectedToken(null,Messages.UnterminatedRegExp)}else if(classMarker){if(ch==="]"){classMarker=false}}else{if(ch==="/"){terminated=true;break}else if(ch==="["){classMarker=true}}}if(!terminated){throwUnexpectedToken(null,Messages.UnterminatedRegExp)}body=str.substr(1,str.length-2);return{value:body,literal:str}}function scanRegExpFlags(){var ch,str,flags,restore;str="";flags="";while(index<length){ch=source[index];if(!isIdentifierPart(ch.charCodeAt(0))){break}++index;if(ch==="\\"&&index<length){ch=source[index];if(ch==="u"){++index;restore=index;ch=scanHexEscape("u");if(ch){flags+=ch;for(str+="\\u";restore<index;++restore){str+=source[restore]}}else{index=restore;flags+="u";str+="\\u"}tolerateUnexpectedToken()}else{str+="\\";tolerateUnexpectedToken()}}else{flags+=ch;str+=ch}}return{value:flags,literal:str}}function scanRegExp(){scanning=true;var start,body,flags,value;lookahead=null;skipComment();start=index;body=scanRegExpBody();flags=scanRegExpFlags();value=testRegExp(body.value,flags.value);scanning=false;if(extra.tokenize){return{type:Token.RegularExpression,value:value,regex:{pattern:body.value,flags:flags.value},lineNumber:lineNumber,lineStart:lineStart,start:start,end:index}}return{literal:body.literal+flags.literal,value:value,regex:{pattern:body.value,flags:flags.value},start:start,end:index}}function collectRegex(){var pos,loc,regex,token;skipComment();pos=index;loc={start:{line:lineNumber,column:index-lineStart}};regex=scanRegExp();loc.end={line:lineNumber,column:index-lineStart};if(!extra.tokenize){if(extra.tokens.length>0){token=extra.tokens[extra.tokens.length-1];if(token.range[0]===pos&&token.type==="Punctuator"){if(token.value==="/"||token.value==="/="){extra.tokens.pop()}}}extra.tokens.push({type:"RegularExpression",value:regex.literal,regex:regex.regex,range:[pos,index],loc:loc})}return regex}function isIdentifierName(token){return token.type===Token.Identifier||token.type===Token.Keyword||token.type===Token.BooleanLiteral||token.type===Token.NullLiteral}function advanceSlash(){var prevToken,checkToken;prevToken=extra.tokens[extra.tokens.length-1];if(!prevToken){return collectRegex()}if(prevToken.type==="Punctuator"){if(prevToken.value==="]"){return scanPunctuator()}if(prevToken.value===")"){checkToken=extra.tokens[extra.openParenToken-1];if(checkToken&&checkToken.type==="Keyword"&&(checkToken.value==="if"||checkToken.value==="while"||checkToken.value==="for"||checkToken.value==="with")){return collectRegex()}return scanPunctuator()}if(prevToken.value==="}"){if(extra.tokens[extra.openCurlyToken-3]&&extra.tokens[extra.openCurlyToken-3].type==="Keyword"){checkToken=extra.tokens[extra.openCurlyToken-4];if(!checkToken){return scanPunctuator()}}else if(extra.tokens[extra.openCurlyToken-4]&&extra.tokens[extra.openCurlyToken-4].type==="Keyword"){checkToken=extra.tokens[extra.openCurlyToken-5];if(!checkToken){return collectRegex()}}else{return scanPunctuator()}if(FnExprTokens.indexOf(checkToken.value)>=0){return scanPunctuator()}return collectRegex()}return collectRegex()}if(prevToken.type==="Keyword"&&prevToken.value!=="this"){return collectRegex()}return scanPunctuator()}function advance(){var ch;if(index>=length){return{type:Token.EOF,lineNumber:lineNumber,lineStart:lineStart,start:index,end:index}}ch=source.charCodeAt(index);if(isIdentifierStart(ch)){return scanIdentifier()}if(ch===40||ch===41||ch===59){return scanPunctuator()}if(ch===39||ch===34){return scanStringLiteral()}if(ch===46){if(isDecimalDigit(source.charCodeAt(index+1))){return scanNumericLiteral()}return scanPunctuator()}if(isDecimalDigit(ch)){return scanNumericLiteral()}if(extra.tokenize&&ch===47){return advanceSlash()}return scanPunctuator()}function collectToken(){var loc,token,value,entry;loc={start:{line:lineNumber,column:index-lineStart}};token=advance();loc.end={line:lineNumber,column:index-lineStart};if(token.type!==Token.EOF){value=source.slice(token.start,token.end);entry={type:TokenName[token.type],value:value,range:[token.start,token.end],loc:loc};if(token.regex){entry.regex={pattern:token.regex.pattern,flags:token.regex.flags}}extra.tokens.push(entry)}return token}function lex(){var token;scanning=true;lastIndex=index;lastLineNumber=lineNumber;lastLineStart=lineStart;skipComment();token=lookahead;startIndex=index;startLineNumber=lineNumber;startLineStart=lineStart;lookahead=typeof extra.tokens!=="undefined"?collectToken():advance();scanning=false;return token}function peek(){scanning=true;skipComment();lastIndex=index;lastLineNumber=lineNumber;lastLineStart=lineStart;startIndex=index;startLineNumber=lineNumber;startLineStart=lineStart;lookahead=typeof extra.tokens!=="undefined"?collectToken():advance();scanning=false}function Position(){this.line=startLineNumber;this.column=startIndex-startLineStart}function SourceLocation(){this.start=new Position;this.end=null}function WrappingSourceLocation(startToken){this.start={line:startToken.lineNumber,column:startToken.start-startToken.lineStart};this.end=null}function Node(){if(extra.range){this.range=[startIndex,0]}if(extra.loc){this.loc=new SourceLocation}}function WrappingNode(startToken){if(extra.range){this.range=[startToken.start,0]}if(extra.loc){this.loc=new WrappingSourceLocation(startToken)}}WrappingNode.prototype=Node.prototype={processComment:function(){var lastChild,leadingComments,trailingComments,bottomRight=extra.bottomRightStack,i,comment,last=bottomRight[bottomRight.length-1];if(this.type===Syntax.Program){if(this.body.length>0){return}}if(extra.trailingComments.length>0){trailingComments=[];for(i=extra.trailingComments.length-1;i>=0;--i){comment=extra.trailingComments[i];if(comment.range[0]>=this.range[1]){trailingComments.unshift(comment);extra.trailingComments.splice(i,1)}}extra.trailingComments=[]}else{if(last&&last.trailingComments&&last.trailingComments[0].range[0]>=this.range[1]){trailingComments=last.trailingComments;delete last.trailingComments}}if(last){while(last&&last.range[0]>=this.range[0]){lastChild=last;last=bottomRight.pop()}}if(lastChild){if(lastChild.leadingComments&&lastChild.leadingComments[lastChild.leadingComments.length-1].range[1]<=this.range[0]){this.leadingComments=lastChild.leadingComments;lastChild.leadingComments=undefined}}else if(extra.leadingComments.length>0){leadingComments=[];for(i=extra.leadingComments.length-1;i>=0;--i){comment=extra.leadingComments[i];if(comment.range[1]<=this.range[0]){leadingComments.unshift(comment);extra.leadingComments.splice(i,1)}}}if(leadingComments&&leadingComments.length>0){this.leadingComments=leadingComments}if(trailingComments&&trailingComments.length>0){this.trailingComments=trailingComments}bottomRight.push(this)},finish:function(){if(extra.range){this.range[1]=lastIndex}if(extra.loc){this.loc.end={line:lastLineNumber,column:lastIndex-lastLineStart};if(extra.source){this.loc.source=extra.source}}if(extra.attachComment){this.processComment()}},finishArrayExpression:function(elements){this.type=Syntax.ArrayExpression;this.elements=elements;this.finish();return this},finishArrowFunctionExpression:function(params,defaults,body,expression){this.type=Syntax.ArrowFunctionExpression;this.id=null;this.params=params;this.defaults=defaults;this.body=body;this.generator=false;this.expression=expression;this.finish();return this},finishAssignmentExpression:function(operator,left,right){this.type=Syntax.AssignmentExpression;this.operator=operator;this.left=left;this.right=right;this.finish();return this},finishBinaryExpression:function(operator,left,right){this.type=operator==="||"||operator==="&&"?Syntax.LogicalExpression:Syntax.BinaryExpression;this.operator=operator;this.left=left;this.right=right;this.finish();return this},finishBlockStatement:function(body){this.type=Syntax.BlockStatement;this.body=body;this.finish();return this},finishBreakStatement:function(label){this.type=Syntax.BreakStatement;this.label=label;this.finish();return this},finishCallExpression:function(callee,args){this.type=Syntax.CallExpression;this.callee=callee;this.arguments=args;this.finish();return this},finishCatchClause:function(param,body){this.type=Syntax.CatchClause;this.param=param;this.body=body;this.finish();return this},finishClassBody:function(body){this.type=Syntax.ClassBody;this.body=body;this.finish();return this},finishClassDeclaration:function(id,superClass,body){this.type=Syntax.ClassDeclaration;this.id=id;this.superClass=superClass;this.body=body;this.finish();return this},finishClassExpression:function(id,superClass,body){this.type=Syntax.ClassExpression;this.id=id;this.superClass=superClass;this.body=body;this.finish();return this},finishConditionalExpression:function(test,consequent,alternate){this.type=Syntax.ConditionalExpression;this.test=test;this.consequent=consequent;this.alternate=alternate;this.finish();return this},finishContinueStatement:function(label){this.type=Syntax.ContinueStatement;this.label=label;this.finish();return this},finishDebuggerStatement:function(){this.type=Syntax.DebuggerStatement;this.finish();return this},finishDoWhileStatement:function(body,test){this.type=Syntax.DoWhileStatement;this.body=body;this.test=test;this.finish();return this},finishEmptyStatement:function(){this.type=Syntax.EmptyStatement;this.finish();return this},finishExpressionStatement:function(expression){this.type=Syntax.ExpressionStatement;this.expression=expression;this.finish();return this},finishForStatement:function(init,test,update,body){this.type=Syntax.ForStatement;this.init=init;this.test=test;this.update=update;this.body=body;this.finish();return this},finishForInStatement:function(left,right,body){this.type=Syntax.ForInStatement;this.left=left;this.right=right;this.body=body;this.each=false;this.finish();return this},finishFunctionDeclaration:function(id,params,defaults,body){this.type=Syntax.FunctionDeclaration;this.id=id;this.params=params;this.defaults=defaults;this.body=body;this.generator=false;this.expression=false;this.finish();return this},finishFunctionExpression:function(id,params,defaults,body){this.type=Syntax.FunctionExpression;this.id=id;this.params=params;this.defaults=defaults;this.body=body;this.generator=false;this.expression=false;this.finish();return this},finishIdentifier:function(name){this.type=Syntax.Identifier;this.name=name;this.finish();return this},finishIfStatement:function(test,consequent,alternate){this.type=Syntax.IfStatement;this.test=test;this.consequent=consequent;this.alternate=alternate;this.finish();return this},finishLabeledStatement:function(label,body){this.type=Syntax.LabeledStatement;this.label=label;this.body=body;this.finish();return this},finishLiteral:function(token){this.type=Syntax.Literal;this.value=token.value;this.raw=source.slice(token.start,token.end);if(token.regex){this.regex=token.regex}this.finish();return this},finishMemberExpression:function(accessor,object,property){this.type=Syntax.MemberExpression;this.computed=accessor==="[";this.object=object;this.property=property;this.finish();return this},finishNewExpression:function(callee,args){this.type=Syntax.NewExpression;this.callee=callee;this.arguments=args;this.finish();return this},finishObjectExpression:function(properties){this.type=Syntax.ObjectExpression;this.properties=properties;this.finish();return this},finishPostfixExpression:function(operator,argument){this.type=Syntax.UpdateExpression;this.operator=operator;this.argument=argument;this.prefix=false;this.finish();return this},finishProgram:function(body){this.type=Syntax.Program;this.body=body;this.finish();return this},finishProperty:function(kind,key,computed,value,method,shorthand){this.type=Syntax.Property;this.key=key;this.computed=computed;this.value=value;this.kind=kind;this.method=method;this.shorthand=shorthand;this.finish();return this},finishRestElement:function(argument){this.type=Syntax.RestElement;this.argument=argument;this.finish();return this},finishReturnStatement:function(argument){this.type=Syntax.ReturnStatement;this.argument=argument;this.finish();return this},finishSequenceExpression:function(expressions){this.type=Syntax.SequenceExpression;this.expressions=expressions;this.finish();return this},finishSwitchCase:function(test,consequent){this.type=Syntax.SwitchCase;this.test=test;this.consequent=consequent;this.finish();return this},finishSwitchStatement:function(discriminant,cases){this.type=Syntax.SwitchStatement;this.discriminant=discriminant;this.cases=cases;this.finish();return this},finishThisExpression:function(){this.type=Syntax.ThisExpression;this.finish();return this},finishThrowStatement:function(argument){this.type=Syntax.ThrowStatement;this.argument=argument;this.finish();return this},finishTryStatement:function(block,handler,finalizer){this.type=Syntax.TryStatement;this.block=block;this.guardedHandlers=[];this.handlers=handler?[handler]:[];this.handler=handler;this.finalizer=finalizer;this.finish();return this},finishUnaryExpression:function(operator,argument){this.type=operator==="++"||operator==="--"?Syntax.UpdateExpression:Syntax.UnaryExpression;this.operator=operator;this.argument=argument;this.prefix=true;this.finish();return this},finishVariableDeclaration:function(declarations){this.type=Syntax.VariableDeclaration;this.declarations=declarations;this.kind="var";this.finish();return this},finishLexicalDeclaration:function(declarations,kind){this.type=Syntax.VariableDeclaration;this.declarations=declarations;this.kind=kind;this.finish();return this},finishVariableDeclarator:function(id,init){this.type=Syntax.VariableDeclarator;this.id=id;this.init=init;this.finish();return this},finishWhileStatement:function(test,body){this.type=Syntax.WhileStatement;this.test=test;this.body=body;this.finish();return this},finishWithStatement:function(object,body){this.type=Syntax.WithStatement;this.object=object;this.body=body;this.finish();return this}};function recordError(error){var e,existing;for(e=0;e<extra.errors.length;e++){existing=extra.errors[e];if(existing.index===error.index&&existing.message===error.message){return}}extra.errors.push(error)}function createError(line,pos,description){var error=new Error("Line "+line+": "+description);error.index=pos;error.lineNumber=line;error.column=pos-(scanning?lineStart:lastLineStart)+1;error.description=description;return error}function throwError(messageFormat){var args,msg;args=Array.prototype.slice.call(arguments,1);msg=messageFormat.replace(/%(\d)/g,function(whole,idx){assert(idx<args.length,"Message reference must be in range");return args[idx]});throw createError(lastLineNumber,lastIndex,msg)}function tolerateError(messageFormat){var args,msg,error;args=Array.prototype.slice.call(arguments,1);msg=messageFormat.replace(/%(\d)/g,function(whole,idx){assert(idx<args.length,"Message reference must be in range");return args[idx]});error=createError(lineNumber,lastIndex,msg);if(extra.errors){recordError(error)}else{throw error}}function unexpectedTokenError(token,message){var msg=message||Messages.UnexpectedToken;if(token&&!message){msg=token.type===Token.EOF?Messages.UnexpectedEOS:token.type===Token.Identifier?Messages.UnexpectedIdentifier:token.type===Token.NumericLiteral?Messages.UnexpectedNumber:token.type===Token.StringLiteral?Messages.UnexpectedString:Messages.UnexpectedToken;if(token.type===Token.Keyword){if(isFutureReservedWord(token.value)){msg=Messages.UnexpectedReserved}else if(strict&&isStrictModeReservedWord(token.value)){msg=Messages.StrictReservedWord}}}msg=msg.replace("%0",token?token.value:"ILLEGAL");return token&&typeof token.lineNumber==="number"?createError(token.lineNumber,token.start,msg):createError(scanning?lineNumber:lastLineNumber,scanning?index:lastIndex,msg)}function throwUnexpectedToken(token,message){throw unexpectedTokenError(token,message)}function tolerateUnexpectedToken(token,message){var error=unexpectedTokenError(token,message);if(extra.errors){recordError(error)}else{throw error}}function expect(value){var token=lex();if(token.type!==Token.Punctuator||token.value!==value){throwUnexpectedToken(token)}}function expectCommaSeparator(){var token;if(extra.errors){token=lookahead;if(token.type===Token.Punctuator&&token.value===","){lex()}else if(token.type===Token.Punctuator&&token.value===";"){lex();tolerateUnexpectedToken(token)}else{tolerateUnexpectedToken(token,Messages.UnexpectedToken)}}else{expect(",")}}function expectKeyword(keyword){var token=lex();if(token.type!==Token.Keyword||token.value!==keyword){throwUnexpectedToken(token)}}function match(value){return lookahead.type===Token.Punctuator&&lookahead.value===value}function matchKeyword(keyword){return lookahead.type===Token.Keyword&&lookahead.value===keyword}function matchAssign(){var op;if(lookahead.type!==Token.Punctuator){return false}op=lookahead.value;return op==="="||op==="*="||op==="/="||op==="%="||op==="+="||op==="-="||op==="<<="||op===">>="||op===">>>="||op==="&="||op==="^="||op==="|="}function consumeSemicolon(){if(source.charCodeAt(startIndex)===59||match(";")){lex();return}if(hasLineTerminator){return}lastIndex=startIndex;lastLineNumber=startLineNumber;lastLineStart=startLineStart;if(lookahead.type!==Token.EOF&&!match("}")){throwUnexpectedToken(lookahead)}}function isLeftHandSide(expr){return expr.type===Syntax.Identifier||expr.type===Syntax.MemberExpression}function parseArrayInitialiser(){var elements=[],node=new Node;expect("[");while(!match("]")){if(match(",")){lex();elements.push(null)}else{elements.push(parseAssignmentExpression());if(!match("]")){expect(",")}}}lex();return node.finishArrayExpression(elements)}function parsePropertyFunction(node,paramInfo){var previousStrict,body;previousStrict=strict;body=parseFunctionSourceElements();if(strict&&paramInfo.firstRestricted){tolerateUnexpectedToken(paramInfo.firstRestricted,paramInfo.message)}if(strict&&paramInfo.stricted){tolerateUnexpectedToken(paramInfo.stricted,paramInfo.message)}strict=previousStrict;return node.finishFunctionExpression(null,paramInfo.params,paramInfo.defaults,body)}function parsePropertyMethodFunction(){var params,method,node=new Node;params=parseParams();method=parsePropertyFunction(node,params);return method}function parseObjectPropertyKey(){var token,node=new Node,expr;token=lex();switch(token.type){case Token.StringLiteral:case Token.NumericLiteral:if(strict&&token.octal){tolerateUnexpectedToken(token,Messages.StrictOctalLiteral)}return node.finishLiteral(token);case Token.Identifier:case Token.BooleanLiteral:case Token.NullLiteral:case Token.Keyword:return node.finishIdentifier(token.value);case Token.Punctuator:if(token.value==="["){expr=parseAssignmentExpression();expect("]");return expr}break}throwUnexpectedToken(token)}function lookaheadPropertyName(){switch(lookahead.type){case Token.Identifier:case Token.StringLiteral:case Token.BooleanLiteral:case Token.NullLiteral:case Token.NumericLiteral:case Token.Keyword:return true;case Token.Punctuator:return lookahead.value==="["}return false}function tryParseMethodDefinition(token,key,computed,node){var value,options,methodNode;if(token.type===Token.Identifier){if(token.value==="get"&&lookaheadPropertyName()){computed=match("[");key=parseObjectPropertyKey();methodNode=new Node;expect("(");expect(")");value=parsePropertyFunction(methodNode,{params:[],defaults:[],stricted:null,firstRestricted:null,message:null});return node.finishProperty("get",key,computed,value,false,false)}else if(token.value==="set"&&lookaheadPropertyName()){computed=match("[");key=parseObjectPropertyKey();methodNode=new Node;expect("(");options={params:[],defaultCount:0,defaults:[],firstRestricted:null,paramSet:{}};if(match(")")){tolerateUnexpectedToken(lookahead)}else{parseParam(options);if(options.defaultCount===0){options.defaults=[]}}expect(")");value=parsePropertyFunction(methodNode,options);return node.finishProperty("set",key,computed,value,false,false)}}if(match("(")){value=parsePropertyMethodFunction();return node.finishProperty("init",key,computed,value,true,false)}return null}function checkProto(key,computed,hasProto){if(computed===false&&(key.type===Syntax.Identifier&&key.name==="__proto__"||key.type===Syntax.Literal&&key.value==="__proto__")){if(hasProto.value){tolerateError(Messages.DuplicateProtoProperty)}else{hasProto.value=true}}}function parseObjectProperty(hasProto){var token=lookahead,node=new Node,computed,key,maybeMethod,value;computed=match("[");key=parseObjectPropertyKey();maybeMethod=tryParseMethodDefinition(token,key,computed,node);if(maybeMethod){checkProto(maybeMethod.key,maybeMethod.computed,hasProto);return maybeMethod}checkProto(key,computed,hasProto);if(match(":")){lex();value=parseAssignmentExpression();return node.finishProperty("init",key,computed,value,false,false)}if(token.type===Token.Identifier){return node.finishProperty("init",key,computed,key,false,true)}throwUnexpectedToken(lookahead)}function parseObjectInitialiser(){var properties=[],hasProto={value:false},node=new Node;expect("{");while(!match("}")){properties.push(parseObjectProperty(hasProto));if(!match("}")){expectCommaSeparator()}}expect("}");return node.finishObjectExpression(properties)}function parseGroupExpression(){var expr,expressions,startToken,isValidArrowParameter=true;expect("(");if(match(")")){lex();if(!match("=>")){expect("=>")}return{type:PlaceHolders.ArrowParameterPlaceHolder,params:[]}}startToken=lookahead;if(match("...")){expr=parseRestElement();expect(")");if(!match("=>")){expect("=>")}return{type:PlaceHolders.ArrowParameterPlaceHolder,params:[expr]}}if(match("(")){isValidArrowParameter=false}expr=parseAssignmentExpression();if(match(",")){expressions=[expr];while(startIndex<length){if(!match(",")){break}lex();if(match("...")){if(!isValidArrowParameter){throwUnexpectedToken(lookahead)}expressions.push(parseRestElement());expect(")");if(!match("=>")){expect("=>")}return{type:PlaceHolders.ArrowParameterPlaceHolder,params:expressions}}else if(match("(")){isValidArrowParameter=false}expressions.push(parseAssignmentExpression())}expr=new WrappingNode(startToken).finishSequenceExpression(expressions)}expect(")");if(match("=>")&&!isValidArrowParameter){throwUnexpectedToken(lookahead)}return expr}function parsePrimaryExpression(){var type,token,expr,node;if(match("(")){return parseGroupExpression()}if(match("[")){return parseArrayInitialiser()}if(match("{")){return parseObjectInitialiser()}type=lookahead.type;node=new Node;if(type===Token.Identifier){expr=node.finishIdentifier(lex().value)}else if(type===Token.StringLiteral||type===Token.NumericLiteral){if(strict&&lookahead.octal){tolerateUnexpectedToken(lookahead,Messages.StrictOctalLiteral)}expr=node.finishLiteral(lex())}else if(type===Token.Keyword){if(matchKeyword("function")){return parseFunctionExpression()}if(matchKeyword("this")){lex();return node.finishThisExpression()}if(matchKeyword("class")){return parseClassExpression()}throwUnexpectedToken(lex())}else if(type===Token.BooleanLiteral){token=lex();token.value=token.value==="true";expr=node.finishLiteral(token)}else if(type===Token.NullLiteral){token=lex();token.value=null;expr=node.finishLiteral(token)}else if(match("/")||match("/=")){index=startIndex;if(typeof extra.tokens!=="undefined"){token=collectRegex()}else{token=scanRegExp()}lex();expr=node.finishLiteral(token)}else{throwUnexpectedToken(lex())}return expr}function parseArguments(){var args=[];expect("(");if(!match(")")){while(startIndex<length){args.push(parseAssignmentExpression());if(match(")")){break}expectCommaSeparator()}}expect(")");return args}function parseNonComputedProperty(){var token,node=new Node;token=lex();if(!isIdentifierName(token)){throwUnexpectedToken(token)}return node.finishIdentifier(token.value)}function parseNonComputedMember(){expect(".");return parseNonComputedProperty()}function parseComputedMember(){var expr;expect("[");expr=parseExpression();expect("]");return expr}function parseNewExpression(){var callee,args,node=new Node;expectKeyword("new");callee=parseLeftHandSideExpression();args=match("(")?parseArguments():[];return node.finishNewExpression(callee,args)}function parseLeftHandSideExpressionAllowCall(){var expr,args,property,startToken,previousAllowIn=state.allowIn;startToken=lookahead;state.allowIn=true;expr=matchKeyword("new")?parseNewExpression():parsePrimaryExpression();for(;;){if(match(".")){property=parseNonComputedMember();expr=new WrappingNode(startToken).finishMemberExpression(".",expr,property)}else if(match("(")){args=parseArguments();expr=new WrappingNode(startToken).finishCallExpression(expr,args)}else if(match("[")){property=parseComputedMember();expr=new WrappingNode(startToken).finishMemberExpression("[",expr,property)}else{break}}state.allowIn=previousAllowIn;return expr}function parseLeftHandSideExpression(){var expr,property,startToken;assert(state.allowIn,"callee of new expression always allow in keyword.");startToken=lookahead;expr=matchKeyword("new")?parseNewExpression():parsePrimaryExpression();for(;;){if(match("[")){property=parseComputedMember();expr=new WrappingNode(startToken).finishMemberExpression("[",expr,property)}else if(match(".")){property=parseNonComputedMember();expr=new WrappingNode(startToken).finishMemberExpression(".",expr,property)}else{break}}return expr}function parsePostfixExpression(){var expr,token,startToken=lookahead;expr=parseLeftHandSideExpressionAllowCall();if(!hasLineTerminator&&lookahead.type===Token.Punctuator){if(match("++")||match("--")){if(strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)){tolerateError(Messages.StrictLHSPostfix)}if(!isLeftHandSide(expr)){tolerateError(Messages.InvalidLHSInAssignment)}token=lex();expr=new WrappingNode(startToken).finishPostfixExpression(token.value,expr)}}return expr}function parseUnaryExpression(){var token,expr,startToken;if(lookahead.type!==Token.Punctuator&&lookahead.type!==Token.Keyword){expr=parsePostfixExpression()}else if(match("++")||match("--")){startToken=lookahead;token=lex();expr=parseUnaryExpression();if(strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)){tolerateError(Messages.StrictLHSPrefix)}if(!isLeftHandSide(expr)){tolerateError(Messages.InvalidLHSInAssignment)}expr=new WrappingNode(startToken).finishUnaryExpression(token.value,expr)}else if(match("+")||match("-")||match("~")||match("!")){startToken=lookahead;token=lex();expr=parseUnaryExpression();expr=new WrappingNode(startToken).finishUnaryExpression(token.value,expr)}else if(matchKeyword("delete")||matchKeyword("void")||matchKeyword("typeof")){startToken=lookahead;token=lex();expr=parseUnaryExpression();expr=new WrappingNode(startToken).finishUnaryExpression(token.value,expr);if(strict&&expr.operator==="delete"&&expr.argument.type===Syntax.Identifier){tolerateError(Messages.StrictDelete)}}else{expr=parsePostfixExpression()}return expr}function binaryPrecedence(token,allowIn){var prec=0;if(token.type!==Token.Punctuator&&token.type!==Token.Keyword){return 0}switch(token.value){case"||":prec=1;break;case"&&":prec=2;break;case"|":prec=3;break;case"^":prec=4;break;case"&":prec=5;break;case"==":case"!=":case"===":case"!==":prec=6;break;case"<":case">":case"<=":case">=":case"instanceof":prec=7;break;case"in":prec=allowIn?7:0;break;case"<<":case">>":case">>>":prec=8;break;case"+":case"-":prec=9;break;case"*":case"/":case"%":prec=11;break;default:break}return prec}function parseBinaryExpression(){var marker,markers,expr,token,prec,stack,right,operator,left,i;marker=lookahead;left=parseUnaryExpression();token=lookahead;prec=binaryPrecedence(token,state.allowIn);if(prec===0){return left}token.prec=prec;lex();markers=[marker,lookahead];right=parseUnaryExpression();stack=[left,token,right];while((prec=binaryPrecedence(lookahead,state.allowIn))>0){while(stack.length>2&&prec<=stack[stack.length-2].prec){right=stack.pop();operator=stack.pop().value;left=stack.pop();markers.pop();expr=new WrappingNode(markers[markers.length-1]).finishBinaryExpression(operator,left,right);stack.push(expr)}token=lex();token.prec=prec;stack.push(token);markers.push(lookahead);expr=parseUnaryExpression();stack.push(expr)}i=stack.length-1;expr=stack[i];markers.pop();while(i>1){expr=new WrappingNode(markers.pop()).finishBinaryExpression(stack[i-1].value,stack[i-2],expr);i-=2}return expr}function parseConditionalExpression(){var expr,previousAllowIn,consequent,alternate,startToken;startToken=lookahead;expr=parseBinaryExpression();if(match("?")){lex();previousAllowIn=state.allowIn;state.allowIn=true;consequent=parseAssignmentExpression();state.allowIn=previousAllowIn;expect(":");alternate=parseAssignmentExpression();expr=new WrappingNode(startToken).finishConditionalExpression(expr,consequent,alternate)}return expr}function parseConciseBody(){if(match("{")){return parseFunctionSourceElements()}return parseAssignmentExpression()}function reinterpretAsCoverFormalsList(expr){var i,len,param,params,defaults,defaultCount,options,token;defaults=[];defaultCount=0;params=[expr];
switch(expr.type){case Syntax.Identifier:case Syntax.AssignmentExpression:break;case Syntax.SequenceExpression:params=expr.expressions;break;case PlaceHolders.ArrowParameterPlaceHolder:params=expr.params;break;default:return null}options={paramSet:{}};for(i=0,len=params.length;i<len;i+=1){param=params[i];if(param.type===Syntax.Identifier){params[i]=param;defaults.push(null);validateParam(options,param,param.name)}else if(param.type===Syntax.RestElement){params[i]=param;defaults.push(null);validateParam(options,param.argument,param.argument.name)}else if(param.type===Syntax.AssignmentExpression){params[i]=param.left;defaults.push(param.right);++defaultCount;validateParam(options,param.left,param.left.name)}else{return null}}if(options.message===Messages.StrictParamDupe){token=strict?options.stricted:options.firstRestricted;throwUnexpectedToken(token,options.message)}if(defaultCount===0){defaults=[]}return{params:params,defaults:defaults,stricted:options.stricted,firstRestricted:options.firstRestricted,message:options.message}}function parseArrowFunctionExpression(options,node){var previousStrict,body;expect("=>");previousStrict=strict;body=parseConciseBody();if(strict&&options.firstRestricted){throwUnexpectedToken(options.firstRestricted,options.message)}if(strict&&options.stricted){tolerateUnexpectedToken(options.stricted,options.message)}strict=previousStrict;return node.finishArrowFunctionExpression(options.params,options.defaults,body,body.type!==Syntax.BlockStatement)}function parseAssignmentExpression(){var token,expr,right,list,startToken;startToken=lookahead;token=lookahead;expr=parseConditionalExpression();if(expr.type===PlaceHolders.ArrowParameterPlaceHolder||match("=>")){list=reinterpretAsCoverFormalsList(expr);if(list){return parseArrowFunctionExpression(list,new WrappingNode(startToken))}}if(matchAssign()){if(!isLeftHandSide(expr)){tolerateError(Messages.InvalidLHSInAssignment)}if(strict&&expr.type===Syntax.Identifier&&isRestrictedWord(expr.name)){tolerateUnexpectedToken(token,Messages.StrictLHSAssignment)}token=lex();right=parseAssignmentExpression();expr=new WrappingNode(startToken).finishAssignmentExpression(token.value,expr,right)}return expr}function parseExpression(){var expr,startToken=lookahead,expressions;expr=parseAssignmentExpression();if(match(",")){expressions=[expr];while(startIndex<length){if(!match(",")){break}lex();expressions.push(parseAssignmentExpression())}expr=new WrappingNode(startToken).finishSequenceExpression(expressions)}return expr}function parseStatementListItem(){if(lookahead.type===Token.Keyword){switch(lookahead.value){case"const":case"let":return parseLexicalDeclaration();case"function":return parseFunctionDeclaration(new Node);case"class":return parseClassDeclaration()}}return parseStatement()}function parseStatementList(){var list=[];while(startIndex<length){if(match("}")){break}list.push(parseStatementListItem())}return list}function parseBlock(){var block,node=new Node;expect("{");block=parseStatementList();expect("}");return node.finishBlockStatement(block)}function parseVariableIdentifier(){var token,node=new Node;token=lex();if(token.type!==Token.Identifier){if(strict&&token.type===Token.Keyword&&isStrictModeReservedWord(token.value)){tolerateUnexpectedToken(token,Messages.StrictReservedWord)}else{throwUnexpectedToken(token)}}return node.finishIdentifier(token.value)}function parseVariableDeclaration(){var init=null,id,node=new Node;id=parseVariableIdentifier();if(strict&&isRestrictedWord(id.name)){tolerateError(Messages.StrictVarName)}if(match("=")){lex();init=parseAssignmentExpression()}return node.finishVariableDeclarator(id,init)}function parseVariableDeclarationList(){var list=[];do{list.push(parseVariableDeclaration());if(!match(",")){break}lex()}while(startIndex<length);return list}function parseVariableStatement(node){var declarations;expectKeyword("var");declarations=parseVariableDeclarationList();consumeSemicolon();return node.finishVariableDeclaration(declarations)}function parseLexicalBinding(kind){var init=null,id,node=new Node;id=parseVariableIdentifier();if(strict&&isRestrictedWord(id.name)){tolerateError(Messages.StrictVarName)}if(kind==="const"){if(!matchKeyword("in")){expect("=");init=parseAssignmentExpression()}}else if(match("=")){lex();init=parseAssignmentExpression()}return node.finishVariableDeclarator(id,init)}function parseBindingList(kind){var list=[];do{list.push(parseLexicalBinding(kind));if(!match(",")){break}lex()}while(startIndex<length);return list}function parseLexicalDeclaration(){var kind,declarations,node=new Node;kind=lex().value;assert(kind==="let"||kind==="const","Lexical declaration must be either let or const");declarations=parseBindingList(kind);consumeSemicolon();return node.finishLexicalDeclaration(declarations,kind)}function parseRestElement(){var param,node=new Node;lex();if(match("{")){throwError(Messages.ObjectPatternAsRestParameter)}param=parseVariableIdentifier();if(match("=")){throwError(Messages.DefaultRestParameter)}if(!match(")")){throwError(Messages.ParameterAfterRestParameter)}return node.finishRestElement(param)}function parseEmptyStatement(node){expect(";");return node.finishEmptyStatement()}function parseExpressionStatement(node){var expr=parseExpression();consumeSemicolon();return node.finishExpressionStatement(expr)}function parseIfStatement(node){var test,consequent,alternate;expectKeyword("if");expect("(");test=parseExpression();expect(")");consequent=parseStatement();if(matchKeyword("else")){lex();alternate=parseStatement()}else{alternate=null}return node.finishIfStatement(test,consequent,alternate)}function parseDoWhileStatement(node){var body,test,oldInIteration;expectKeyword("do");oldInIteration=state.inIteration;state.inIteration=true;body=parseStatement();state.inIteration=oldInIteration;expectKeyword("while");expect("(");test=parseExpression();expect(")");if(match(";")){lex()}return node.finishDoWhileStatement(body,test)}function parseWhileStatement(node){var test,body,oldInIteration;expectKeyword("while");expect("(");test=parseExpression();expect(")");oldInIteration=state.inIteration;state.inIteration=true;body=parseStatement();state.inIteration=oldInIteration;return node.finishWhileStatement(test,body)}function parseForStatement(node){var init,test,update,left,right,kind,declarations,body,oldInIteration,previousAllowIn=state.allowIn;init=test=update=null;expectKeyword("for");expect("(");if(match(";")){lex()}else{if(matchKeyword("var")){init=new Node;lex();state.allowIn=false;init=init.finishVariableDeclaration(parseVariableDeclarationList());state.allowIn=previousAllowIn;if(init.declarations.length===1&&matchKeyword("in")){lex();left=init;right=parseExpression();init=null}else{expect(";")}}else if(matchKeyword("const")||matchKeyword("let")){init=new Node;kind=lex().value;state.allowIn=false;declarations=parseBindingList(kind);state.allowIn=previousAllowIn;if(declarations.length===1&&declarations[0].init===null&&matchKeyword("in")){init=init.finishLexicalDeclaration(declarations,kind);lex();left=init;right=parseExpression();init=null}else{consumeSemicolon();init=init.finishLexicalDeclaration(declarations,kind)}}else{state.allowIn=false;init=parseExpression();state.allowIn=previousAllowIn;if(matchKeyword("in")){if(!isLeftHandSide(init)){tolerateError(Messages.InvalidLHSInForIn)}lex();left=init;right=parseExpression();init=null}else{expect(";")}}}if(typeof left==="undefined"){if(!match(";")){test=parseExpression()}expect(";");if(!match(")")){update=parseExpression()}}expect(")");oldInIteration=state.inIteration;state.inIteration=true;body=parseStatement();state.inIteration=oldInIteration;return typeof left==="undefined"?node.finishForStatement(init,test,update,body):node.finishForInStatement(left,right,body)}function parseContinueStatement(node){var label=null,key;expectKeyword("continue");if(source.charCodeAt(startIndex)===59){lex();if(!state.inIteration){throwError(Messages.IllegalContinue)}return node.finishContinueStatement(null)}if(hasLineTerminator){if(!state.inIteration){throwError(Messages.IllegalContinue)}return node.finishContinueStatement(null)}if(lookahead.type===Token.Identifier){label=parseVariableIdentifier();key="$"+label.name;if(!Object.prototype.hasOwnProperty.call(state.labelSet,key)){throwError(Messages.UnknownLabel,label.name)}}consumeSemicolon();if(label===null&&!state.inIteration){throwError(Messages.IllegalContinue)}return node.finishContinueStatement(label)}function parseBreakStatement(node){var label=null,key;expectKeyword("break");if(source.charCodeAt(lastIndex)===59){lex();if(!(state.inIteration||state.inSwitch)){throwError(Messages.IllegalBreak)}return node.finishBreakStatement(null)}if(hasLineTerminator){if(!(state.inIteration||state.inSwitch)){throwError(Messages.IllegalBreak)}return node.finishBreakStatement(null)}if(lookahead.type===Token.Identifier){label=parseVariableIdentifier();key="$"+label.name;if(!Object.prototype.hasOwnProperty.call(state.labelSet,key)){throwError(Messages.UnknownLabel,label.name)}}consumeSemicolon();if(label===null&&!(state.inIteration||state.inSwitch)){throwError(Messages.IllegalBreak)}return node.finishBreakStatement(label)}function parseReturnStatement(node){var argument=null;expectKeyword("return");if(!state.inFunctionBody){tolerateError(Messages.IllegalReturn)}if(source.charCodeAt(lastIndex)===32){if(isIdentifierStart(source.charCodeAt(lastIndex+1))){argument=parseExpression();consumeSemicolon();return node.finishReturnStatement(argument)}}if(hasLineTerminator){return node.finishReturnStatement(null)}if(!match(";")){if(!match("}")&&lookahead.type!==Token.EOF){argument=parseExpression()}}consumeSemicolon();return node.finishReturnStatement(argument)}function parseWithStatement(node){var object,body;if(strict){tolerateError(Messages.StrictModeWith)}expectKeyword("with");expect("(");object=parseExpression();expect(")");body=parseStatement();return node.finishWithStatement(object,body)}function parseSwitchCase(){var test,consequent=[],statement,node=new Node;if(matchKeyword("default")){lex();test=null}else{expectKeyword("case");test=parseExpression()}expect(":");while(startIndex<length){if(match("}")||matchKeyword("default")||matchKeyword("case")){break}statement=parseStatementListItem();consequent.push(statement)}return node.finishSwitchCase(test,consequent)}function parseSwitchStatement(node){var discriminant,cases,clause,oldInSwitch,defaultFound;expectKeyword("switch");expect("(");discriminant=parseExpression();expect(")");expect("{");cases=[];if(match("}")){lex();return node.finishSwitchStatement(discriminant,cases)}oldInSwitch=state.inSwitch;state.inSwitch=true;defaultFound=false;while(startIndex<length){if(match("}")){break}clause=parseSwitchCase();if(clause.test===null){if(defaultFound){throwError(Messages.MultipleDefaultsInSwitch)}defaultFound=true}cases.push(clause)}state.inSwitch=oldInSwitch;expect("}");return node.finishSwitchStatement(discriminant,cases)}function parseThrowStatement(node){var argument;expectKeyword("throw");if(hasLineTerminator){throwError(Messages.NewlineAfterThrow)}argument=parseExpression();consumeSemicolon();return node.finishThrowStatement(argument)}function parseCatchClause(){var param,body,node=new Node;expectKeyword("catch");expect("(");if(match(")")){throwUnexpectedToken(lookahead)}param=parseVariableIdentifier();if(strict&&isRestrictedWord(param.name)){tolerateError(Messages.StrictCatchVariable)}expect(")");body=parseBlock();return node.finishCatchClause(param,body)}function parseTryStatement(node){var block,handler=null,finalizer=null;expectKeyword("try");block=parseBlock();if(matchKeyword("catch")){handler=parseCatchClause()}if(matchKeyword("finally")){lex();finalizer=parseBlock()}if(!handler&&!finalizer){throwError(Messages.NoCatchOrFinally)}return node.finishTryStatement(block,handler,finalizer)}function parseDebuggerStatement(node){expectKeyword("debugger");consumeSemicolon();return node.finishDebuggerStatement()}function parseStatement(){var type=lookahead.type,expr,labeledBody,key,node;if(type===Token.EOF){throwUnexpectedToken(lookahead)}if(type===Token.Punctuator&&lookahead.value==="{"){return parseBlock()}node=new Node;if(type===Token.Punctuator){switch(lookahead.value){case";":return parseEmptyStatement(node);case"(":return parseExpressionStatement(node);default:break}}else if(type===Token.Keyword){switch(lookahead.value){case"break":return parseBreakStatement(node);case"continue":return parseContinueStatement(node);case"debugger":return parseDebuggerStatement(node);case"do":return parseDoWhileStatement(node);case"for":return parseForStatement(node);case"function":return parseFunctionDeclaration(node);case"if":return parseIfStatement(node);case"return":return parseReturnStatement(node);case"switch":return parseSwitchStatement(node);case"throw":return parseThrowStatement(node);case"try":return parseTryStatement(node);case"var":return parseVariableStatement(node);case"while":return parseWhileStatement(node);case"with":return parseWithStatement(node);default:break}}expr=parseExpression();if(expr.type===Syntax.Identifier&&match(":")){lex();key="$"+expr.name;if(Object.prototype.hasOwnProperty.call(state.labelSet,key)){throwError(Messages.Redeclaration,"Label",expr.name)}state.labelSet[key]=true;labeledBody=parseStatement();delete state.labelSet[key];return node.finishLabeledStatement(expr,labeledBody)}consumeSemicolon();return node.finishExpressionStatement(expr)}function parseFunctionSourceElements(){var statement,body=[],token,directive,firstRestricted,oldLabelSet,oldInIteration,oldInSwitch,oldInFunctionBody,oldParenthesisCount,node=new Node;expect("{");while(startIndex<length){if(lookahead.type!==Token.StringLiteral){break}token=lookahead;statement=parseStatementListItem();body.push(statement);if(statement.expression.type!==Syntax.Literal){break}directive=source.slice(token.start+1,token.end-1);if(directive==="use strict"){strict=true;if(firstRestricted){tolerateUnexpectedToken(firstRestricted,Messages.StrictOctalLiteral)}}else{if(!firstRestricted&&token.octal){firstRestricted=token}}}oldLabelSet=state.labelSet;oldInIteration=state.inIteration;oldInSwitch=state.inSwitch;oldInFunctionBody=state.inFunctionBody;oldParenthesisCount=state.parenthesizedCount;state.labelSet={};state.inIteration=false;state.inSwitch=false;state.inFunctionBody=true;state.parenthesizedCount=0;while(startIndex<length){if(match("}")){break}body.push(parseStatementListItem())}expect("}");state.labelSet=oldLabelSet;state.inIteration=oldInIteration;state.inSwitch=oldInSwitch;state.inFunctionBody=oldInFunctionBody;state.parenthesizedCount=oldParenthesisCount;return node.finishBlockStatement(body)}function validateParam(options,param,name){var key="$"+name;if(strict){if(isRestrictedWord(name)){options.stricted=param;options.message=Messages.StrictParamName}if(Object.prototype.hasOwnProperty.call(options.paramSet,key)){options.stricted=param;options.message=Messages.StrictParamDupe}}else if(!options.firstRestricted){if(isRestrictedWord(name)){options.firstRestricted=param;options.message=Messages.StrictParamName}else if(isStrictModeReservedWord(name)){options.firstRestricted=param;options.message=Messages.StrictReservedWord}else if(Object.prototype.hasOwnProperty.call(options.paramSet,key)){options.firstRestricted=param;options.message=Messages.StrictParamDupe}}options.paramSet[key]=true}function parseParam(options){var token,param,def;token=lookahead;if(token.value==="..."){param=parseRestElement();validateParam(options,param.argument,param.argument.name);options.params.push(param);options.defaults.push(null);return false}param=parseVariableIdentifier();validateParam(options,token,token.value);if(match("=")){lex();def=parseAssignmentExpression();++options.defaultCount}options.params.push(param);options.defaults.push(def);return!match(")")}function parseParams(firstRestricted){var options;options={params:[],defaultCount:0,defaults:[],firstRestricted:firstRestricted};expect("(");if(!match(")")){options.paramSet={};while(startIndex<length){if(!parseParam(options)){break}expect(",")}}expect(")");if(options.defaultCount===0){options.defaults=[]}return{params:options.params,defaults:options.defaults,stricted:options.stricted,firstRestricted:options.firstRestricted,message:options.message}}function parseFunctionDeclaration(node){var id,params=[],defaults=[],body,token,stricted,tmp,firstRestricted,message,previousStrict;expectKeyword("function");token=lookahead;id=parseVariableIdentifier();if(strict){if(isRestrictedWord(token.value)){tolerateUnexpectedToken(token,Messages.StrictFunctionName)}}else{if(isRestrictedWord(token.value)){firstRestricted=token;message=Messages.StrictFunctionName}else if(isStrictModeReservedWord(token.value)){firstRestricted=token;message=Messages.StrictReservedWord}}tmp=parseParams(firstRestricted);params=tmp.params;defaults=tmp.defaults;stricted=tmp.stricted;firstRestricted=tmp.firstRestricted;if(tmp.message){message=tmp.message}previousStrict=strict;body=parseFunctionSourceElements();if(strict&&firstRestricted){throwUnexpectedToken(firstRestricted,message)}if(strict&&stricted){tolerateUnexpectedToken(stricted,message)}strict=previousStrict;return node.finishFunctionDeclaration(id,params,defaults,body)}function parseFunctionExpression(){var token,id=null,stricted,firstRestricted,message,tmp,params=[],defaults=[],body,previousStrict,node=new Node;expectKeyword("function");if(!match("(")){token=lookahead;id=parseVariableIdentifier();if(strict){if(isRestrictedWord(token.value)){tolerateUnexpectedToken(token,Messages.StrictFunctionName)}}else{if(isRestrictedWord(token.value)){firstRestricted=token;message=Messages.StrictFunctionName}else if(isStrictModeReservedWord(token.value)){firstRestricted=token;message=Messages.StrictReservedWord}}}tmp=parseParams(firstRestricted);params=tmp.params;defaults=tmp.defaults;stricted=tmp.stricted;firstRestricted=tmp.firstRestricted;if(tmp.message){message=tmp.message}previousStrict=strict;body=parseFunctionSourceElements();if(strict&&firstRestricted){throwUnexpectedToken(firstRestricted,message)}if(strict&&stricted){tolerateUnexpectedToken(stricted,message)}strict=previousStrict;return node.finishFunctionExpression(id,params,defaults,body)}function parseClassBody(){var classBody,token,isStatic,hasConstructor=false,body,method,computed,key;classBody=new Node;expect("{");body=[];while(!match("}")){if(match(";")){lex()}else{method=new Node;token=lookahead;isStatic=false;computed=match("[");key=parseObjectPropertyKey();if(key.name==="static"&&lookaheadPropertyName()){token=lookahead;isStatic=true;computed=match("[");key=parseObjectPropertyKey()}method=tryParseMethodDefinition(token,key,computed,method);if(method){method.static=isStatic;if(method.kind==="init"){method.kind="method"}if(!isStatic){if(!method.computed&&(method.key.name||method.key.value.toString())==="constructor"){if(method.kind!=="method"||!method.method||method.value.generator){throwUnexpectedToken(token,Messages.ConstructorSpecialMethod)}if(hasConstructor){throwUnexpectedToken(token,Messages.DuplicateConstructor)}else{hasConstructor=true}method.kind="constructor"}}else{if(!method.computed&&(method.key.name||method.key.value.toString())==="prototype"){throwUnexpectedToken(token,Messages.StaticPrototype)}}method.type=Syntax.MethodDefinition;delete method.method;delete method.shorthand;body.push(method)}else{throwUnexpectedToken(lookahead)}}}lex();return classBody.finishClassBody(body)}function parseClassDeclaration(){var id=null,superClass=null,classNode=new Node,classBody,previousStrict=strict;strict=true;expectKeyword("class");id=parseVariableIdentifier();if(matchKeyword("extends")){lex();superClass=parseLeftHandSideExpressionAllowCall()}classBody=parseClassBody();strict=previousStrict;return classNode.finishClassDeclaration(id,superClass,classBody)}function parseClassExpression(){var id=null,superClass=null,classNode=new Node,classBody,previousStrict=strict;strict=true;expectKeyword("class");if(lookahead.type===Token.Identifier){id=parseVariableIdentifier()}if(matchKeyword("extends")){lex();superClass=parseLeftHandSideExpressionAllowCall()}classBody=parseClassBody();strict=previousStrict;return classNode.finishClassExpression(id,superClass,classBody)}function parseScriptBody(){var statement,body=[],token,directive,firstRestricted;while(startIndex<length){token=lookahead;if(token.type!==Token.StringLiteral){break}statement=parseStatementListItem();body.push(statement);if(statement.expression.type!==Syntax.Literal){break}directive=source.slice(token.start+1,token.end-1);if(directive==="use strict"){strict=true;if(firstRestricted){tolerateUnexpectedToken(firstRestricted,Messages.StrictOctalLiteral)}}else{if(!firstRestricted&&token.octal){firstRestricted=token}}}while(startIndex<length){statement=parseStatementListItem();if(typeof statement==="undefined"){break}body.push(statement)}return body}function parseProgram(){var body,node;peek();node=new Node;strict=false;body=parseScriptBody();return node.finishProgram(body)}function filterTokenLocation(){var i,entry,token,tokens=[];for(i=0;i<extra.tokens.length;++i){entry=extra.tokens[i];token={type:entry.type,value:entry.value};if(entry.regex){token.regex={pattern:entry.regex.pattern,flags:entry.regex.flags}}if(extra.range){token.range=entry.range}if(extra.loc){token.loc=entry.loc}tokens.push(token)}extra.tokens=tokens}function tokenize(code,options){var toString,tokens;toString=String;if(typeof code!=="string"&&!(code instanceof String)){code=toString(code)}source=code;index=0;lineNumber=source.length>0?1:0;lineStart=0;startIndex=index;startLineNumber=lineNumber;startLineStart=lineStart;length=source.length;lookahead=null;state={allowIn:true,labelSet:{},inFunctionBody:false,inIteration:false,inSwitch:false,lastCommentStart:-1};extra={};options=options||{};options.tokens=true;extra.tokens=[];extra.tokenize=true;extra.openParenToken=-1;extra.openCurlyToken=-1;extra.range=typeof options.range==="boolean"&&options.range;extra.loc=typeof options.loc==="boolean"&&options.loc;if(typeof options.comment==="boolean"&&options.comment){extra.comments=[]}if(typeof options.tolerant==="boolean"&&options.tolerant){extra.errors=[]}try{peek();if(lookahead.type===Token.EOF){return extra.tokens}lex();while(lookahead.type!==Token.EOF){try{lex()}catch(lexError){if(extra.errors){recordError(lexError);break}else{throw lexError}}}filterTokenLocation();tokens=extra.tokens;if(typeof extra.comments!=="undefined"){tokens.comments=extra.comments}if(typeof extra.errors!=="undefined"){tokens.errors=extra.errors}}catch(e){throw e}finally{extra={}}return tokens}function parse(code,options){var program,toString;toString=String;if(typeof code!=="string"&&!(code instanceof String)){code=toString(code)}source=code;index=0;lineNumber=source.length>0?1:0;lineStart=0;startIndex=index;startLineNumber=lineNumber;startLineStart=lineStart;length=source.length;lookahead=null;state={allowIn:true,labelSet:{},inFunctionBody:false,inIteration:false,inSwitch:false,lastCommentStart:-1};extra={};if(typeof options!=="undefined"){extra.range=typeof options.range==="boolean"&&options.range;extra.loc=typeof options.loc==="boolean"&&options.loc;extra.attachComment=typeof options.attachComment==="boolean"&&options.attachComment;if(extra.loc&&options.source!==null&&options.source!==undefined){extra.source=toString(options.source)}if(typeof options.tokens==="boolean"&&options.tokens){extra.tokens=[]}if(typeof options.comment==="boolean"&&options.comment){extra.comments=[]}if(typeof options.tolerant==="boolean"&&options.tolerant){extra.errors=[]}if(extra.attachComment){extra.range=true;extra.comments=[];extra.bottomRightStack=[];extra.trailingComments=[];extra.leadingComments=[]}}try{program=parseProgram();if(typeof extra.comments!=="undefined"){program.comments=extra.comments}if(typeof extra.tokens!=="undefined"){filterTokenLocation();program.tokens=extra.tokens}if(typeof extra.errors!=="undefined"){program.errors=extra.errors}}catch(e){throw e}finally{extra={}}return program}exports.version="2.1.0";exports.tokenize=tokenize;exports.parse=parse;exports.Syntax=function(){var name,types={};if(typeof Object.create==="function"){types=Object.create(null)}for(name in Syntax){if(Syntax.hasOwnProperty(name)){types[name]=Syntax[name]}}if(typeof Object.freeze==="function"){Object.freeze(types)}return types}()})},{}]},{},[]);require=function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s}({treeify:[function(require,module,exports){(function(root,factory){if(typeof exports==="object"){module.exports=factory()}else if(typeof define==="function"&&define.amd){define(factory)}else{root.treeify=factory()}})(this,function(){function makePrefix(key,last){var str=last?"└":"├";if(key){str+="─ "}else{str+="──┐"}return str}function filterKeys(obj,hideFunctions){var keys=[];for(var branch in obj){if(!obj.hasOwnProperty(branch)){continue}if(hideFunctions&&typeof obj[branch]==="function"){continue}keys.push(branch)}return keys}function growBranch(key,root,last,lastStates,showValues,hideFunctions,callback){var line="",index=0,lastKey,circular,lastStatesCopy=lastStates.slice(0);if(lastStatesCopy.push([root,last])&&lastStates.length>0){lastStates.forEach(function(lastState,idx){if(idx>0){line+=(lastState[1]?" ":"│")+" "}if(!circular&&lastState[0]===root){circular=true}});line+=makePrefix(key,last)+key;showValues&&typeof root!=="object"&&(line+=": "+root);circular&&(line+=" (circular ref.)");callback(line)}if(!circular&&typeof root==="object"){var keys=filterKeys(root,hideFunctions);keys.forEach(function(branch){lastKey=++index===keys.length;growBranch(branch,root[branch],lastKey,lastStatesCopy,showValues,hideFunctions,callback)})}}var Treeify={};Treeify.asLines=function(obj,showValues,hideFunctions,lineCallback){var hideFunctionsArg=typeof hideFunctions!=="function"?hideFunctions:false;growBranch(".",obj,false,[],showValues,hideFunctionsArg,lineCallback||hideFunctions)};Treeify.asTree=function(obj,showValues,hideFunctions){var tree="";growBranch(".",obj,false,[],showValues,hideFunctions,function(line){tree+=line+"\n"});return tree};return Treeify})},{}]},{},[]);var esquery=require("esquery");var esprima=require("esprima");var treeify=require("treeify").asTree;var src='var x = require("x"); var z = require("z")';function go(selector){var ast=esprima.parse(src);var selectorAst=esquery.parse(selector);log(selectorAst);var matches=esquery.match(ast,selectorAst);return matches}var results=go('[type="CallExpression"]').map(extractDependencyName);log(results);function extractDependencyName(node){return node.arguments[0].value}function log(output){alert(treeify(output,true))}
{
"name": "requirebin-sketch",
"version": "1.0.0",
"dependencies": {
"esquery": "0.3.0",
"esprima": "2.1.0",
"treeify": "1.0.1"
}
}
<!-- contents of this file will be placed inside the <body> -->
<!-- contents of this file will be placed inside the <head> -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment