text: /* parser generated by jison 0.4.15 */
  /*
    Returns a Parser object of the following structure:
  
    Parser: {
      yy: {}
    }
  
    Parser.prototype: {
      yy: {},
      trace: function(),
      symbols_: {associative list: name ==> number},
      terminals_: {associative list: number ==> name},
      productions_: [...],
      performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$),
      table: [...],
      defaultActions: {...},
      parseError: function(str, hash),
      parse: function(input),
  
      lexer: {
          EOF: 1,
          parseError: function(str, hash),
          setInput: function(input),
          input: function(),
          unput: function(str),
          more: function(),
          less: function(n),
          pastInput: function(),
          upcomingInput: function(),
          showPosition: function(),
          test_match: function(regex_match_array, rule_index),
          next: function(),
          lex: function(),
          begin: function(condition),
          popState: function(),
          _currentRules: function(),
          topState: function(),
          pushState: function(condition),
  
          options: {
              ranges: boolean           (optional: true ==> token location info will include a .range[] member)
              flex: boolean             (optional: true ==> flex-like lexing behaviour where the rules are tested exhaustively to find the longest match)
              backtrack_lexer: boolean  (optional: true ==> lexer regexes are tested in order and for each matching regex the action code is invoked; the lexer terminates the scan when a token is returned by the action code)
          },
  
          performAction: function(yy, yy_, $avoiding_name_collisions, YY_START),
          rules: [...],
          conditions: {associative list: name ==> set},
      }
    }
  
  
    token location info (@$, _$, etc.): {
      first_line: n,
      last_line: n,
      first_column: n,
      last_column: n,
      range: [start_number, end_number]       (where the numbers are indexes into the input string, regular zero-based)
    }
  
  
    the parseError function receives a 'hash' object with these members for lexer and parser errors: {
      text:        (matched text)
      token:       (the produced terminal token, if any)
      line:        (yylineno)
    }
    while parser (grammar) errors will also provide these members, i.e. parser errors deliver a superset of attributes: {
      loc:         (yylloc)
      expected:    (string describing the set of expected tokens)
      recoverable: (boolean: TRUE when the parser has a error recovery rule available for this particular error)
    }
  */
  var parser = (function(){
  var o=function(k,v,o,l){for(o=o||{},l=k.length;l--;o[k[l]]=v);return o},$V0=[1,16,24,41,45,46,47,54,80,83,85,87,88],$V1=[1,16,24,41,45,46,47,54,80,83],$V2=[1,6],$V3=[1,7],$V4=[1,8],$V5=[1,24,41,45,46,47,54,80,83],$V6=[1,14],$V7=[1,80,83],$V8=[1,24],$V9=[1,27],$Va=[1,25],$Vb=[1,31],$Vc=[1,32],$Vd=[1,33],$Ve=[2,113],$Vf=[1,36],$Vg=[1,37],$Vh=[2,104],$Vi=[1,40],$Vj=[1,83],$Vk=[1,45],$Vl=[23,29],$Vm=[1,52],$Vn=[1,53],$Vo=[23,29,85,90,91],$Vp=[23,29,41,46,47,54,85,90,91],$Vq=[1,16,24,41,45,46,47,54,80,83,87,88],$Vr=[2,103],$Vs=[1,67],$Vt=[1,11,12,16,20,23,24,29,32,41,45,46,47,48,51,52,53,54,55,56,60,67,68,69,70,71,72,73,74,77,80,83,85,87,88,90,91,92,93],$Vu=[1,72],$Vv=[24,41,45,46,47,54],$Vw=[12,24,85],$Vx=[1,92],$Vy=[2,12],$Vz=[12,24,32,60],$VA=[12,29],$VB=[12,23,29],$VC=[12,32],$VD=[2,58],$VE=[1,109],$VF=[1,110],$VG=[24,32,41,45,46,47,54],$VH=[1,125],$VI=[2,61],$VJ=[11,24,85],$VK=[1,139],$VL=[11,20,24,41,55,67,68,69,70,71,72,73,74,90,92],$VM=[1,24,32,41,45,46,47,54,80,83,87,88],$VN=[1,167],$VO=[1,169],$VP=[1,168],$VQ=[1,172],$VR=[1,173],$VS=[1,157],$VT=[1,158],$VU=[1,159],$VV=[1,160],$VW=[1,161],$VX=[1,162],$VY=[1,163],$VZ=[1,164],$V_=[1,165],$V$=[1,166],$V01=[48,85],$V11=[1,80,83,87,88],$V21=[12,32,56,77],$V31=[1,184],$V41=[1,183],$V51=[11,12,20,23,24,32,41,55,56,67,68,69,70,71,72,73,74,77,90,92,93],$V61=[67,68,69,70,71,72,73,74],$V71=[11,12,20,23,24,32,41,55,56,67,68,69,70,71,72,73,74,77,85,90,92,93],$V81=[1,83,87,88];
  var parser = {trace: function trace() { },
  yy: {},
  symbols_: {"error":2,"stylesheet":3,"charset":4,"space_cdata_list":5,"import_list":6,"ruleset_list":7,"media_list":8,"page_list":9,"CHARSET_SYM":10,"STRING":11,";":12,"import_item":13,"import":14,"cdo_cdc_space_list":15,"IMPORT_SYM":16,"space_or_empty":17,"string_or_uri":18,"media_query_list":19,"URI":20,"medium":21,"medium_list":22,",":23,"IDENT":24,"ruleset_item":25,"ruleset":26,"selector":27,"selector_list":28,"{":29,"declarations":30,"declaration_list":31,"}":32,"rulesets":33,"simple_selector":34,"combinator":35,"at_least_one_space":36,"element_name":37,"simple_selector_atom_list1":38,"simple_selector_atom_list2":39,"simple_selector_atom":40,"HASH":41,"class":42,"attrib":43,"pseudo":44,"*":45,".":46,"[":47,"]":48,"attrib_operator":49,"attrib_value":50,"=":51,"INCLUDES":52,"DASHMATCH":53,":":54,"FUNCTION":55,")":56,"property":57,"expr":58,"prio":59,"VENDOR":60,"term":61,"term_list":62,"operator":63,"numeric_term":64,"unary_operator":65,"string_term":66,"NUMBER":67,"PERCENTAGE":68,"LENGTH":69,"EMS":70,"EXS":71,"ANGLE":72,"TIME":73,"FREQ":74,"hexcolor":75,"function":76,"IMPORTANT_SYM":77,"media_item":78,"media":79,"MEDIA_SYM":80,"page_item":81,"page":82,"PAGE_SYM":83,"pseudo_pages":84,"S":85,"space_cdata":86,"CDO":87,"CDC":88,"cdo_cdc_space_empty":89,"+":90,">":91,"-":92,"/":93,"$accept":0,"$end":1},
  terminals_: {2:"error",10:"CHARSET_SYM",11:"STRING",12:";",16:"IMPORT_SYM",20:"URI",23:",",24:"IDENT",29:"{",32:"}",41:"HASH",45:"*",46:".",47:"[",48:"]",51:"=",52:"INCLUDES",53:"DASHMATCH",54:":",55:"FUNCTION",56:")",60:"VENDOR",67:"NUMBER",68:"PERCENTAGE",69:"LENGTH",70:"EMS",71:"EXS",72:"ANGLE",73:"TIME",74:"FREQ",77:"IMPORTANT_SYM",80:"MEDIA_SYM",83:"PAGE_SYM",85:"S",87:"CDO",88:"CDC",90:"+",91:">",92:"-",93:"/"},
  productions_: [0,[3,6],[4,3],[4,0],[6,1],[6,2],[6,0],[13,2],[14,7],[18,1],[18,1],[19,2],[19,0],[22,3],[22,4],[22,0],[21,2],[7,1],[7,2],[7,0],[25,2],[26,8],[33,1],[33,2],[33,0],[28,3],[28,4],[28,0],[27,2],[27,3],[27,3],[27,4],[34,2],[34,1],[38,1],[38,2],[38,0],[39,1],[39,2],[40,1],[40,1],[40,1],[40,1],[37,1],[37,1],[42,2],[43,5],[43,9],[49,1],[49,1],[49,1],[50,1],[50,1],[44,2],[44,4],[44,6],[30,4],[30,5],[30,0],[31,3],[31,4],[31,0],[57,2],[57,2],[58,2],[62,1],[62,2],[62,2],[62,3],[62,0],[61,1],[61,2],[61,1],[64,2],[64,2],[64,2],[64,2],[64,2],[64,2],[64,2],[64,2],[66,2],[66,2],[66,2],[66,2],[66,2],[59,2],[76,5],[75,2],[8,1],[8,2],[8,0],[78,2],[79,8],[9,1],[9,2],[9,0],[81,2],[82,9],[84,3],[84,0],[36,1],[36,2],[17,1],[17,0],[5,1],[5,2],[5,0],[86,1],[86,1],[86,1],[15,1],[15,2],[15,0],[89,2],[89,2],[35,2],[35,2],[65,1],[65,1],[63,2],[63,2]],
  performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) {
  /* this == yyval */
  
  var $0 = $$.length - 1;
  switch (yystate) {
  case 1:
  
        this.$ = {};
        if($$[$0-5]) this.$['charset']  	= $$[$0-5];
        if($$[$0-3]) this.$['imports']  	= $$[$0-3];
        if($$[$0-2]) this.$['rulesets'] 	= $$[$0-2];
        if($$[$0-1]) this.$['medias'] 	= $$[$0-1];
        if($$[$0]) this.$['pages'] 	= $$[$0];
        return this.$;
      
  break;
  case 2: case 7: case 16: case 20: case 62: case 63: case 75: case 76: case 77: case 78: case 79: case 80: case 81: case 82: case 83: case 84: case 85: case 86: case 88: case 92: case 97: case 99: case 116: case 117: case 120: case 121:
  this.$ = $$[$0-1];
  break;
  case 3: case 36: case 104:
  this.$ = "";
  break;
  case 4: case 13: case 59:
  
        this.$ = [];
        if ($$[$0] !== null) this.$.push($$[$0]);
      
  break;
  case 5:
  
        this.$ = $$[$0-1];
        if ($$[$0] !== null) this.$.push($$[$0]);
      
  break;
  case 6: case 12: case 15: case 19: case 24: case 27: case 58: case 61: case 69: case 91: case 96: case 100: case 105: case 106: case 107: case 108: case 109: case 110: case 111: case 112: case 113: case 114: case 115:
  this.$ = null;
  break;
  case 8:
  
        this.$ = {}
        if ($$[$0-4] !== null) this.$["import"] = $$[$0-4];
        if ($$[$0-2] !== null) this.$["mediaqueries"] = $$[$0-2];
      
  break;
  case 9: case 10: case 17: case 22: case 33: case 34: case 37: case 39: case 40: case 41: case 42: case 43: case 44: case 48: case 49: case 50: case 51: case 52: case 65: case 70: case 72: case 89: case 94: case 103: case 118: case 119:
  this.$ = $$[$0];
  break;
  case 11:
  
        this.$ = [];
        if ($$[$0-1] !== null) this.$.push($$[$0-1]);
        if ($$[$0] !== null) {
          var r = this.$;
          $$[$0].forEach(function(e) {
            r.push(e);
          });
        }
      
  break;
  case 14:
  
        this.$ = [];
        if ($$[$0-3] !== null) this.$ = S1;
        if ($$[$0] !== null) this.$.push($$[$0]);
      
  break;
  case 18: case 90: case 95:
  
        this.$ = $$[$0-1];
        var r = this.$;
        $$[$0] !== null? $$[$0].forEach(function(e) { r.push(e); }) : ''
      
  break;
  case 21:
  
        this.$ = [];
        if ($$[$0-7] !== null) {
          var s = {};
          s.selector = $$[$0-7];
          s.declaration = [];
          $$[$0-3] !== null? s.declaration.push($$[$0-3]) : '';
          $$[$0-2] !== null? $$[$0-2].forEach(function(d) { s.declaration.push(d); }) : ''
          this.$.push(s);
        }
        if ($$[$0-6] !== null) {
          var r = this.$;
          $$[$0-6].forEach(function(e) {
            var s = {};
            s.selector = e;
            s.declaration = [];
            $$[$0-3] !== null? s.declaration.push($$[$0-3]) : '';
            $$[$0-2] !== null? $$[$0-2].forEach(function(d) { s.declaration.push(d); }) : ''
            r.push(s);
          });
        }
      
  break;
  case 23:
  
        this.$ = [];
        this.$ = $$[$0-1];
        var r = this.$;
        $$[$0] !== null? $$[$0].forEach(function(e) { r.push(e); }) : ''
      
  break;
  case 25:
  
        this.$ = [];
        this.$.push($$[$0]);
      
  break;
  case 26: case 60:
  
        this.$ = [];
        this.$ = $$[$0-3];
        if ($$[$0] !== null) this.$.push($$[$0]);
      
  break;
  case 28:
  this.$ = $$[$0-1]			/* modified: the space_or_empty is not defined in the spec */;
  break;
  case 29:
  this.$ = $$[$0-2] + $$[$0-1] + $$[$0];
  break;
  case 30:
  this.$ = $$[$0-2] + ' ' + $$[$0];
  break;
  case 31:
  this.$ = $$[$0-3] + $$[$0-1] + $$[$0]		/* TODO: should i add the space like above production? */;
  break;
  case 32: case 35: case 38: case 45: case 53: case 66: case 71:
  this.$ = $$[$0-1] + $$[$0];
  break;
  case 46:
  this.$ = $$[$0-4] + $$[$0-2] + $$[$0];
  break;
  case 47:
  this.$ = $$[$0-8] + $$[$0-6] + $$[$0-4] + $$[$0-2] + $$[$0];
  break;
  case 54:
  this.$ = $$[$0-3] + $$[$0-2] + $$[$0];
  break;
  case 55:
  this.$ = $$[$0-5] + $$[$0-4] + $$[$0-2] + $$[$0];
  break;
  case 56:
  
        this.$ = {};
        this.$.key = $$[$0-3];
        this.$.value = $$[$0];
      
  break;
  case 57:
  
        this.$ = {};
        this.$.key = $$[$0-4];
        this.$.value = $$[$0-1] + ' ' + $$[$0];				/* TODO: should i need to add a space */
      
  break;
  case 64:
  
        this.$ = $$[$0-1];
        if ($$[$0] !== null) this.$ = $$[$0-1] + ' ' + $$[$0];
      
  break;
  case 67:
  this.$ = $$[$0-1] + ' ' + $$[$0];
  break;
  case 68:
  this.$ = $$[$0-2] + ' ' + $$[$0-1] + $$[$0];
  break;
  case 73: case 74:
  this.$ = $$[$0-1] ;
  break;
  case 87:
  this.$ = $$[$0-4] + $$[$0-2] + $$[$0-1];
  break;
  case 93:
  
        this.$ = {}
        if ($$[$0-5] !== null) this.$["mediaqueries"] = $$[$0-5];
        if ($$[$0-2] !== null) this.$["rulesets"] = $$[$0-2];
      
  break;
  case 98:
  
        this.$ = {};
        var s = this.$;
  
        $$[$0-6] !== null? this.$.pseudo_class = $$[$0-6] : '';
        this.$.declaration = [];
        $$[$0-3] !== null? this.$.declaration.push($$[$0-3]) : '';
        $$[$0-2] !== null? $$[$0-2].forEach(function(d) { s.declaration.push(d); }) : ''
      
  break;
  case 101: case 102:
  this.$ = " ";
  break;
  }
  },
  table: [o($V0,[2,3],{3:1,4:2,10:[1,3]}),{1:[3]},o($V1,[2,107],{5:4,86:5,85:$V2,87:$V3,88:$V4}),{11:[1,9]},o($V5,[2,6],{6:10,86:11,13:12,14:13,16:$V6,85:$V2,87:$V3,88:$V4}),o($V0,[2,105]),o($V0,[2,108]),o($V0,[2,109]),o($V0,[2,110]),{12:[1,15]},o($V7,[2,19],{14:13,7:16,13:17,25:18,26:19,27:20,34:21,37:22,39:23,40:26,42:28,43:29,44:30,16:$V6,24:$V8,41:$V9,45:$Va,46:$Vb,47:$Vc,54:$Vd}),o($V0,[2,106]),o($V1,[2,4]),o($V1,$Ve,{15:34,89:35,87:$Vf,88:$Vg}),o([11,20],$Vh,{17:38,36:39,85:$Vi}),o($V0,[2,2]),o($Vj,[2,91],{26:19,27:20,34:21,37:22,39:23,40:26,42:28,43:29,44:30,8:41,25:42,78:43,79:44,24:$V8,41:$V9,45:$Va,46:$Vb,47:$Vc,54:$Vd,80:$Vk}),o($V1,[2,5]),o($V5,[2,17]),o($V5,$Ve,{89:35,15:46,87:$Vf,88:$Vg}),{23:[1,48],28:47,29:[2,27]},o($Vl,$Vh,{17:49,35:50,36:51,85:$Vi,90:$Vm,91:$Vn}),o($Vo,[2,36],{42:28,43:29,44:30,38:54,40:55,41:$V9,46:$Vb,47:$Vc,54:$Vd}),o($Vo,[2,33],{42:28,43:29,44:30,40:56,41:$V9,46:$Vb,47:$Vc,54:$Vd}),o($Vp,[2,43]),o($Vp,[2,44]),o($Vp,[2,37]),o($Vp,[2,39]),o($Vp,[2,40]),o($Vp,[2,41]),o($Vp,[2,42]),{24:[1,57]},{17:58,24:$Vh,36:39,85:$Vi},{24:[1,59],55:[1,60]},o($V1,[2,7],{89:61,87:$Vf,88:$Vg}),o($Vq,[2,111]),o($Vq,$Vh,{36:39,17:62,85:$Vi}),o($Vq,$Vh,{36:39,17:63,85:$Vi}),{11:[1,65],18:64,20:[1,66]},o([1,11,12,16,20,23,24,29,32,41,45,46,47,48,51,52,53,54,55,56,60,67,68,69,70,71,72,73,74,77,80,83,87,88,90,92,93],$Vr,{85:$Vs}),o($Vt,[2,101]),{1:[2,96],9:68,78:69,79:44,80:$Vk,81:70,82:71,83:$Vu},o($V5,[2,18]),o($V7,[2,89]),o($V7,$Ve,{89:35,15:73,87:$Vf,88:$Vg}),o([24,29],$Vh,{36:39,17:74,85:$Vi}),o($V5,[2,20],{89:61,87:$Vf,88:$Vg}),{23:[1,76],29:[1,75]},o($Vv,$Vh,{36:39,17:77,85:$Vi}),o($Vl,[2,28]),{24:$V8,27:78,34:21,37:22,39:23,40:26,41:$V9,42:28,43:29,44:30,45:$Va,46:$Vb,47:$Vc,54:$Vd},o($Vl,$Vr,{34:21,37:22,39:23,40:26,42:28,43:29,44:30,27:79,35:80,24:$V8,41:$V9,45:$Va,46:$Vb,47:$Vc,54:$Vd,85:$Vs,90:$Vm,91:$Vn}),o($Vv,$Vh,{36:39,17:81,85:$Vi}),o($Vv,$Vh,{36:39,17:82,85:$Vi}),o($Vo,[2,32],{42:28,43:29,44:30,40:83,41:$V9,46:$Vb,47:$Vc,54:$Vd}),o($Vp,[2,34]),o($Vp,[2,38]),o($Vp,[2,45]),{24:[1,84]},o($Vp,[2,53]),o([24,56],$Vh,{36:39,17:85,85:$Vi}),o($Vq,[2,112]),o($Vq,[2,114]),o($Vq,[2,115]),o([12,24],$Vh,{36:39,17:86,85:$Vi}),o($Vw,[2,9]),o($Vw,[2,10]),o($Vt,[2,102]),{1:[2,1],81:87,82:71,83:$Vu},o($V7,[2,90]),o($Vj,[2,94]),o($Vj,$Ve,{89:35,15:88,87:$Vf,88:$Vg}),o([29,54],$Vh,{36:39,17:89,85:$Vi}),o($V7,[2,92],{89:61,87:$Vf,88:$Vg}),{19:90,21:91,24:$Vx,29:$Vy},o($Vz,$Vh,{36:39,17:93,85:$Vi}),o($Vv,$Vh,{36:39,17:94,85:$Vi}),{24:$V8,27:95,34:21,37:22,39:23,40:26,41:$V9,42:28,43:29,44:30,45:$Va,46:$Vb,47:$Vc,54:$Vd},o($Vl,[2,29]),o($Vl,[2,30]),{24:$V8,27:96,34:21,37:22,39:23,40:26,41:$V9,42:28,43:29,44:30,45:$Va,46:$Vb,47:$Vc,54:$Vd},o($Vv,[2,116]),o($Vv,[2,117]),o($Vp,[2,35]),o([48,51,52,53],$Vh,{36:39,17:97,85:$Vi}),{24:[1,99],56:[1,98]},{12:$Vy,19:100,21:91,24:$Vx},o($Vj,[2,95]),o($Vj,[2,97],{89:61,87:$Vf,88:$Vg}),{29:[2,100],54:[1,102],84:101},{29:[1,103]},o($VA,[2,15],{22:104,23:[1,105]}),o($VB,$Vh,{36:39,17:106,85:$Vi}),o($VC,$VD,{30:107,57:108,24:$VE,60:$VF}),{24:$V8,27:111,34:21,37:22,39:23,40:26,41:$V9,42:28,43:29,44:30,45:$Va,46:$Vb,47:$Vc,54:$Vd},o($Vl,[2,25]),o($Vl,[2,31]),{48:[1,112],49:113,51:[1,114],52:[1,115],53:[1,116]},o($Vp,[2,54]),{17:117,36:39,56:$Vh,85:$Vi},{12:[1,118]},{29:[1,119]},{24:[1,120]},o($VG,$Vh,{36:39,17:121,85:$Vi}),o($VA,[2,11],{23:[1,122]}),{17:123,24:$Vh,36:39,85:$Vi},o($VB,[2,16]),{12:$VH,31:124,32:$VI},{54:[1,126]},{17:127,36:39,54:$Vh,85:$Vi},{17:128,36:39,54:$Vh,85:$Vi},o($Vl,[2,26]),o($Vp,[2,46]),o([11,24],$Vh,{36:39,17:129,85:$Vi}),o($VJ,[2,48]),o($VJ,[2,49]),o($VJ,[2,50]),{56:[1,130]},o($Vq,$Vh,{36:39,17:131,85:$Vi}),o($Vz,$Vh,{36:39,17:132,85:$Vi}),{17:133,29:$Vh,36:39,85:$Vi},{24:$V8,26:135,27:20,32:[2,24],33:134,34:21,37:22,39:23,40:26,41:$V9,42:28,43:29,44:30,45:$Va,46:$Vb,47:$Vc,54:$Vd},{17:136,24:$Vh,36:39,85:$Vi},{21:137,24:$Vx},{12:$VK,32:[1,138]},o($Vz,$Vh,{36:39,17:140,85:$Vi}),o($VL,$Vh,{36:39,17:141,85:$Vi}),{54:[2,62]},{54:[2,63]},{11:[1,144],24:[1,143],50:142},o($Vp,[2,55]),o($Vq,[2,8]),o($VC,$VD,{57:108,30:145,24:$VE,60:$VF}),{29:[2,99]},{24:$V8,26:147,27:20,32:[1,146],34:21,37:22,39:23,40:26,41:$V9,42:28,43:29,44:30,45:$Va,46:$Vb,47:$Vc,54:$Vd},o($VG,[2,22]),{21:148,24:$Vx},o($VB,[2,13]),o($VM,$Vh,{36:39,17:149,85:$Vi}),o($Vz,$Vh,{36:39,17:150,85:$Vi}),o($VC,$VD,{57:108,30:151,24:$VE,60:$VF}),{11:$VN,20:$VO,24:$VP,41:$VQ,55:$VR,58:152,61:153,64:154,65:155,66:156,67:$VS,68:$VT,69:$VU,70:$VV,71:$VW,72:$VX,73:$VY,74:$VZ,75:170,76:171,90:$V_,92:$V$},{17:174,36:39,48:$Vh,85:$Vi},o($V01,[2,51]),o($V01,[2,52]),{12:$VH,31:175,32:$VI},o($V11,$Vh,{36:39,17:176,85:$Vi}),o($VG,[2,23]),o($VB,[2,14]),o($VM,[2,21]),o($VC,$VD,{57:108,30:177,24:$VE,60:$VF}),o($VC,[2,59]),o($VC,[2,56],{59:178,77:[1,179]}),o($V21,[2,69],{64:154,65:155,66:156,75:170,76:171,62:180,61:181,63:182,11:$VN,20:$VO,23:$V31,24:$VP,41:$VQ,55:$VR,67:$VS,68:$VT,69:$VU,70:$VV,71:$VW,72:$VX,73:$VY,74:$VZ,90:$V_,92:$V$,93:$V41}),o($V51,[2,70]),{64:185,67:$VS,68:$VT,69:$VU,70:$VV,71:$VW,72:$VX,73:$VY,74:$VZ},o($V51,[2,72]),o($V51,$Vh,{36:39,17:186,85:$Vi}),o($V51,$Vh,{36:39,17:187,85:$Vi}),o($V51,$Vh,{36:39,17:188,85:$Vi}),o($V51,$Vh,{36:39,17:189,85:$Vi}),o($V51,$Vh,{36:39,17:190,85:$Vi}),o($V51,$Vh,{36:39,17:191,85:$Vi}),o($V51,$Vh,{36:39,17:192,85:$Vi}),o($V51,$Vh,{36:39,17:193,85:$Vi}),o($V61,[2,118]),o($V61,[2,119]),o($V51,$Vh,{36:39,17:194,85:$Vi}),o($V51,$Vh,{36:39,17:195,85:$Vi}),o($V51,$Vh,{36:39,17:196,85:$Vi}),o($V51,$Vh,{36:39,17:197,85:$Vi}),o($V51,$Vh,{36:39,17:198,85:$Vi}),o($V51,$Vh,{36:39,17:199,85:$Vi}),o($VL,$Vh,{36:39,17:200,85:$Vi}),{48:[1,201]},{12:$VK,32:[1,202]},o($V11,[2,93]),o($VC,[2,60]),o($VC,[2,57]),o($VC,$Vh,{36:39,17:203,85:$Vi}),o($V21,[2,64],{64:154,65:155,66:156,75:170,76:171,61:204,63:205,11:$VN,20:$VO,23:$V31,24:$VP,41:$VQ,55:$VR,67:$VS,68:$VT,69:$VU,70:$VV,71:$VW,72:$VX,73:$VY,74:$VZ,90:$V_,92:$V$,93:$V41}),o($V51,[2,65]),{11:$VN,20:$VO,24:$VP,41:$VQ,55:$VR,61:206,64:154,65:155,66:156,67:$VS,68:$VT,69:$VU,70:$VV,71:$VW,72:$VX,73:$VY,74:$VZ,75:170,76:171,90:$V_,92:$V$},o($VL,$Vh,{36:39,17:207,85:$Vi}),o($VL,$Vh,{36:39,17:208,85:$Vi}),o($V51,[2,71]),o($V51,[2,73]),o($V51,[2,74]),o($V51,[2,75]),o($V51,[2,76]),o($V51,[2,77]),o($V51,[2,78]),o($V51,[2,79]),o($V51,[2,80]),o($V51,[2,81]),o($V51,[2,82]),o($V51,[2,83]),o($V51,[2,84]),o($V51,[2,85]),o($V71,[2,88]),{11:$VN,20:$VO,24:$VP,41:$VQ,55:$VR,58:209,61:153,64:154,65:155,66:156,67:$VS,68:$VT,69:$VU,70:$VV,71:$VW,72:$VX,73:$VY,74:$VZ,75:170,76:171,90:$V_,92:$V$},o($Vp,[2,47]),o($V81,$Vh,{36:39,17:210,85:$Vi}),o($VC,[2,86]),o($V51,[2,67]),{11:$VN,20:$VO,24:$VP,41:$VQ,55:$VR,61:211,64:154,65:155,66:156,67:$VS,68:$VT,69:$VU,70:$VV,71:$VW,72:$VX,73:$VY,74:$VZ,75:170,76:171,90:$V_,92:$V$},o($V51,[2,66]),o($VL,[2,120]),o($VL,[2,121]),{56:[1,212]},o($V81,[2,98]),o($V51,[2,68]),o($V51,$Vh,{36:39,17:213,85:$Vi}),o($V71,[2,87])],
  defaultActions: {127:[2,62],128:[2,63],133:[2,99]},
  parseError: function parseError(str, hash) {
      if (hash.recoverable) {
          this.trace(str);
      } else {
          throw new Error(str);
      }
  },
  parse: function parse(input) {
      var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = '', yylineno = 0, yyleng = 0, recovering = 0, TERROR = 2, EOF = 1;
      var args = lstack.slice.call(arguments, 1);
      var lexer = Object.create(this.lexer);
      var sharedState = { yy: {} };
      for (var k in this.yy) {
          if (Object.prototype.hasOwnProperty.call(this.yy, k)) {
              sharedState.yy[k] = this.yy[k];
          }
      }
      lexer.setInput(input, sharedState.yy);
      sharedState.yy.lexer = lexer;
      sharedState.yy.parser = this;
      if (typeof lexer.yylloc == 'undefined') {
          lexer.yylloc = {};
      }
      var yyloc = lexer.yylloc;
      lstack.push(yyloc);
      var ranges = lexer.options && lexer.options.ranges;
      if (typeof sharedState.yy.parseError === 'function') {
          this.parseError = sharedState.yy.parseError;
      } else {
          this.parseError = Object.getPrototypeOf(this).parseError;
      }
      function popStack(n) {
          stack.length = stack.length - 2 * n;
          vstack.length = vstack.length - n;
          lstack.length = lstack.length - n;
      }
      _token_stack:
          function lex() {
              var token;
              token = lexer.lex() || EOF;
              if (typeof token !== 'number') {
                  token = self.symbols_[token] || token;
              }
              return token;
          }
      var symbol, preErrorSymbol, state, action, a, r, yyval = {}, p, len, newState, expected;
      while (true) {
          state = stack[stack.length - 1];
          if (this.defaultActions[state]) {
              action = this.defaultActions[state];
          } else {
              if (symbol === null || typeof symbol == 'undefined') {
                  symbol = lex();
              }
              action = table[state] && table[state][symbol];
          }
                      if (typeof action === 'undefined' || !action.length || !action[0]) {
                  var errStr = '';
                  expected = [];
                  for (p in table[state]) {
                      if (this.terminals_[p] && p > TERROR) {
                          expected.push('\'' + this.terminals_[p] + '\'');
                      }
                  }
                  if (lexer.showPosition) {
                      errStr = 'Parse error on line ' + (yylineno + 1) + ':\n' + lexer.showPosition() + '\nExpecting ' + expected.join(', ') + ', got \'' + (this.terminals_[symbol] || symbol) + '\'';
                  } else {
                      errStr = 'Parse error on line ' + (yylineno + 1) + ': Unexpected ' + (symbol == EOF ? 'end of input' : '\'' + (this.terminals_[symbol] || symbol) + '\'');
                  }
                  this.parseError(errStr, {
                      text: lexer.match,
                      token: this.terminals_[symbol] || symbol,
                      line: lexer.yylineno,
                      loc: yyloc,
                      expected: expected
                  });
              }
          if (action[0] instanceof Array && action.length > 1) {
              throw new Error('Parse Error: multiple actions possible at state: ' + state + ', token: ' + symbol);
          }
          switch (action[0]) {
          case 1:
              stack.push(symbol);
              vstack.push(lexer.yytext);
              lstack.push(lexer.yylloc);
              stack.push(action[1]);
              symbol = null;
              if (!preErrorSymbol) {
                  yyleng = lexer.yyleng;
                  yytext = lexer.yytext;
                  yylineno = lexer.yylineno;
                  yyloc = lexer.yylloc;
                  if (recovering > 0) {
                      recovering--;
                  }
              } else {
                  symbol = preErrorSymbol;
                  preErrorSymbol = null;
              }
              break;
          case 2:
              len = this.productions_[action[1]][1];
              yyval.$ = vstack[vstack.length - len];
              yyval._$ = {
                  first_line: lstack[lstack.length - (len || 1)].first_line,
                  last_line: lstack[lstack.length - 1].last_line,
                  first_column: lstack[lstack.length - (len || 1)].first_column,
                  last_column: lstack[lstack.length - 1].last_column
              };
              if (ranges) {
                  yyval._$.range = [
                      lstack[lstack.length - (len || 1)].range[0],
                      lstack[lstack.length - 1].range[1]
                  ];
              }
              r = this.performAction.apply(yyval, [
                  yytext,
                  yyleng,
                  yylineno,
                  sharedState.yy,
                  action[1],
                  vstack,
                  lstack
              ].concat(args));
              if (typeof r !== 'undefined') {
                  return r;
              }
              if (len) {
                  stack = stack.slice(0, -1 * len * 2);
                  vstack = vstack.slice(0, -1 * len);
                  lstack = lstack.slice(0, -1 * len);
              }
              stack.push(this.productions_[action[1]][0]);
              vstack.push(yyval.$);
              lstack.push(yyval._$);
              newState = table[stack[stack.length - 2]][stack[stack.length - 1]];
              stack.push(newState);
              break;
          case 3:
              return true;
          }
      }
      return true;
  }};
  /* generated by jison-lex 0.3.4 */
  var lexer = (function(){
  var lexer = ({
  
  EOF:1,
  
  parseError:function parseError(str, hash) {
          if (this.yy.parser) {
              this.yy.parser.parseError(str, hash);
          } else {
              throw new Error(str);
          }
      },
  
  // resets the lexer, sets new input
  setInput:function (input, yy) {
          this.yy = yy || this.yy || {};
          this._input = input;
          this._more = this._backtrack = this.done = false;
          this.yylineno = this.yyleng = 0;
          this.yytext = this.matched = this.match = '';
          this.conditionStack = ['INITIAL'];
          this.yylloc = {
              first_line: 1,
              first_column: 0,
              last_line: 1,
              last_column: 0
          };
          if (this.options.ranges) {
              this.yylloc.range = [0,0];
          }
          this.offset = 0;
          return this;
      },
  
  // consumes and returns one char from the input
  input:function () {
          var ch = this._input[0];
          this.yytext += ch;
          this.yyleng++;
          this.offset++;
          this.match += ch;
          this.matched += ch;
          var lines = ch.match(/(?:\r\n?|\n).*/g);
          if (lines) {
              this.yylineno++;
              this.yylloc.last_line++;
          } else {
              this.yylloc.last_column++;
          }
          if (this.options.ranges) {
              this.yylloc.range[1]++;
          }
  
          this._input = this._input.slice(1);
          return ch;
      },
  
  // unshifts one char (or a string) into the input
  unput:function (ch) {
          var len = ch.length;
          var lines = ch.split(/(?:\r\n?|\n)/g);
  
          this._input = ch + this._input;
          this.yytext = this.yytext.substr(0, this.yytext.length - len);
          //this.yyleng -= len;
          this.offset -= len;
          var oldLines = this.match.split(/(?:\r\n?|\n)/g);
          this.match = this.match.substr(0, this.match.length - 1);
          this.matched = this.matched.substr(0, this.matched.length - 1);
  
          if (lines.length - 1) {
              this.yylineno -= lines.length - 1;
          }
          var r = this.yylloc.range;
  
          this.yylloc = {
              first_line: this.yylloc.first_line,
              last_line: this.yylineno + 1,
              first_column: this.yylloc.first_column,
              last_column: lines ?
                  (lines.length === oldLines.length ? this.yylloc.first_column : 0)
                   + oldLines[oldLines.length - lines.length].length - lines[0].length :
                this.yylloc.first_column - len
          };
  
          if (this.options.ranges) {
              this.yylloc.range = [r[0], r[0] + this.yyleng - len];
          }
          this.yyleng = this.yytext.length;
          return this;
      },
  
  // When called from action, caches matched text and appends it on next action
  more:function () {
          this._more = true;
          return this;
      },
  
  // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead.
  reject:function () {
          if (this.options.backtrack_lexer) {
              this._backtrack = true;
          } else {
              return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n' + this.showPosition(), {
                  text: "",
                  token: null,
                  line: this.yylineno
              });
  
          }
          return this;
      },
  
  // retain first n characters of the match
  less:function (n) {
          this.unput(this.match.slice(n));
      },
  
  // displays already matched input, i.e. for error messages
  pastInput:function () {
          var past = this.matched.substr(0, this.matched.length - this.match.length);
          return (past.length > 20 ? '...':'') + past.substr(-20).replace(/\n/g, "");
      },
  
  // displays upcoming input, i.e. for error messages
  upcomingInput:function () {
          var next = this.match;
          if (next.length < 20) {
              next += this._input.substr(0, 20-next.length);
          }
          return (next.substr(0,20) + (next.length > 20 ? '...' : '')).replace(/\n/g, "");
      },
  
  // displays the character position where the lexing error occurred, i.e. for error messages
  showPosition:function () {
          var pre = this.pastInput();
          var c = new Array(pre.length + 1).join("-");
          return pre + this.upcomingInput() + "\n" + c + "^";
      },
  
  // test the lexed token: return FALSE when not a match, otherwise return token
  test_match:function (match, indexed_rule) {
          var token,
              lines,
              backup;
  
          if (this.options.backtrack_lexer) {
              // save context
              backup = {
                  yylineno: this.yylineno,
                  yylloc: {
                      first_line: this.yylloc.first_line,
                      last_line: this.last_line,
                      first_column: this.yylloc.first_column,
                      last_column: this.yylloc.last_column
                  },
                  yytext: this.yytext,
                  match: this.match,
                  matches: this.matches,
                  matched: this.matched,
                  yyleng: this.yyleng,
                  offset: this.offset,
                  _more: this._more,
                  _input: this._input,
                  yy: this.yy,
                  conditionStack: this.conditionStack.slice(0),
                  done: this.done
              };
              if (this.options.ranges) {
                  backup.yylloc.range = this.yylloc.range.slice(0);
              }
          }
  
          lines = match[0].match(/(?:\r\n?|\n).*/g);
          if (lines) {
              this.yylineno += lines.length;
          }
          this.yylloc = {
              first_line: this.yylloc.last_line,
              last_line: this.yylineno + 1,
              first_column: this.yylloc.last_column,
              last_column: lines ?
                           lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length :
                           this.yylloc.last_column + match[0].length
          };
          this.yytext += match[0];
          this.match += match[0];
          this.matches = match;
          this.yyleng = this.yytext.length;
          if (this.options.ranges) {
              this.yylloc.range = [this.offset, this.offset += this.yyleng];
          }
          this._more = false;
          this._backtrack = false;
          this._input = this._input.slice(match[0].length);
          this.matched += match[0];
          token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]);
          if (this.done && this._input) {
              this.done = false;
          }
          if (token) {
              return token;
          } else if (this._backtrack) {
              // recover context
              for (var k in backup) {
                  this[k] = backup[k];
              }
              return false; // rule action called reject() implying the next rule should be tested instead.
          }
          return false;
      },
  
  // return next match in input
  next:function () {
          if (this.done) {
              return this.EOF;
          }
          if (!this._input) {
              this.done = true;
          }
  
          var token,
              match,
              tempMatch,
              index;
          if (!this._more) {
              this.yytext = '';
              this.match = '';
          }
          var rules = this._currentRules();
          for (var i = 0; i < rules.length; i++) {
              tempMatch = this._input.match(this.rules[rules[i]]);
              if (tempMatch && (!match || tempMatch[0].length > match[0].length)) {
                  match = tempMatch;
                  index = i;
                  if (this.options.backtrack_lexer) {
                      token = this.test_match(tempMatch, rules[i]);
                      if (token !== false) {
                          return token;
                      } else if (this._backtrack) {
                          match = false;
                          continue; // rule action called reject() implying a rule MISmatch.
                      } else {
                          // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
                          return false;
                      }
                  } else if (!this.options.flex) {
                      break;
                  }
              }
          }
          if (match) {
              token = this.test_match(match, rules[index]);
              if (token !== false) {
                  return token;
              }
              // else: this is a lexer rule which consumes input without producing a token (e.g. whitespace)
              return false;
          }
          if (this._input === "") {
              return this.EOF;
          } else {
              return this.parseError('Lexical error on line ' + (this.yylineno + 1) + '. Unrecognized text.\n' + this.showPosition(), {
                  text: "",
                  token: null,
                  line: this.yylineno
              });
          }
      },
  
  // return next match that has a token
  lex:function lex() {
          var r = this.next();
          if (r) {
              return r;
          } else {
              return this.lex();
          }
      },
  
  // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack)
  begin:function begin(condition) {
          this.conditionStack.push(condition);
      },
  
  // pop the previously active lexer condition state off the condition stack
  popState:function popState() {
          var n = this.conditionStack.length - 1;
          if (n > 0) {
              return this.conditionStack.pop();
          } else {
              return this.conditionStack[0];
          }
      },
  
  // produce the lexer rule set which is active for the currently active lexer condition state
  _currentRules:function _currentRules() {
          if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) {
              return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules;
          } else {
              return this.conditions["INITIAL"].rules;
          }
      },
  
  // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available
  topState:function topState(n) {
          n = this.conditionStack.length - 1 - Math.abs(n || 0);
          if (n >= 0) {
              return this.conditionStack[n];
          } else {
              return "INITIAL";
          }
      },
  
  // alias for begin(condition)
  pushState:function pushState(condition) {
          this.begin(condition);
      },
  
  // return the number of states currently on the stack
  stateStackSize:function stateStackSize() {
          return this.conditionStack.length;
      },
  options: {},
  performAction: function anonymous(yy,yy_,$avoiding_name_collisions,YY_START) {
  var YYSTATE=YY_START;
  switch($avoiding_name_collisions) {
  case 0:return 85;
  break;
  case 1:
  break;
  case 2:
  break;
  case 3:return 87;
  break;
  case 4:return 88;
  break;
  case 5:return 52;
  break;
  case 6:return 53;
  break;
  case 7:return 11;
  break;
  case 8:return 'BAD_STRING';
  break;
  case 9:return 20;
  break;
  case 10:return 20;
  break;
  case 11:return 'BAD_URI';
  break;
  case 12:return 77;
  break;
  case 13:return 16;
  break;
  case 14:return 83;
  break;
  case 15:return 80;
  break;
  case 16:return 10;
  break;
  case 17:return 'UNICODERANGE';
  break;
  case 18:return 55;
  break;
  case 19:return 24;
  break;
  case 20:return 60;
  break;
  case 21:return 'ATKEYWORD';
  break;
  case 22:return 41;
  break;
  case 23:return 70;
  break;
  case 24:return 71;
  break;
  case 25:return 69;
  break;
  case 26:return 69;
  break;
  case 27:return 69;
  break;
  case 28:return 69;
  break;
  case 29:return 69;
  break;
  case 30:return 69;
  break;
  case 31:return 72;
  break;
  case 32:return 72;
  break;
  case 33:return 72;
  break;
  case 34:return 73;
  break;
  case 35:return 73;
  break;
  case 36:return 74;
  break;
  case 37:return 74;
  break;
  case 38:return 'DIMENSION';
  break;
  case 39:return 68;
  break;
  case 40:return 67;
  break;
  case 41:return yy_.yytext; /* 'DELIM'; */
  break;
  }
  },
  rules: [/^(?:([ \t\r\n\f]+))/,/^(?:\/\*[^*]*\*+([^/*][^*]*\*+)*\/)/,/^(?:((\/\*[^*]*\*+([^/*][^*]*\*+)*)|(\/\*[^*]*(\*+[^/*][^*]*)*)))/,/^(?:<!--)/,/^(?:-->)/,/^(?:~=)/,/^(?:\|=)/,/^(?:(("([^\n\r\f\\"]|\\(\n|\r\n|\r|\f)|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*")|('([^\n\r\f\\']|\\(\n|\r\n|\r|\f)|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*')))/,/^(?:(("([^\n\r\f\\"]|\\(\n|\r\n|\r|\f)|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*\\?)|('([^\n\r\f\\']|\\(\n|\r\n|\r|\f)|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*\\?)))/,/^(?:url\((([ \t\r\n\f]+)?)(("([^\n\r\f\\"]|\\(\n|\r\n|\r|\f)|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*")|('([^\n\r\f\\']|\\(\n|\r\n|\r|\f)|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*'))(([ \t\r\n\f]+)?)\))/,/^(?:url\((([ \t\r\n\f]+)?)(([!#$%&*-~]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*)(([ \t\r\n\f]+)?)\))/,/^(?:((url\((([ \t\r\n\f]+)?)([!#$%&*-\[\]-~]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*(([ \t\r\n\f]+)?))|(url\((([ \t\r\n\f]+)?)(("([^\n\r\f\\"]|\\(\n|\r\n|\r|\f)|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*")|('([^\n\r\f\\']|\\(\n|\r\n|\r|\f)|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*'))(([ \t\r\n\f]+)?))|(url\((([ \t\r\n\f]+)?)(("([^\n\r\f\\"]|\\(\n|\r\n|\r|\f)|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*\\?)|('([^\n\r\f\\']|\\(\n|\r\n|\r|\f)|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*\\?)))))/,/^(?:!((([ \t\r\n\f]+)?)|(\/\*[^*]*\*+([^/*][^*]*\*+)*\/))*(I|i|\\0{0,4}(49|69)(\r\n|[ \t\r\n\f])?|\\[i])(M|m|\\0{0,4}(4d|6d)(\r\n|[ \t\r\n\f])?|\\[m])(P|p|\\0{0,4}(50|70)(\r\n|[ \t\r\n\f])?|\\[p])(O|o|\\0{0,4}(4f|6f)(\r\n|[ \t\r\n\f])?|\\[o])(R|r|\\0{0,4}(52|72)(\r\n|[ \t\r\n\f])?|\\[r])(T|t|\\0{0,4}(54|74)(\r\n|[ \t\r\n\f])?|\\[t])(A|a|\\0{0,4}(41|61)(\r\n|[ \t\r\n\f])?)(N|n|\\0{0,4}(4e|6e)(\r\n|[ \t\r\n\f])?|\\[n])(T|t|\\0{0,4}(54|74)(\r\n|[ \t\r\n\f])?|\\[t]))/,/^(?:@(I|i|\\0{0,4}(49|69)(\r\n|[ \t\r\n\f])?|\\[i])(M|m|\\0{0,4}(4d|6d)(\r\n|[ \t\r\n\f])?|\\[m])(P|p|\\0{0,4}(50|70)(\r\n|[ \t\r\n\f])?|\\[p])(O|o|\\0{0,4}(4f|6f)(\r\n|[ \t\r\n\f])?|\\[o])(R|r|\\0{0,4}(52|72)(\r\n|[ \t\r\n\f])?|\\[r])(T|t|\\0{0,4}(54|74)(\r\n|[ \t\r\n\f])?|\\[t]))/,/^(?:@(P|p|\\0{0,4}(50|70)(\r\n|[ \t\r\n\f])?|\\[p])(A|a|\\0{0,4}(41|61)(\r\n|[ \t\r\n\f])?)(G|g|\\0{0,4}(47|67)(\r\n|[ \t\r\n\f])?|\\[g])(E|e|\\0{0,4}(45|65)(\r\n|[ \t\r\n\f])?))/,/^(?:@(M|m|\\0{0,4}(4d|6d)(\r\n|[ \t\r\n\f])?|\\[m])(E|e|\\0{0,4}(45|65)(\r\n|[ \t\r\n\f])?)(D|d|\\0{0,4}(44|64)(\r\n|[ \t\r\n\f])?)(I|i|\\0{0,4}(49|69)(\r\n|[ \t\r\n\f])?|\\[i])(A|a|\\0{0,4}(41|61)(\r\n|[ \t\r\n\f])?))/,/^(?:@charset )/,/^(?:(U|u|\\0{0,4}(55|75)(\r\n|[ \t\r\n\f])?|\\[u])\+([0-9a-fA-F?]{1,6}(-[0-9a-fA-F]{1,6})?))/,/^(?:([\-]?([_a-zA-Z]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))([_a-zA-Z0-9\-]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*)\()/,/^(?:([\-]?([_a-zA-Z]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))([_a-zA-Z0-9\-]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*))/,/^(?:([\-_]([0-9a-fA-F])-([0-9a-fA-F])))/,/^(?:@([\-]?([_a-zA-Z]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))([_a-zA-Z0-9\-]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*))/,/^(?:#(([_a-zA-Z0-9\-]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))+))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(E|e|\\0{0,4}(45|65)(\r\n|[ \t\r\n\f])?)(M|m|\\0{0,4}(4d|6d)(\r\n|[ \t\r\n\f])?|\\[m]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(E|e|\\0{0,4}(45|65)(\r\n|[ \t\r\n\f])?)(X|x|\\0{0,4}(58|78)(\r\n|[ \t\r\n\f])?|\\[x]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(P|p|\\0{0,4}(50|70)(\r\n|[ \t\r\n\f])?|\\[p])(X|x|\\0{0,4}(58|78)(\r\n|[ \t\r\n\f])?|\\[x]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(C|c|\\0{0,4}(43|63)(\r\n|[ \t\r\n\f])?)(M|m|\\0{0,4}(4d|6d)(\r\n|[ \t\r\n\f])?|\\[m]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(M|m|\\0{0,4}(4d|6d)(\r\n|[ \t\r\n\f])?|\\[m])(M|m|\\0{0,4}(4d|6d)(\r\n|[ \t\r\n\f])?|\\[m]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(I|i|\\0{0,4}(49|69)(\r\n|[ \t\r\n\f])?|\\[i])(N|n|\\0{0,4}(4e|6e)(\r\n|[ \t\r\n\f])?|\\[n]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(P|p|\\0{0,4}(50|70)(\r\n|[ \t\r\n\f])?|\\[p])(T|t|\\0{0,4}(54|74)(\r\n|[ \t\r\n\f])?|\\[t]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(P|p|\\0{0,4}(50|70)(\r\n|[ \t\r\n\f])?|\\[p])(C|c|\\0{0,4}(43|63)(\r\n|[ \t\r\n\f])?))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(D|d|\\0{0,4}(44|64)(\r\n|[ \t\r\n\f])?)(E|e|\\0{0,4}(45|65)(\r\n|[ \t\r\n\f])?)(G|g|\\0{0,4}(47|67)(\r\n|[ \t\r\n\f])?|\\[g]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(R|r|\\0{0,4}(52|72)(\r\n|[ \t\r\n\f])?|\\[r])(A|a|\\0{0,4}(41|61)(\r\n|[ \t\r\n\f])?)(D|d|\\0{0,4}(44|64)(\r\n|[ \t\r\n\f])?))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(G|g|\\0{0,4}(47|67)(\r\n|[ \t\r\n\f])?|\\[g])(R|r|\\0{0,4}(52|72)(\r\n|[ \t\r\n\f])?|\\[r])(A|a|\\0{0,4}(41|61)(\r\n|[ \t\r\n\f])?)(D|d|\\0{0,4}(44|64)(\r\n|[ \t\r\n\f])?))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(M|m|\\0{0,4}(4d|6d)(\r\n|[ \t\r\n\f])?|\\[m])(S|s|\\0{0,4}(53|73)(\r\n|[ \t\r\n\f])?|\\[s]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(S|s|\\0{0,4}(53|73)(\r\n|[ \t\r\n\f])?|\\[s]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(H|h|\\0{0,4}(48|68)(\r\n|[ \t\r\n\f])?|\\[h])(Z|z|\\0{0,4}(5a|7a)(\r\n|[ \t\r\n\f])?|\\[z]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)(K|k|\\0{0,4}(4b|6b)(\r\n|[ \t\r\n\f])?|\\[k])(H|h|\\0{0,4}(48|68)(\r\n|[ \t\r\n\f])?|\\[h])(Z|z|\\0{0,4}(5a|7a)(\r\n|[ \t\r\n\f])?|\\[z]))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)([\-]?([_a-zA-Z]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))([_a-zA-Z0-9\-]|([\240-\377])|((\\([0-9a-fA-F]){1,6}(\r\n|[ \t\r\n\f])?)|\\[^\r\n\f0-9a-fA-F]))*))/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+)%)/,/^(?:([0-9]+(\.[0-9]+)?|\.[0-9]+))/,/^(?:.)/],
  conditions: {"INITIAL":{"rules":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41],"inclusive":true}}
  });
  return lexer;
  })();
  parser.lexer = lexer;
  function Parser () {
    this.yy = {};
  }
  Parser.prototype = parser;parser.Parser = Parser;
  return new Parser;
  })();
  
  
  if (typeof require !== 'undefined' && typeof exports !== 'undefined') {
  exports.parser = parser;
  exports.Parser = parser.Parser;
  exports.parse = function () { return parser.parse.apply(parser, arguments); };
  exports.main = function commonjsMain(args) {
      if (!args[1]) {
          console.log('Usage: '+args[0]+' FILE');
          process.exit(1);
      }
      var source = require('fs').readFileSync(require('path').normalize(args[1]), "utf8");
      return exports.parser.parse(source);
  };
  if (typeof module !== 'undefined' && require.main === module) {
    exports.main(process.argv.slice(1));
  }
  }