diff --git a/build/zkasm_parser.js b/build/zkasm_parser.js index 004798e..9015e97 100644 --- a/build/zkasm_parser.js +++ b/build/zkasm_parser.js @@ -77,7 +77,7 @@ var parser = {trace: function trace () { }, yy: {}, symbols_: {"error":2,"allStatments":3,"statmentList":4,"EOF":5,"statment":6,"step":7,"label":8,"varDef":9,"constDef":10,"include":11,"command":12,"LF":13,"assignment":14,":":15,"opList":16,"IDENTIFIER":17,"VAR":18,"scope":19,"[":20,"NUMBER":21,"]":22,"CONSTID":23,"CONST":24,"=":25,"nexpr":26,"CONSTL":27,"COMMAND":28,"GLOBAL":29,"CTX":30,"INCLUDE":31,"STRING":32,"NUMBERL":33,"??":34,"+":35,"-":36,"*":37,"**":38,"%":39,"/":40,"<<":41,">>":42,"|":43,"&":44,"^":45,"<":46,">":47,"<=":48,">=":49,"==":50,"!=":51,"&&":52,"||":53,"!":54,"?":55,"(":56,")":57,"inRegsSum":58,"=>":59,"regsList":60,"inRegP":61,"inReg":62,"TAG":63,"TAG_0":64,"reg":65,"counter":66,"REFERENCE":67,",":68,"op":69,"MLOAD":70,"addr":71,"MSTORE":72,"HASHK":73,"hashId":74,"HASHK1":75,"HASHKLEN":76,"HASHKDIGEST":77,"HASHS":78,"HASHS1":79,"HASHSLEN":80,"HASHSDIGEST":81,"HASHP":82,"HASHP1":83,"HASHPLEN":84,"HASHPDIGEST":85,"JMP":86,"jmpCond":87,"jmpNotCond":88,"RR":89,"E":90,"CALL":91,"RETURN":92,"ASSERT":93,"SLOAD":94,"SSTORE":95,"ARITH":96,"ARITH_ECADD_DIFFERENT":97,"ARITH_ECADD_SAME":98,"ARITH_BN254_MULFP2":99,"ARITH_BN254_ADDFP2":100,"ARITH_BN254_SUBFP2":101,"ADD":102,"SUB":103,"LT":104,"SLT":105,"EQ":106,"AND":107,"OR":108,"XOR":109,"LT4":110,"MEM_ALIGN_RD":111,"MEM_ALIGN_WR":112,"MEM_ALIGN_WR8":113,"REPEAT":114,"RCX":115,"JMPN":116,"JMPC":117,"JMPZ":118,"JMPNC":119,"JMPNZ":120,"CNT_ARITH":121,"CNT_BINARY":122,"CNT_KECCAK_F":123,"CNT_SHA256_F":124,"CNT_MEM_ALIGN":125,"CNT_PADDING_PG":126,"CNT_POSEIDON_G":127,"A":128,"B":129,"C":130,"D":131,"SR":132,"SP":133,"PC":134,"GAS":135,"zkPC":136,"STEP":137,"HASHPOS":138,"ROTL_C":139,"++":140,"--":141,"SYS":142,"MEM":143,"STACK":144,"$accept":0,"$end":1}, terminals_: {2:"error",5:"EOF",13:"LF",15:":",17:"IDENTIFIER",18:"VAR",20:"[",21:"NUMBER",22:"]",23:"CONSTID",24:"CONST",25:"=",27:"CONSTL",28:"COMMAND",29:"GLOBAL",30:"CTX",31:"INCLUDE",32:"STRING",33:"NUMBERL",34:"??",35:"+",36:"-",37:"*",38:"**",39:"%",40:"/",41:"<<",42:">>",43:"|",44:"&",45:"^",46:"<",47:">",48:"<=",49:">=",50:"==",51:"!=",52:"&&",53:"||",54:"!",55:"?",56:"(",57:")",59:"=>",63:"TAG",64:"TAG_0",67:"REFERENCE",68:",",70:"MLOAD",72:"MSTORE",73:"HASHK",75:"HASHK1",76:"HASHKLEN",77:"HASHKDIGEST",78:"HASHS",79:"HASHS1",80:"HASHSLEN",81:"HASHSDIGEST",82:"HASHP",83:"HASHP1",84:"HASHPLEN",85:"HASHPDIGEST",86:"JMP",89:"RR",90:"E",91:"CALL",92:"RETURN",93:"ASSERT",94:"SLOAD",95:"SSTORE",96:"ARITH",97:"ARITH_ECADD_DIFFERENT",98:"ARITH_ECADD_SAME",99:"ARITH_BN254_MULFP2",100:"ARITH_BN254_ADDFP2",101:"ARITH_BN254_SUBFP2",102:"ADD",103:"SUB",104:"LT",105:"SLT",106:"EQ",107:"AND",108:"OR",109:"XOR",110:"LT4",111:"MEM_ALIGN_RD",112:"MEM_ALIGN_WR",113:"MEM_ALIGN_WR8",114:"REPEAT",115:"RCX",116:"JMPN",117:"JMPC",118:"JMPZ",119:"JMPNC",120:"JMPNZ",121:"CNT_ARITH",122:"CNT_BINARY",123:"CNT_KECCAK_F",124:"CNT_SHA256_F",125:"CNT_MEM_ALIGN",126:"CNT_PADDING_PG",127:"CNT_POSEIDON_G",128:"A",129:"B",130:"C",131:"D",132:"SR",133:"SP",134:"PC",135:"GAS",136:"zkPC",137:"STEP",138:"HASHPOS",139:"ROTL_C",140:"++",141:"--",142:"SYS",143:"MEM",144:"STACK"}, -productions_: [0,[3,2],[4,2],[4,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[7,4],[7,2],[7,3],[8,2],[9,3],[9,6],[9,6],[10,4],[10,4],[12,1],[19,1],[19,1],[11,2],[26,1],[26,1],[26,1],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,2],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,2],[26,5],[26,3],[14,3],[14,1],[58,3],[58,3],[58,2],[58,1],[61,3],[61,1],[62,1],[62,1],[62,1],[62,1],[62,3],[62,3],[62,1],[62,1],[62,1],[62,1],[60,3],[60,1],[16,3],[16,1],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,6],[69,4],[69,6],[69,4],[69,4],[69,6],[69,6],[69,4],[69,4],[69,6],[69,6],[69,6],[69,6],[69,8],[69,8],[69,4],[69,6],[69,6],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,4],[87,1],[87,1],[87,1],[88,1],[88,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[71,1],[71,3],[71,3],[71,2],[71,2],[71,5],[71,5],[71,3],[71,5],[71,5],[71,3],[71,5],[71,5],[71,3],[71,1],[71,3],[71,3],[71,4],[71,6],[71,6],[71,3],[71,4],[74,1],[74,1],[74,1],[74,3],[74,3]], +productions_: [0,[3,2],[4,2],[4,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[6,1],[7,4],[7,2],[7,3],[8,2],[9,3],[9,6],[9,6],[10,4],[10,4],[12,1],[19,1],[19,1],[11,2],[26,1],[26,1],[26,1],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,2],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,3],[26,2],[26,5],[26,3],[14,3],[14,1],[58,3],[58,3],[58,2],[58,1],[61,3],[61,1],[62,1],[62,1],[62,1],[62,1],[62,3],[62,3],[62,1],[62,1],[62,1],[62,1],[60,3],[60,1],[16,3],[16,1],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,4],[69,6],[69,4],[69,6],[69,4],[69,4],[69,6],[69,6],[69,4],[69,4],[69,6],[69,6],[69,6],[69,6],[69,8],[69,8],[69,4],[69,6],[69,6],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,1],[69,4],[87,1],[87,1],[87,1],[88,1],[88,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[66,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[65,1],[71,1],[71,3],[71,3],[71,2],[71,2],[71,5],[71,5],[71,3],[71,5],[71,5],[71,3],[71,5],[71,5],[71,3],[71,5],[71,5],[71,3],[71,5],[71,5],[71,3],[71,5],[71,5],[71,3],[71,1],[71,3],[71,3],[71,4],[71,6],[71,6],[71,3],[71,4],[74,1],[74,1],[74,1],[74,3],[74,3]], performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate /* action[1] */, $$ /* vstack */, _$ /* lstack */) { /* this == yyval */ @@ -520,7 +520,7 @@ case 112: break; case 113: - this.$ = { arithEq0: 0, arithEq1: 0, arithEq2: 0, arithEq3: 0, arithEq4: 0, arithEq5: 0 } + this.$ = { arithEq0: 0, arithEq1: 0, arithEq2: 1, arithEq3: 0, arithEq4: 0, arithEq5: 0 } break; case 114: @@ -672,103 +672,148 @@ case 165: break; case 166: - this.$ = { isStack: 0, isMem: 1, ind:1, indRR: 0, incStack: 0, offset: $$[$0], useCTX: 1} + this.$ = { isStack: 0, isMem:0, ind:0, indRR: 1, incStack: 0, offset: $$[$0]} break; case 167: - this.$ = { isStack: 0, isMem: 1, ind:1, indRR: 0, incStack: 0, offset: -$$[$0], useCTX: 1} + this.$ = { isStack: 0, isMem:0, ind:0, indRR: 1, incStack: 0, offset: -$$[$0]} break; case 168: - this.$ = { isStack: 0, isMem: 1, ind:1, indRR: 0, incStack: 0, offset: 0, useCTX: 1} + this.$ = { isStack: 0, isMem:0, ind:0, indRR: 1, incStack: 0, offset: 0} break; case 169: - this.$ = { isStack: 1, ind:1, indRR: 0, incStack: 0, offset: $$[$0], useCTX: 1} + this.$ = { isStack: 0, isMem: 1, ind:1, indRR: 0, incStack: 0, offset: $$[$0], useCTX: 1} break; case 170: - this.$ = { isStack: 1, ind:1, indRR: 0, incStack: 0, offset: -$$[$0], useCTX: 1} + this.$ = { isStack: 0, isMem: 1, ind:1, indRR: 0, incStack: 0, offset: -$$[$0], useCTX: 1} break; case 171: - this.$ = { isStack: 1, ind:1, indRR: 0, incStack: 0, offset: 0, useCTX: 1} + this.$ = { isStack: 0, isMem: 1, ind:1, indRR: 0, incStack: 0, offset: 0, useCTX: 1} break; case 172: - this.$ = { offset: $$[$0] } + this.$ = { isStack: 0, isMem: 1, ind:0, indRR: 1, incStack: 0, offset: $$[$0], useCTX: 1} break; case 173: - this.$ = { offset: $$[$0-2], ind: 0, indRR: 1 } + this.$ = { isStack: 0, isMem: 1, ind:0, indRR: 1, incStack: 0, offset: -$$[$0], useCTX: 1} break; case 174: - this.$ = { offset: $$[$0-2], ind: 1, indRR: 0 } + this.$ = { isStack: 0, isMem: 1, ind:0, indRR: 1, incStack: 0, offset: 0, useCTX: 1} break; case 175: - this.$ = { offset: $$[$0-3], ind: 1, indRR: 0 } + this.$ = { isStack: 1, ind:1, indRR: 0, incStack: 0, offset: $$[$0], useCTX: 1} break; case 176: - this.$ = { offset: $$[$0-5], extraOffset: -$$[$0-1], ind: 1, indRR: 0 } + this.$ = { isStack: 1, ind:1, indRR: 0, incStack: 0, offset: -$$[$0], useCTX: 1} break; case 177: - this.$ = { offset: $$[$0-5], extraOffset: $$[$0-1], ind: 1, indRR: 0 } + this.$ = { isStack: 1, ind:1, indRR: 0, incStack: 0, offset: 0, useCTX: 1} break; case 178: - this.$ = { offset: $$[$0-2], extraOffset: $$[$0] } + this.$ = { isStack: 1, ind:0, indRR: 1, incStack: 0, offset: $$[$0], useCTX: 1} break; case 179: - this.$ = { offset: $$[$0-3], extraOffset: $$[$0-1] } + this.$ = { isStack: 1, ind:0, indRR: 1, incStack: 0, offset: -$$[$0], useCTX: 1} break; case 180: - this.$ = {ind: 0, indRR: 0, offset:$$[$0]} + this.$ = { isStack: 1, ind:0, indRR: 1, incStack: 0, offset: 0, useCTX: 1} break; case 181: - this.$ = {ind: 1, indRR: 0, offset:0} + this.$ = { offset: $$[$0] } break; case 182: - this.$ = {ind: 0, indRR: 1, offset:0} + this.$ = { offset: $$[$0-2], ind: 0, indRR: 1 } break; case 183: - this.$ = {ind: 1, indRR: 0, offset:$$[$0]} + this.$ = { offset: $$[$0-2], ind: 1, indRR: 0 } break; case 184: + this.$ = { offset: $$[$0-3], ind: 1, indRR: 0 } + +break; +case 185: + + this.$ = { offset: $$[$0-5], extraOffset: -$$[$0-1], ind: 1, indRR: 0 } + +break; +case 186: + + this.$ = { offset: $$[$0-5], extraOffset: $$[$0-1], ind: 1, indRR: 0 } + +break; +case 187: + + this.$ = { offset: $$[$0-2], extraOffset: $$[$0] } + +break; +case 188: + + this.$ = { offset: $$[$0-3], extraOffset: $$[$0-1] } + +break; +case 189: + + this.$ = {ind: 0, indRR: 0, offset:$$[$0]} + +break; +case 190: + + this.$ = {ind: 1, indRR: 0, offset:0} + +break; +case 191: + + this.$ = {ind: 0, indRR: 1, offset:0} + +break; +case 192: + + this.$ = {ind: 1, indRR: 0, offset:$$[$0]} + +break; +case 193: + this.$ = {ind: 0, indRR: 1, offset:$$[$0]} break; } }, -table: [{3:1,4:2,6:3,7:4,8:5,9:6,10:7,11:8,12:9,13:$V0,14:11,15:$V1,17:$V2,18:$V3,21:$V4,23:$V5,24:$V6,27:$V7,28:$V8,30:$V9,31:$Va,33:$Vb,36:$Vc,58:19,61:21,62:22,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},{1:[3]},{5:[1,54],6:55,7:4,8:5,9:6,10:7,11:8,12:9,13:$V0,14:11,15:$V1,17:$V2,18:$V3,21:$V4,23:$V5,24:$V6,27:$V7,28:$V8,30:$V9,31:$Va,33:$Vb,36:$Vc,58:19,61:21,62:22,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},o($VC,[2,3]),o($VC,[2,4]),o($VC,[2,5]),o($VC,[2,6]),o($VC,[2,7]),o($VC,[2,8]),o($VC,[2,9]),o($VC,[2,10]),{13:[1,57],15:[1,56]},{16:58,69:59,70:$VD,72:$VE,73:$VF,75:$VG,76:$VH,77:$VI,78:$VJ,79:$VK,80:$VL,81:$VM,82:$VN,83:$VO,84:$VP,85:$VQ,86:$VR,87:75,88:76,91:$VS,92:$VT,93:$VU,94:$VV,95:$VW,96:$VX,97:$VY,98:$VZ,99:$V_,100:$V$,101:$V01,102:$V11,103:$V21,104:$V31,105:$V41,106:$V51,107:$V61,108:$V71,109:$V81,110:$V91,111:$Va1,112:$Vb1,113:$Vc1,114:$Vd1,116:$Ve1,117:$Vf1,118:$Vg1,119:$Vh1,120:$Vi1},{15:[1,106]},{19:107,29:[1,108],30:[1,109]},{23:[1,110]},{23:[1,111]},{32:[1,112]},o($VC,[2,20]),o($Vj1,[2,52],{35:[1,114],36:[1,115],59:[1,113]}),{21:$V4,23:$V5,30:$V9,33:$Vb,61:116,62:22,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},o($Vk1,[2,56],{37:$Vl1}),o($Vm1,[2,58]),o($Vm1,[2,59]),o($Vm1,[2,60]),o($Vm1,[2,61]),o($Vm1,[2,62]),o($Vm1,[2,65],{38:[1,118]}),o($Vm1,[2,66],{38:[1,119]}),o($Vm1,[2,67]),o($Vm1,[2,68]),o($Vn1,[2,142]),o($Vn1,[2,143]),o($Vn1,[2,144]),o($Vn1,[2,145]),o($Vn1,[2,146]),o($Vn1,[2,147]),o($Vn1,[2,148]),o($Vn1,[2,149]),o($Vn1,[2,150]),o($Vn1,[2,151]),o($Vn1,[2,152]),o($Vn1,[2,153]),o($Vn1,[2,154]),o($Vn1,[2,155]),o($Vn1,[2,156]),o($Vn1,[2,157]),o($Vm1,[2,135]),o($Vm1,[2,136]),o($Vm1,[2,137]),o($Vm1,[2,138]),o($Vm1,[2,139]),o($Vm1,[2,140]),o($Vm1,[2,141]),{1:[2,1]},o($VC,[2,2]),{16:120,69:59,70:$VD,72:$VE,73:$VF,75:$VG,76:$VH,77:$VI,78:$VJ,79:$VK,80:$VL,81:$VM,82:$VN,83:$VO,84:$VP,85:$VQ,86:$VR,87:75,88:76,91:$VS,92:$VT,93:$VU,94:$VV,95:$VW,96:$VX,97:$VY,98:$VZ,99:$V_,100:$V$,101:$V01,102:$V11,103:$V21,104:$V31,105:$V41,106:$V51,107:$V61,108:$V71,109:$V81,110:$V91,111:$Va1,112:$Vb1,113:$Vc1,114:$Vd1,116:$Ve1,117:$Vf1,118:$Vg1,119:$Vh1,120:$Vi1},o($VC,[2,12]),{13:[1,121],68:$Vo1},o($Vp1,[2,72]),{56:[1,123]},{56:[1,124]},{56:[1,125]},{56:[1,126]},{56:[1,127]},{56:[1,128]},{56:[1,129]},{56:[1,130]},{56:[1,131]},{56:[1,132]},{56:[1,133]},{56:[1,134]},{56:[1,135]},{56:[1,136]},{56:[1,137]},{56:[1,138]},{56:[1,139]},{56:[1,140]},o($Vp1,[2,107]),o($Vp1,[2,108]),o($Vp1,[2,109]),o($Vp1,[2,110]),o($Vp1,[2,111]),o($Vp1,[2,112]),o($Vp1,[2,113]),o($Vp1,[2,114]),o($Vp1,[2,115]),o($Vp1,[2,116]),o($Vp1,[2,117]),o($Vp1,[2,118]),o($Vp1,[2,119]),o($Vp1,[2,120]),o($Vp1,[2,121]),o($Vp1,[2,122]),o($Vp1,[2,123]),o($Vp1,[2,124]),o($Vp1,[2,125]),o($Vp1,[2,126]),o($Vp1,[2,127]),o($Vp1,[2,128]),{56:[1,141]},{56:[2,130]},{56:[2,131]},{56:[2,132]},{56:[2,133]},{56:[2,134]},o($VC,[2,14]),{17:[1,142]},{17:[2,21]},{17:[2,22]},{25:[1,143]},{25:[1,144]},o($VC,[2,23]),{30:$V9,60:145,65:146,89:$Vg,90:$Vh,115:$Vi,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},{21:$V4,23:$V5,30:$V9,33:$Vb,61:147,62:22,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},{21:$V4,23:$V5,30:$V9,33:$Vb,61:148,62:22,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},o($Vk1,[2,55],{37:$Vl1}),{21:$V4,23:$V5,30:$V9,33:$Vb,62:149,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},{21:[1,150]},{33:[1,151]},{13:[1,152],68:$Vo1},o($VC,[2,13]),{69:153,70:$VD,72:$VE,73:$VF,75:$VG,76:$VH,77:$VI,78:$VJ,79:$VK,80:$VL,81:$VM,82:$VN,83:$VO,84:$VP,85:$VQ,86:$VR,87:75,88:76,91:$VS,92:$VT,93:$VU,94:$VV,95:$VW,96:$VX,97:$VY,98:$VZ,99:$V_,100:$V$,101:$V01,102:$V11,103:$V21,104:$V31,105:$V41,106:$V51,107:$V61,108:$V71,109:$V81,110:$V91,111:$Va1,112:$Vb1,113:$Vc1,114:$Vd1,116:$Ve1,117:$Vf1,118:$Vg1,119:$Vh1,120:$Vi1},{17:$Vq1,71:154,133:$Vr1,142:$Vs1,143:$Vt1,144:$Vu1},{17:$Vq1,71:160,133:$Vr1,142:$Vs1,143:$Vt1,144:$Vu1},{21:$Vv1,74:161,89:$Vw1,90:$Vx1},{21:$Vv1,74:165,89:$Vw1,90:$Vx1},{21:$Vv1,74:166,89:$Vw1,90:$Vx1},{21:$Vv1,74:167,89:$Vw1,90:$Vx1},{21:$Vv1,74:168,89:$Vw1,90:$Vx1},{21:$Vv1,74:169,89:$Vw1,90:$Vx1},{21:$Vv1,74:170,89:$Vw1,90:$Vx1},{21:$Vv1,74:171,89:$Vw1,90:$Vx1},{21:$Vv1,74:172,89:$Vw1,90:$Vx1},{21:$Vv1,74:173,89:$Vw1,90:$Vx1},{21:$Vv1,74:174,89:$Vw1,90:$Vx1},{21:$Vv1,74:175,89:$Vw1,90:$Vx1},{17:[1,176],67:[1,179],89:[1,177],90:[1,178]},{17:[1,180],67:[1,183],89:[1,181],90:[1,182]},{17:[1,184]},{17:[1,185],67:[1,186]},{115:[1,187]},o($VC,[2,15],{20:[1,188]}),{21:$Vy1,23:$Vz1,26:189,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:196,33:$VA1,36:$VB1,54:$VC1,56:$VD1},o($Vj1,[2,51],{68:[1,197]}),o($VE1,[2,70]),o($Vk1,[2,53],{37:$Vl1}),o($Vk1,[2,54],{37:$Vl1}),o($Vm1,[2,57]),o($Vm1,[2,63]),o($Vm1,[2,64]),o($VC,[2,11]),o($Vp1,[2,71]),{57:[1,198]},{35:[1,199],36:[1,200],57:[2,158],140:[1,201],141:[1,202]},{15:[1,203]},{15:[1,204]},{15:[1,205]},{20:[1,207],35:[1,206],57:[2,172]},{57:[1,208]},{57:[1,209]},{57:[2,180]},{35:[1,210],57:[2,181]},{35:[1,211],57:[2,182]},{57:[1,212]},{57:[1,213]},{57:[1,214]},{57:[1,215]},{57:[1,216]},{57:[1,217]},{57:[1,218]},{57:[1,219]},{57:[1,220]},{57:[1,221]},{57:[1,222]},{57:[1,223]},{57:[1,224]},{57:[1,225]},{35:[1,226]},{57:[1,227],68:[1,228]},{57:[1,229],68:[1,230]},{57:[1,231],68:[1,232]},{35:[1,233]},{57:[1,234],68:[1,235]},{57:[1,236]},{35:[1,237]},{57:[1,238]},{21:[1,239],23:[1,240]},o($VF1,[2,18],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1,55:$VZ1}),o($V_1,[2,24]),o($V_1,[2,25]),o($V_1,[2,26],{34:[1,261]}),{21:$Vy1,23:$Vz1,26:262,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:263,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:264,33:$VA1,36:$VB1,54:$VC1,56:$VD1},o($VF1,[2,19],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1,55:$VZ1}),{30:$V9,65:265,89:$Vg,90:$Vh,115:$Vi,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},o($Vp1,[2,73]),{21:[1,266]},{21:[1,267]},{57:[2,161]},{57:[2,162]},{90:[1,268]},{90:[1,269]},{90:[1,270]},{21:[1,273],89:[1,271],90:[1,272]},{21:[1,275],90:[1,274]},o($Vp1,[2,74]),o($Vp1,[2,75]),{21:[1,276]},{21:[1,277]},o($Vp1,[2,76]),o($Vp1,[2,77]),o($Vp1,[2,78]),o($Vp1,[2,79]),o($Vp1,[2,80]),o($Vp1,[2,81]),o($Vp1,[2,82]),o($Vp1,[2,83]),o($Vp1,[2,84]),o($Vp1,[2,85]),o($Vp1,[2,86]),o($Vp1,[2,87]),o($Vp1,[2,92]),o($Vp1,[2,93]),{89:[1,278],90:[1,279]},o($Vp1,[2,88]),{17:[1,280]},o($Vp1,[2,96]),{17:[1,281]},o($Vp1,[2,97]),{17:[1,282]},{89:[1,283],90:[1,284]},o($Vp1,[2,90]),{17:[1,285]},o($Vp1,[2,104]),{89:[1,286],90:[1,287]},o($Vp1,[2,129]),{22:[1,288]},{22:[1,289]},{21:$Vy1,23:$Vz1,26:290,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:291,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:292,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:293,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:294,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:295,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:296,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:297,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:298,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:299,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:300,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:301,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:302,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:303,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:304,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:305,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:306,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:307,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:308,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:309,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:310,33:$VA1,36:$VB1,54:$VC1,56:$VD1},o($V$1,[2,34],{37:$VI1,38:$VJ1,39:$VK1,40:$VL1}),o($V_1,[2,48]),{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1,55:$VZ1,57:[1,311]},o($VE1,[2,69]),{57:[2,159]},{57:[2,160]},{35:[1,312],36:[1,313],57:[2,165]},{35:[1,314],36:[1,315],57:[2,168]},{35:[1,316],36:[1,317],57:[2,171]},{57:[2,173]},{57:[2,174]},{57:[2,178]},{22:[1,318],35:[1,320],36:[1,319]},{22:[1,321]},{57:[2,183]},{57:[2,184]},{57:[1,322]},{57:[1,323]},{57:[1,324]},{57:[1,325]},{57:[1,326]},{57:[1,327],68:[1,328]},{57:[1,329],68:[1,330]},{57:[1,331]},{57:[1,332]},{57:[1,333]},o($VC,[2,16]),o($VC,[2,17]),o($V$1,[2,28],{37:$VI1,38:$VJ1,39:$VK1,40:$VL1}),o($V$1,[2,29],{37:$VI1,38:$VJ1,39:$VK1,40:$VL1}),o($V_1,[2,30]),o($V_1,[2,31]),o($V_1,[2,32]),o($V_1,[2,33]),o($V02,[2,35],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1}),o($V02,[2,36],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1}),o([5,13,15,17,18,21,23,24,27,28,30,31,33,43,52,53,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,37],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1}),o([5,13,15,17,18,21,23,24,27,28,30,31,33,43,44,45,52,53,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,38],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1}),o([5,13,15,17,18,21,23,24,27,28,30,31,33,43,45,52,53,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,39],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,44:$VP1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1}),o($V12,[2,40],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1}),o($V12,[2,41],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1}),o($V12,[2,42],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1}),o($V12,[2,43],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1}),o($V22,[2,44],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,46:$VR1,47:$VS1,48:$VT1,49:$VU1}),o($V22,[2,45],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,46:$VR1,47:$VS1,48:$VT1,49:$VU1}),o([5,13,15,17,18,21,23,24,27,28,30,31,33,52,53,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,46],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1}),o([5,13,15,17,18,21,23,24,27,28,30,31,33,53,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,47],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1}),{15:[1,334],35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1,55:$VZ1},o([5,13,15,17,18,21,23,24,27,28,30,31,33,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,27],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1}),o($V_1,[2,50]),{21:[1,335]},{21:[1,336]},{21:[1,337]},{21:[1,338]},{21:[1,339]},{21:[1,340]},{57:[2,175]},{21:[1,341]},{21:[1,342]},{57:[2,179]},o($Vp1,[2,94]),o($Vp1,[2,95]),o($Vp1,[2,89]),o($Vp1,[2,100]),o($Vp1,[2,101]),o($Vp1,[2,98]),{17:[1,343]},o($Vp1,[2,99]),{17:[1,344]},o($Vp1,[2,91]),o($Vp1,[2,105]),o($Vp1,[2,106]),{21:$Vy1,23:$Vz1,26:345,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{57:[2,163]},{57:[2,164]},{57:[2,166]},{57:[2,167]},{57:[2,169]},{57:[2,170]},{22:[1,346]},{22:[1,347]},{57:[1,348]},{57:[1,349]},o([5,13,15,17,18,21,23,24,27,28,30,31,33,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,49],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1,55:$VZ1}),{57:[2,176]},{57:[2,177]},o($Vp1,[2,102]),o($Vp1,[2,103])], -defaultActions: {54:[2,1],101:[2,130],102:[2,131],103:[2,132],104:[2,133],105:[2,134],108:[2,21],109:[2,22],162:[2,180],201:[2,161],202:[2,162],266:[2,159],267:[2,160],271:[2,173],272:[2,174],273:[2,178],276:[2,183],277:[2,184],318:[2,175],321:[2,179],335:[2,163],336:[2,164],337:[2,166],338:[2,167],339:[2,169],340:[2,170],346:[2,176],347:[2,177]}, +table: [{3:1,4:2,6:3,7:4,8:5,9:6,10:7,11:8,12:9,13:$V0,14:11,15:$V1,17:$V2,18:$V3,21:$V4,23:$V5,24:$V6,27:$V7,28:$V8,30:$V9,31:$Va,33:$Vb,36:$Vc,58:19,61:21,62:22,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},{1:[3]},{5:[1,54],6:55,7:4,8:5,9:6,10:7,11:8,12:9,13:$V0,14:11,15:$V1,17:$V2,18:$V3,21:$V4,23:$V5,24:$V6,27:$V7,28:$V8,30:$V9,31:$Va,33:$Vb,36:$Vc,58:19,61:21,62:22,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},o($VC,[2,3]),o($VC,[2,4]),o($VC,[2,5]),o($VC,[2,6]),o($VC,[2,7]),o($VC,[2,8]),o($VC,[2,9]),o($VC,[2,10]),{13:[1,57],15:[1,56]},{16:58,69:59,70:$VD,72:$VE,73:$VF,75:$VG,76:$VH,77:$VI,78:$VJ,79:$VK,80:$VL,81:$VM,82:$VN,83:$VO,84:$VP,85:$VQ,86:$VR,87:75,88:76,91:$VS,92:$VT,93:$VU,94:$VV,95:$VW,96:$VX,97:$VY,98:$VZ,99:$V_,100:$V$,101:$V01,102:$V11,103:$V21,104:$V31,105:$V41,106:$V51,107:$V61,108:$V71,109:$V81,110:$V91,111:$Va1,112:$Vb1,113:$Vc1,114:$Vd1,116:$Ve1,117:$Vf1,118:$Vg1,119:$Vh1,120:$Vi1},{15:[1,106]},{19:107,29:[1,108],30:[1,109]},{23:[1,110]},{23:[1,111]},{32:[1,112]},o($VC,[2,20]),o($Vj1,[2,52],{35:[1,114],36:[1,115],59:[1,113]}),{21:$V4,23:$V5,30:$V9,33:$Vb,61:116,62:22,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},o($Vk1,[2,56],{37:$Vl1}),o($Vm1,[2,58]),o($Vm1,[2,59]),o($Vm1,[2,60]),o($Vm1,[2,61]),o($Vm1,[2,62]),o($Vm1,[2,65],{38:[1,118]}),o($Vm1,[2,66],{38:[1,119]}),o($Vm1,[2,67]),o($Vm1,[2,68]),o($Vn1,[2,142]),o($Vn1,[2,143]),o($Vn1,[2,144]),o($Vn1,[2,145]),o($Vn1,[2,146]),o($Vn1,[2,147]),o($Vn1,[2,148]),o($Vn1,[2,149]),o($Vn1,[2,150]),o($Vn1,[2,151]),o($Vn1,[2,152]),o($Vn1,[2,153]),o($Vn1,[2,154]),o($Vn1,[2,155]),o($Vn1,[2,156]),o($Vn1,[2,157]),o($Vm1,[2,135]),o($Vm1,[2,136]),o($Vm1,[2,137]),o($Vm1,[2,138]),o($Vm1,[2,139]),o($Vm1,[2,140]),o($Vm1,[2,141]),{1:[2,1]},o($VC,[2,2]),{16:120,69:59,70:$VD,72:$VE,73:$VF,75:$VG,76:$VH,77:$VI,78:$VJ,79:$VK,80:$VL,81:$VM,82:$VN,83:$VO,84:$VP,85:$VQ,86:$VR,87:75,88:76,91:$VS,92:$VT,93:$VU,94:$VV,95:$VW,96:$VX,97:$VY,98:$VZ,99:$V_,100:$V$,101:$V01,102:$V11,103:$V21,104:$V31,105:$V41,106:$V51,107:$V61,108:$V71,109:$V81,110:$V91,111:$Va1,112:$Vb1,113:$Vc1,114:$Vd1,116:$Ve1,117:$Vf1,118:$Vg1,119:$Vh1,120:$Vi1},o($VC,[2,12]),{13:[1,121],68:$Vo1},o($Vp1,[2,72]),{56:[1,123]},{56:[1,124]},{56:[1,125]},{56:[1,126]},{56:[1,127]},{56:[1,128]},{56:[1,129]},{56:[1,130]},{56:[1,131]},{56:[1,132]},{56:[1,133]},{56:[1,134]},{56:[1,135]},{56:[1,136]},{56:[1,137]},{56:[1,138]},{56:[1,139]},{56:[1,140]},o($Vp1,[2,107]),o($Vp1,[2,108]),o($Vp1,[2,109]),o($Vp1,[2,110]),o($Vp1,[2,111]),o($Vp1,[2,112]),o($Vp1,[2,113]),o($Vp1,[2,114]),o($Vp1,[2,115]),o($Vp1,[2,116]),o($Vp1,[2,117]),o($Vp1,[2,118]),o($Vp1,[2,119]),o($Vp1,[2,120]),o($Vp1,[2,121]),o($Vp1,[2,122]),o($Vp1,[2,123]),o($Vp1,[2,124]),o($Vp1,[2,125]),o($Vp1,[2,126]),o($Vp1,[2,127]),o($Vp1,[2,128]),{56:[1,141]},{56:[2,130]},{56:[2,131]},{56:[2,132]},{56:[2,133]},{56:[2,134]},o($VC,[2,14]),{17:[1,142]},{17:[2,21]},{17:[2,22]},{25:[1,143]},{25:[1,144]},o($VC,[2,23]),{30:$V9,60:145,65:146,89:$Vg,90:$Vh,115:$Vi,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},{21:$V4,23:$V5,30:$V9,33:$Vb,61:147,62:22,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},{21:$V4,23:$V5,30:$V9,33:$Vb,61:148,62:22,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},o($Vk1,[2,55],{37:$Vl1}),{21:$V4,23:$V5,30:$V9,33:$Vb,62:149,63:$Vd,64:$Ve,65:25,66:26,67:$Vf,89:$Vg,90:$Vh,115:$Vi,121:$Vj,122:$Vk,123:$Vl,124:$Vm,125:$Vn,126:$Vo,127:$Vp,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},{21:[1,150]},{33:[1,151]},{13:[1,152],68:$Vo1},o($VC,[2,13]),{69:153,70:$VD,72:$VE,73:$VF,75:$VG,76:$VH,77:$VI,78:$VJ,79:$VK,80:$VL,81:$VM,82:$VN,83:$VO,84:$VP,85:$VQ,86:$VR,87:75,88:76,91:$VS,92:$VT,93:$VU,94:$VV,95:$VW,96:$VX,97:$VY,98:$VZ,99:$V_,100:$V$,101:$V01,102:$V11,103:$V21,104:$V31,105:$V41,106:$V51,107:$V61,108:$V71,109:$V81,110:$V91,111:$Va1,112:$Vb1,113:$Vc1,114:$Vd1,116:$Ve1,117:$Vf1,118:$Vg1,119:$Vh1,120:$Vi1},{17:$Vq1,71:154,133:$Vr1,142:$Vs1,143:$Vt1,144:$Vu1},{17:$Vq1,71:160,133:$Vr1,142:$Vs1,143:$Vt1,144:$Vu1},{21:$Vv1,74:161,89:$Vw1,90:$Vx1},{21:$Vv1,74:165,89:$Vw1,90:$Vx1},{21:$Vv1,74:166,89:$Vw1,90:$Vx1},{21:$Vv1,74:167,89:$Vw1,90:$Vx1},{21:$Vv1,74:168,89:$Vw1,90:$Vx1},{21:$Vv1,74:169,89:$Vw1,90:$Vx1},{21:$Vv1,74:170,89:$Vw1,90:$Vx1},{21:$Vv1,74:171,89:$Vw1,90:$Vx1},{21:$Vv1,74:172,89:$Vw1,90:$Vx1},{21:$Vv1,74:173,89:$Vw1,90:$Vx1},{21:$Vv1,74:174,89:$Vw1,90:$Vx1},{21:$Vv1,74:175,89:$Vw1,90:$Vx1},{17:[1,176],67:[1,179],89:[1,177],90:[1,178]},{17:[1,180],67:[1,183],89:[1,181],90:[1,182]},{17:[1,184]},{17:[1,185],67:[1,186]},{115:[1,187]},o($VC,[2,15],{20:[1,188]}),{21:$Vy1,23:$Vz1,26:189,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:196,33:$VA1,36:$VB1,54:$VC1,56:$VD1},o($Vj1,[2,51],{68:[1,197]}),o($VE1,[2,70]),o($Vk1,[2,53],{37:$Vl1}),o($Vk1,[2,54],{37:$Vl1}),o($Vm1,[2,57]),o($Vm1,[2,63]),o($Vm1,[2,64]),o($VC,[2,11]),o($Vp1,[2,71]),{57:[1,198]},{35:[1,199],36:[1,200],57:[2,158],140:[1,201],141:[1,202]},{15:[1,203]},{15:[1,204]},{15:[1,205]},{20:[1,207],35:[1,206],57:[2,181]},{57:[1,208]},{57:[1,209]},{57:[2,189]},{35:[1,210],57:[2,190]},{35:[1,211],57:[2,191]},{57:[1,212]},{57:[1,213]},{57:[1,214]},{57:[1,215]},{57:[1,216]},{57:[1,217]},{57:[1,218]},{57:[1,219]},{57:[1,220]},{57:[1,221]},{57:[1,222]},{57:[1,223]},{57:[1,224]},{57:[1,225]},{35:[1,226]},{57:[1,227],68:[1,228]},{57:[1,229],68:[1,230]},{57:[1,231],68:[1,232]},{35:[1,233]},{57:[1,234],68:[1,235]},{57:[1,236]},{35:[1,237]},{57:[1,238]},{21:[1,239],23:[1,240]},o($VF1,[2,18],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1,55:$VZ1}),o($V_1,[2,24]),o($V_1,[2,25]),o($V_1,[2,26],{34:[1,261]}),{21:$Vy1,23:$Vz1,26:262,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:263,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:264,33:$VA1,36:$VB1,54:$VC1,56:$VD1},o($VF1,[2,19],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1,55:$VZ1}),{30:$V9,65:265,89:$Vg,90:$Vh,115:$Vi,128:$Vq,129:$Vr,130:$Vs,131:$Vt,132:$Vu,133:$Vv,134:$Vw,135:$Vx,136:$Vy,137:$Vz,138:$VA,139:$VB},o($Vp1,[2,73]),{21:[1,266]},{21:[1,267]},{57:[2,161]},{57:[2,162]},{89:[1,269],90:[1,268]},{89:[1,271],90:[1,270]},{89:[1,273],90:[1,272]},{21:[1,276],89:[1,274],90:[1,275]},{21:[1,278],90:[1,277]},o($Vp1,[2,74]),o($Vp1,[2,75]),{21:[1,279]},{21:[1,280]},o($Vp1,[2,76]),o($Vp1,[2,77]),o($Vp1,[2,78]),o($Vp1,[2,79]),o($Vp1,[2,80]),o($Vp1,[2,81]),o($Vp1,[2,82]),o($Vp1,[2,83]),o($Vp1,[2,84]),o($Vp1,[2,85]),o($Vp1,[2,86]),o($Vp1,[2,87]),o($Vp1,[2,92]),o($Vp1,[2,93]),{89:[1,281],90:[1,282]},o($Vp1,[2,88]),{17:[1,283]},o($Vp1,[2,96]),{17:[1,284]},o($Vp1,[2,97]),{17:[1,285]},{89:[1,286],90:[1,287]},o($Vp1,[2,90]),{17:[1,288]},o($Vp1,[2,104]),{89:[1,289],90:[1,290]},o($Vp1,[2,129]),{22:[1,291]},{22:[1,292]},{21:$Vy1,23:$Vz1,26:293,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:294,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:295,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:296,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:297,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:298,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:299,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:300,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:301,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:302,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:303,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:304,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:305,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:306,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:307,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:308,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:309,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:310,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:311,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:312,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{21:$Vy1,23:$Vz1,26:313,33:$VA1,36:$VB1,54:$VC1,56:$VD1},o($V$1,[2,34],{37:$VI1,38:$VJ1,39:$VK1,40:$VL1}),o($V_1,[2,48]),{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1,55:$VZ1,57:[1,314]},o($VE1,[2,69]),{57:[2,159]},{57:[2,160]},{35:[1,315],36:[1,316],57:[2,165]},{35:[1,317],36:[1,318],57:[2,168]},{35:[1,319],36:[1,320],57:[2,171]},{35:[1,321],36:[1,322],57:[2,174]},{35:[1,323],36:[1,324],57:[2,177]},{35:[1,325],36:[1,326],57:[2,180]},{57:[2,182]},{57:[2,183]},{57:[2,187]},{22:[1,327],35:[1,329],36:[1,328]},{22:[1,330]},{57:[2,192]},{57:[2,193]},{57:[1,331]},{57:[1,332]},{57:[1,333]},{57:[1,334]},{57:[1,335]},{57:[1,336],68:[1,337]},{57:[1,338],68:[1,339]},{57:[1,340]},{57:[1,341]},{57:[1,342]},o($VC,[2,16]),o($VC,[2,17]),o($V$1,[2,28],{37:$VI1,38:$VJ1,39:$VK1,40:$VL1}),o($V$1,[2,29],{37:$VI1,38:$VJ1,39:$VK1,40:$VL1}),o($V_1,[2,30]),o($V_1,[2,31]),o($V_1,[2,32]),o($V_1,[2,33]),o($V02,[2,35],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1}),o($V02,[2,36],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1}),o([5,13,15,17,18,21,23,24,27,28,30,31,33,43,52,53,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,37],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1}),o([5,13,15,17,18,21,23,24,27,28,30,31,33,43,44,45,52,53,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,38],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1}),o([5,13,15,17,18,21,23,24,27,28,30,31,33,43,45,52,53,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,39],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,44:$VP1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1}),o($V12,[2,40],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1}),o($V12,[2,41],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1}),o($V12,[2,42],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1}),o($V12,[2,43],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1}),o($V22,[2,44],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,46:$VR1,47:$VS1,48:$VT1,49:$VU1}),o($V22,[2,45],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,46:$VR1,47:$VS1,48:$VT1,49:$VU1}),o([5,13,15,17,18,21,23,24,27,28,30,31,33,52,53,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,46],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1}),o([5,13,15,17,18,21,23,24,27,28,30,31,33,53,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,47],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1}),{15:[1,343],35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1,55:$VZ1},o([5,13,15,17,18,21,23,24,27,28,30,31,33,55,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,27],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1}),o($V_1,[2,50]),{21:[1,344]},{21:[1,345]},{21:[1,346]},{21:[1,347]},{21:[1,348]},{21:[1,349]},{21:[1,350]},{21:[1,351]},{21:[1,352]},{21:[1,353]},{21:[1,354]},{21:[1,355]},{57:[2,184]},{21:[1,356]},{21:[1,357]},{57:[2,188]},o($Vp1,[2,94]),o($Vp1,[2,95]),o($Vp1,[2,89]),o($Vp1,[2,100]),o($Vp1,[2,101]),o($Vp1,[2,98]),{17:[1,358]},o($Vp1,[2,99]),{17:[1,359]},o($Vp1,[2,91]),o($Vp1,[2,105]),o($Vp1,[2,106]),{21:$Vy1,23:$Vz1,26:360,33:$VA1,36:$VB1,54:$VC1,56:$VD1},{57:[2,163]},{57:[2,164]},{57:[2,166]},{57:[2,167]},{57:[2,169]},{57:[2,170]},{57:[2,172]},{57:[2,173]},{57:[2,175]},{57:[2,176]},{57:[2,178]},{57:[2,179]},{22:[1,361]},{22:[1,362]},{57:[1,363]},{57:[1,364]},o([5,13,15,17,18,21,23,24,27,28,30,31,33,57,63,64,67,89,90,115,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139],[2,49],{35:$VG1,36:$VH1,37:$VI1,38:$VJ1,39:$VK1,40:$VL1,41:$VM1,42:$VN1,43:$VO1,44:$VP1,45:$VQ1,46:$VR1,47:$VS1,48:$VT1,49:$VU1,50:$VV1,51:$VW1,52:$VX1,53:$VY1,55:$VZ1}),{57:[2,185]},{57:[2,186]},o($Vp1,[2,102]),o($Vp1,[2,103])], +defaultActions: {54:[2,1],101:[2,130],102:[2,131],103:[2,132],104:[2,133],105:[2,134],108:[2,21],109:[2,22],162:[2,189],201:[2,161],202:[2,162],266:[2,159],267:[2,160],274:[2,182],275:[2,183],276:[2,187],279:[2,192],280:[2,193],327:[2,184],330:[2,188],344:[2,163],345:[2,164],346:[2,166],347:[2,167],348:[2,169],349:[2,170],350:[2,172],351:[2,173],352:[2,175],353:[2,176],354:[2,178],355:[2,179],361:[2,185],362:[2,186]}, parseError: function parseError (str, hash) { if (hash.recoverable) { this.trace(str); diff --git a/src/compiler.js b/src/compiler.js index 22bc746..b451d96 100644 --- a/src/compiler.js +++ b/src/compiler.js @@ -11,6 +11,8 @@ const maxConstl = (1n << 256n) - 1n; const minConstl = 0n; const readOnlyRegisters = ['STEP', 'ROTL_C']; +const MAX_GLOBAL_VAR = 0x10000; + module.exports = async function compile(fileName, ctx, config = {}) { let isMain; @@ -67,26 +69,22 @@ module.exports = async function compile(fileName, ctx, config = {}) { } else if (l.type == "var") { if (typeof ctx.vars[l.name] !== "undefined") error(l, `Variable ${l.name} already defined`); if (l.scope == "GLOBAL") { + const count = typeof l.count === 'string' ? Number(getConstantValue(ctx, l.count)) : l.count; ctx.vars[l.name] = { scope: "GLOBAL", + count, offset: ctx.lastGlobalVarAssigned + 1 } - if (typeof l.count === 'string') { - ctx.lastGlobalVarAssigned += Number(getConstantValue(ctx, l.count)); - } else { - ctx.lastGlobalVarAssigned += l.count; - } + ctx.lastGlobalVarAssigned += count; } else if (l.scope == "CTX") { + const count = typeof l.count === 'string' ? Number(getConstantValue(ctx, l.count)) : l.count; ctx.vars[l.name] = { scope: "CTX", + count, offset: ctx.lastLocalVarCtxAssigned + 1 } - if (typeof l.count === 'string') { - ctx.lastGlobalVarAssigned += Number(getConstantValue(ctx, l.count)); - } else { - ctx.lastGlobalVarAssigned += l.count; - } - ctx.lastLocalVarCtxAssigned += l.count; + ctx.lastGlobalVarAssigned += count; + ctx.lastLocalVarCtxAssigned += count; } else { throw error(l, `Invalid scope ${l.scope}`); } @@ -179,14 +177,21 @@ module.exports = async function compile(fileName, ctx, config = {}) { ctx.out[i].offset = 0; } else { - if (ctx.vars[ctx.out[i].offset].scope === 'CTX') { + const label = ctx.out[i].offset; + if (ctx.vars[label].scope === 'CTX') { ctx.out[i].useCTX = 1; - } else if (ctx.vars[ctx.out[i].offset].scope === 'GLOBAL') { + } else if (ctx.vars[label].scope === 'GLOBAL') { ctx.out[i].useCTX = 0; } else { - error(ctx.out[i].line, `Invalid variable scope: ${ctx.out[i].offset} not defined.`); + error(ctx.out[i].line, `Invalid variable scope: ${label} not defined.`); + } + + ctx.out[i].offset = ctx.vars[label].offset + (ctx.out[i].extraOffset ?? 0); + if (ctx.vars[label].count > 1) { + ctx.out[i].maxInd = (ctx.vars[label].offset + ctx.vars[label].count - 1) - ctx.out[i].offset; + ctx.out[i].baseLabel = ctx.vars[label].offset; + ctx.out[i].sizeLabel = ctx.vars[label].count; } - ctx.out[i].offset = ctx.vars[ctx.out[i].offset].offset + (ctx.out[i].extraOffset ?? 0); } } } @@ -226,6 +231,12 @@ module.exports = async function compile(fileName, ctx, config = {}) { constants: stringifyBigInts(ctx.constants) } + console.log(`GLOBAL memory: \x1B[1;35m${ctx.lastGlobalVarAssigned+1} ${((ctx.lastGlobalVarAssigned+1) * 100.0/MAX_GLOBAL_VAR).toFixed(2)}%\x1B[0m`); + console.log(`LOCAL memory: ${ctx.lastLocalVarCtxAssigned+1}`); + + if (ctx.lastGlobalVarAssigned > MAX_GLOBAL_VAR) { + throw new Error(`GLOBAL memory is too big ${ctx.lastGlobalVarAssigned+1} x 256-bit`); + } return res; } diff --git a/src/zkasm_parser.jison b/src/zkasm_parser.jison index f625279..aad48fc 100644 --- a/src/zkasm_parser.jison +++ b/src/zkasm_parser.jison @@ -678,7 +678,7 @@ op } | ARITH_ECADD_SAME { - $$ = { arithEq0: 0, arithEq1: 0, arithEq2: 0, arithEq3: 0, arithEq4: 0, arithEq5: 0 } + $$ = { arithEq0: 0, arithEq1: 0, arithEq2: 1, arithEq3: 0, arithEq4: 0, arithEq5: 0 } } | ARITH_BN254_MULFP2 { @@ -821,6 +821,18 @@ addr { $$ = { isStack: 0, isMem:0, ind:1, indRR: 0, incStack: 0, offset: 0} } + | SYS ':' RR '+' NUMBER + { + $$ = { isStack: 0, isMem:0, ind:0, indRR: 1, incStack: 0, offset: $5} + } + | SYS ':' RR '-' NUMBER + { + $$ = { isStack: 0, isMem:0, ind:0, indRR: 1, incStack: 0, offset: -$5} + } + | SYS ':' RR + { + $$ = { isStack: 0, isMem:0, ind:0, indRR: 1, incStack: 0, offset: 0} + } | MEM ':' E '+' NUMBER { $$ = { isStack: 0, isMem: 1, ind:1, indRR: 0, incStack: 0, offset: $5, useCTX: 1} @@ -833,6 +845,18 @@ addr { $$ = { isStack: 0, isMem: 1, ind:1, indRR: 0, incStack: 0, offset: 0, useCTX: 1} } + | MEM ':' RR '+' NUMBER + { + $$ = { isStack: 0, isMem: 1, ind:0, indRR: 1, incStack: 0, offset: $5, useCTX: 1} + } + | MEM ':' RR '-' NUMBER + { + $$ = { isStack: 0, isMem: 1, ind:0, indRR: 1, incStack: 0, offset: -$5, useCTX: 1} + } + | MEM ':' RR + { + $$ = { isStack: 0, isMem: 1, ind:0, indRR: 1, incStack: 0, offset: 0, useCTX: 1} + } | STACK ':' E '+' NUMBER { $$ = { isStack: 1, ind:1, indRR: 0, incStack: 0, offset: $5, useCTX: 1} @@ -845,6 +869,18 @@ addr { $$ = { isStack: 1, ind:1, indRR: 0, incStack: 0, offset: 0, useCTX: 1} } + | STACK ':' RR '+' NUMBER + { + $$ = { isStack: 1, ind:0, indRR: 1, incStack: 0, offset: $5, useCTX: 1} + } + | STACK ':' RR '-' NUMBER + { + $$ = { isStack: 1, ind:0, indRR: 1, incStack: 0, offset: -$5, useCTX: 1} + } + | STACK ':' RR + { + $$ = { isStack: 1, ind:0, indRR: 1, incStack: 0, offset: 0, useCTX: 1} + } | IDENTIFIER { $$ = { offset: $1 }