sysml-v2-lsp 0.4.1 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/server/mcpServer.js
CHANGED
|
@@ -103,7 +103,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
|
|
|
103
103
|
`+e.toString(this.parser!=null?this.parser.vocabulary:nn.EMPTY_VOCABULARY)),t.edges[i+1]=n),n}addDFAState(e,t){if(t===Ln.ERROR)return t;let i=e.getState(t);return i!==null?i:(t.configs.readOnly||(t.configs.optimizeConfigs(this),t.configs.setReadonly(!0)),Ee.traceATNSimulator&&console.log("addDFAState new "+t),e.addState(t),t)}reportAttemptingFullContext(e,t,i,n,s){if(Ee.debug||Ee.retryDebug){let o=new it(n,s+1);console.log("reportAttemptingFullContext decision="+e.decision+":"+i+", input="+this.parser.tokenStream.getTextFromInterval(o))}this.parser.errorListenerDispatch.reportAttemptingFullContext(this.parser,e,n,s,t,i)}reportContextSensitivity(e,t,i,n,s){if(Ee.debug||Ee.retryDebug){let o=new it(n,s+1);console.log("reportContextSensitivity decision="+e.decision+":"+i+", input="+this.parser.tokenStream.getTextFromInterval(o))}this.parser.errorListenerDispatch.reportContextSensitivity(this.parser,e,n,s,t,i)}reportAmbiguity(e,t,i,n,s,o,a){if(Ee.debug||Ee.retryDebug){let u=new it(i,n+1);console.log("reportAmbiguity "+o+":"+a+", input="+this.parser.tokenStream.getTextFromInterval(u))}this.parser.errorListenerDispatch.reportAmbiguity(this.parser,e,i,n,s,o,a)}},oa=class{static{k(this,"PredictionContextCache")}cache=new ts(ia.instance);add(r){if(r===Gt.instance)return r;let e=this.cache.get(r);return e||(this.cache.set(r,r),r)}get(r){return this.cache.get(r)}get length(){return this.cache.size}},pg=class extends T1{static{k(this,"ProfilingATNSimulator")}decisions;numDecisions=0;currentDecision=0;currentState;conflictingAltResolvedBySLL;sllStopIndex=0;llStopIndex=0;constructor(r){let e=r.interpreter.sharedContextCache;if(super(r,r.interpreter.atn,r.interpreter.decisionToDFA,e),e){this.numDecisions=this.atn.decisionToState.length,this.decisions=new Array(this.numDecisions);for(let t=0;t<this.numDecisions;t++)this.decisions[t]=new WW(t)}}adaptivePredict(r,e,t){try{this.sllStopIndex=-1,this.llStopIndex=-1,this.currentDecision=e;let i=performance.now(),n=super.adaptivePredict(r,e,t),s=performance.now();this.decisions[e].timeInPrediction+=s-i,this.decisions[e].invocations++;let o=this.sllStopIndex-this.predictionState.startIndex+1;if(this.decisions[e].sllTotalLook+=o,this.decisions[e].sllMinLook=this.decisions[e].sllMinLook===0?o:Math.min(this.decisions[e].sllMinLook,o),o>this.decisions[e].sllMaxLook&&(this.decisions[e].sllMaxLook=o,this.decisions[e].sllMaxLookEvent={decision:e,configs:null,predictedAlt:n,input:r,startIndex:this.predictionState.startIndex,stopIndex:this.sllStopIndex,fullCtx:!1}),this.llStopIndex>=0){let a=this.llStopIndex-this.predictionState.startIndex+1;this.decisions[e].llTotalLook+=a,this.decisions[e].llMinLook=this.decisions[e].llMinLook===0?a:Math.min(this.decisions[e].llMinLook,a),a>this.decisions[e].llMaxLook&&(this.decisions[e].llMaxLook=a,this.decisions[e].llMaxLookEvent={decision:e,configs:null,predictedAlt:n,input:r,startIndex:this.predictionState.startIndex,stopIndex:this.llStopIndex,fullCtx:!0})}return n}finally{this.currentDecision=-1}}getExistingTargetState(r,e){this.sllStopIndex=this.predictionState.input.index;let t=super.getExistingTargetState(r,e);return t!==void 0&&(this.decisions[this.currentDecision].sllDFATransitions++,t===Ln.ERROR&&this.decisions[this.currentDecision].errors.push({decision:this.currentDecision,configs:r.configs,input:this.predictionState.input,startIndex:this.predictionState.startIndex,stopIndex:this.sllStopIndex,fullCtx:!1})),this.currentState=t,t}computeTargetState(r,e,t){let i=super.computeTargetState(r,e,t);return this.currentState=i,i}computeReachSet(r,e,t){t&&this.predictionState?.input&&(this.llStopIndex=this.predictionState.input.index);let i=super.computeReachSet(r,e,t);return this.predictionState?.input&&(t?(this.decisions[this.currentDecision].llATNTransitions++,i===null&&this.decisions[this.currentDecision].errors.push({decision:this.currentDecision,configs:r,input:this.predictionState.input,startIndex:this.predictionState.startIndex,stopIndex:this.sllStopIndex,fullCtx:!0})):(this.decisions[this.currentDecision].sllATNTransitions++,i===null&&this.decisions[this.currentDecision].errors.push({decision:this.currentDecision,configs:r,input:this.predictionState.input,startIndex:this.predictionState.startIndex,stopIndex:this.sllStopIndex,fullCtx:!1}))),i}reportAttemptingFullContext(r,e,t,i,n){e!==null?this.conflictingAltResolvedBySLL=e.nextSetBit(0):this.conflictingAltResolvedBySLL=t.getAlts().nextSetBit(0),this.decisions[this.currentDecision].llFallback++,e&&super.reportAttemptingFullContext(r,e,t,i,n)}reportContextSensitivity(r,e,t,i,n){e!==this.conflictingAltResolvedBySLL&&this.predictionState.input&&this.decisions[this.currentDecision].contextSensitivities.push({decision:this.currentDecision,configs:t,input:this.predictionState.input,startIndex:i,stopIndex:n,fullCtx:!0}),super.reportContextSensitivity(r,e,t,i,n)}reportAmbiguity(r,e,t,i,n,s,o){let a;s?a=s.nextSetBit(0):a=o.getAlts().nextSetBit(0),this.predictionState?.input&&(o.fullCtx&&a!==this.conflictingAltResolvedBySLL&&this.decisions[this.currentDecision].contextSensitivities.push({decision:this.currentDecision,configs:o,input:this.predictionState.input,startIndex:t,stopIndex:i,fullCtx:!0}),this.decisions[this.currentDecision].ambiguities.push({ambigAlts:s,decision:this.currentDecision,configs:o,input:this.predictionState.input,startIndex:t,stopIndex:i,fullCtx:o.fullCtx})),super.reportAmbiguity(r,e,t,i,n,s,o)}getDecisionInfo(){return this.decisions}getCurrentState(){return this.currentState}},AM;(r=>{r.toString=k(e=>`(${e.pred}, ${e.alt})`,"toString")})(AM||(AM={}));var N9=class extends Error{static{k(this,"ParseCancellationException")}constructor(r){super(),this.cause=r}},bae=class{static{k(this,"InterpreterDataReader")}static parseInterpreterData(r){let e=[],t=[],i=[],n=[],s=[],o=r.split(`
|
|
104
104
|
`),a=0,u=o[a++];if(u!=="token literal names:")throw new Error("Unexpected data entry");do{if(u=o[a++],u.length===0)break;n.push(u==="null"?null:u)}while(!0);if(u=o[a++],u!=="token symbolic names:")throw new Error("Unexpected data entry");do{if(u=o[a++],u.length===0)break;s.push(u==="null"?null:u)}while(!0);if(u=o[a++],u!=="rule names:")throw new Error("Unexpected data entry");do{if(u=o[a++],u.length===0)break;e.push(u)}while(!0);if(u=o[a++],u==="channel names:"){do{if(u=o[a++],u.length===0)break;t.push(u)}while(!0);if(u=o[a++],u!=="mode names:")throw new Error("Unexpected data entry");do{if(u=o[a++],u.length===0)break;i.push(u)}while(!0)}if(u=o[a++],u!=="atn:")throw new Error("Unexpected data entry");u=o[a++];let c=u.split(","),d,f=[];for(let y=0;y<c.length;++y){let E=c[y];E.startsWith("[")?d=Number(E.substring(1).trim()):E.endsWith("]")?d=Number(E.substring(0,E.length-1).trim()):d=Number(E.trim()),f[y]=d}return{atn:new Ks().deserialize(f),vocabulary:new nn(n,s,[]),ruleNames:e,channels:t.length>0?t:void 0,modes:i.length>0?i:void 0}}},yae=class{static{k(this,"AbstractParseTreeVisitor")}visit(r){return r.accept(this)}visitChildren(r){let e=this.defaultResult(),t=r.getChildCount();for(let i=0;i<t&&this.shouldVisitNextChild(r,e);i++){let n=r.getChild(i);if(n){let s=n.accept(this);e=this.aggregateResult(e,s)}}return e}visitTerminal(r){return this.defaultResult()}visitErrorNode(r){return this.defaultResult()}defaultResult(){return null}shouldVisitNextChild(r,e){return!0}aggregateResult(r,e){return e}},vae=class g_{static{k(this,"ParseTreeWalker")}static DEFAULT=new g_;walk(e,t){if(t instanceof P1)e.visitErrorNode(t);else if(t instanceof Ur)e.visitTerminal(t);else{let n=t;this.enterRule(e,n);for(let s=0;s<t.getChildCount();s++)this.walk(e,t.getChild(s));this.exitRule(e,n)}}enterRule(e,t){let i=t.ruleContext;e.enterEveryRule(i),i.enterRule(e)}exitRule(e,t){let i=t.ruleContext;i.exitRule(e),e.exitEveryRule(i)}},au;(r=>{r.fromString=k(e=>new rK(e),"fromString")})(au||(au={}));var rK=class{static{k(this,"CharStreamImpl")}name="";index=0;data;constructor(r){let e=[];for(let t of r)e.push(t.codePointAt(0));this.data=new Uint32Array(e)}reset(){this.index=0}consume(){if(this.index>=this.data.length)throw new Error("cannot consume EOF");this.index+=1}LA(r){if(r===0)return 0;r<0&&(r+=1);let e=this.index+r-1;return e<0||e>=this.data.length?B.EOF:this.data[e]}mark(){return-1}release(r){}seek(r){if(r<=this.index){this.index=r;return}this.index=Math.min(r,this.data.length)}getTextFromRange(r,e){return e=e??this.data.length-1,e>=this.data.length&&(e=this.data.length-1),r>=this.data.length?"":this.stringFromRange(r,e+1)}getTextFromInterval(r){let e=r.start,t=r.stop;return t>=this.data.length&&(t=this.data.length-1),e>=this.data.length?"":this.stringFromRange(e,t+1)}toString(){return this.stringFromRange(0)}get size(){return this.data.length}getSourceName(){return this.name?this.name:bg.UNKNOWN_SOURCE_NAME}stringFromRange(r,e){let t=this.data.slice(r,e),i="";return t.forEach(n=>{i+=String.fromCodePoint(n)}),i}},x_=k(r=>r.setText!==void 0,"isWritableToken"),iK=class{static{k(this,"BufferedTokenStream")}tokenSource;tokens=[];p=-1;fetchedEOF=!1;constructor(r){this.tokenSource=r}mark(){return 0}release(r){}reset(){this.seek(0)}seek(r){this.lazyInit(),this.p=this.adjustSeekIndex(r)}get size(){return this.tokens.length}get index(){return this.p}get(r){return this.lazyInit(),this.tokens[r]}consume(){let r=!1;if(this.p>=0?this.fetchedEOF?r=this.p<this.tokens.length-1:r=this.p<this.tokens.length:r=!1,!r&&this.LA(1)===B.EOF)throw new Error("cannot consume EOF");this.sync(this.p+1)&&(this.p=this.adjustSeekIndex(this.p+1))}sync(r){let e=r-this.tokens.length+1;return e>0?this.fetch(e)>=e:!0}fetch(r){if(this.fetchedEOF)return 0;for(let e=0;e<r;e++){let t=this.tokenSource.nextToken();if(x_(t)&&(t.tokenIndex=this.tokens.length),this.tokens.push(t),t.type===B.EOF)return this.fetchedEOF=!0,e+1}return r}getTokens(r,e,t){if(this.lazyInit(),r===void 0&&e===void 0)return this.tokens;if(r??=0,e===void 0&&(e=this.tokens.length-1),r<0||e>=this.tokens.length||e<0||r>=this.tokens.length)throw new RangeError("start "+r+" or stop "+e+" not in 0.."+(this.tokens.length-1));if(r>e)return[];if(t===void 0)return this.tokens.slice(r,e+1);let i=[];e>=this.tokens.length&&(e=this.tokens.length-1);for(let n=r;n<e;n++){let s=this.tokens[n];if(s.type===B.EOF){i.push(s);break}t.has(s.type)&&i.push(s)}return i}LA(r){return this.LT(r)?.type??B.INVALID_TYPE}LB(r){return this.p-r<0?null:this.tokens[this.p-r]}LT(r){if(this.lazyInit(),r===0)return null;if(r<0)return this.LB(-r);let e=this.p+r-1;return this.sync(e),e>=this.tokens.length?this.tokens[this.tokens.length-1]:this.tokens[e]}adjustSeekIndex(r){return r}lazyInit(){this.p===-1&&this.setup()}setup(){this.sync(0),this.p=this.adjustSeekIndex(0)}setTokenSource(r){this.tokenSource=r,this.tokens=[],this.p=-1,this.fetchedEOF=!1}nextTokenOnChannel(r,e){if(this.sync(r),r>=this.tokens.length)return-1;let t=this.tokens[r];for(;t.channel!==e;){if(t.type===B.EOF)return-1;r+=1,this.sync(r),t=this.tokens[r]}return r}previousTokenOnChannel(r,e){if(r>=this.tokens.length)return this.tokens.length-1;for(;r>=0;){let t=this.tokens[r];if(t.type===B.EOF||t.channel===e)return r;--r}return r}getHiddenTokensToRight(r,e){if(e===void 0&&(e=-1),this.lazyInit(),r<0||r>=this.tokens.length)throw new Error(`${r} not in 0..${this.tokens.length-1}`);let t=this.nextTokenOnChannel(r+1,wn.DEFAULT_TOKEN_CHANNEL),i=r+1,n=t===-1?this.tokens.length-1:t;return this.filterForChannel(i,n,e)}getHiddenTokensToLeft(r,e){if(e===void 0&&(e=-1),this.lazyInit(),r<0||r>=this.tokens.length)throw new Error(`${r} not in 0..${this.tokens.length-1}`);let t=this.previousTokenOnChannel(r-1,wn.DEFAULT_TOKEN_CHANNEL);if(t===r-1)return;let i=t+1,n=r-1;return this.filterForChannel(i,n,e)}filterForChannel(r,e,t){let i=[];for(let n=r;n<e+1;n++){let s=this.tokens[n];t===-1?s.channel!==wn.DEFAULT_TOKEN_CHANNEL&&i.push(s):s.channel===t&&i.push(s)}if(i.length!==0)return i}getSourceName(){return this.tokenSource.sourceName}getText(){return this.getTextFromInterval(it.of(0,this.size-1))}getTextFromInterval(r){let e=r.start,t=r.stop;if(e<0||t<0)return"";this.sync(t),t>=this.tokens.length&&(t=this.tokens.length-1);let i="";for(let n=e;n<=t;++n){let s=this.tokens[n];if(s.type===B.EOF)break;i+=s.text}return i}getTextFromContext(r){return this.getTextFromInterval(r.getSourceInterval())}getTextFromRange(r,e){return r!==null&&e!==null?this.getTextFromInterval(it.of(r.tokenIndex,e.tokenIndex)):""}fill(){for(this.lazyInit();this.fetch(1e3)===1e3;);}setLine(r){this.tokenSource.line=r}setColumn(r){this.tokenSource.column=r}},Cg=class extends iK{static{k(this,"CommonTokenStream")}channel=B.DEFAULT_CHANNEL;constructor(r,e){super(r),this.channel=e??B.DEFAULT_CHANNEL}adjustSeekIndex(r){return this.nextTokenOnChannel(r,this.channel)}LB(r){if(r===0||this.index-r<0)return null;let e=this.index,t=1;for(;t<=r;)e=this.previousTokenOnChannel(e-1,this.channel),t+=1;return e<0?null:this.tokens[e]}LT(r){if(this.lazyInit(),r===0)return null;if(r<0)return this.LB(-r);let e=this.index,t=1;for(;t<r;)this.sync(e+1)&&(e=this.nextTokenOnChannel(e+1,this.channel)),t+=1;return this.tokens[e]}getNumberOfOnChannelTokens(){let r=0;this.fill();for(let e of this.tokens)if(e.channel===this.channel&&(r+=1),e.type===B.EOF)break;return r}},Xi=class Vt extends wn{static{k(this,"XPathLexer")}static TOKEN_REF=1;static RULE_REF=2;static ANYWHERE=3;static ROOT=4;static WILDCARD=5;static BANG=6;static ID=7;static STRING=8;static channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"];static literalNames=[null,null,null,"'//'","'/'","'*'","'!'"];static symbolicNames=[null,"TOKEN_REF","RULE_REF","ANYWHERE","ROOT","WILDCARD","BANG","ID","STRING"];static modeNames=["DEFAULT_MODE"];static ruleNames=["ANYWHERE","ROOT","WILDCARD","BANG","ID","NameChar","NameStartChar","STRING"];constructor(e){super(e),this.interpreter=new ou(this,Vt._ATN,Vt.decisionsToDFA,new oa)}get grammarFileName(){return"XPathLexer.g4"}get literalNames(){return Vt.literalNames}get symbolicNames(){return Vt.symbolicNames}get ruleNames(){return Vt.ruleNames}get serializedATN(){return Vt._serializedATN}get channelNames(){return Vt.channelNames}get modeNames(){return Vt.modeNames}action(e,t,i){t===4&&this.ID_action(e,i)}ID_action(e,t){if(t===0){let i=this.text;i.charAt(0)===i.charAt(0).toUpperCase()?this.type=Vt.TOKEN_REF:this.type=Vt.RULE_REF}}static _serializedATN=[4,0,8,48,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,1,0,1,0,1,0,1,1,1,1,1,2,1,2,1,3,1,3,1,4,1,4,5,4,29,8,4,10,4,12,4,32,9,4,1,4,1,4,1,5,1,5,1,6,1,6,1,7,1,7,5,7,42,8,7,10,7,12,7,45,9,7,1,7,1,7,1,43,0,8,1,3,3,4,5,5,7,6,9,7,11,0,13,0,15,8,1,0,2,784,0,0,8,14,27,48,57,65,90,95,95,97,122,127,159,170,170,173,173,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,768,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1155,1159,1162,1327,1329,1366,1369,1369,1376,1416,1425,1469,1471,1471,1473,1474,1476,1477,1479,1479,1488,1514,1519,1522,1536,1541,1552,1562,1564,1564,1568,1641,1646,1747,1749,1757,1759,1768,1770,1788,1791,1791,1807,1866,1869,1969,1984,2037,2042,2042,2045,2045,2048,2093,2112,2139,2144,2154,2160,2183,2185,2190,2192,2193,2200,2403,2406,2415,2417,2435,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2492,2500,2503,2504,2507,2510,2519,2519,2524,2525,2527,2531,2534,2545,2556,2556,2558,2558,2561,2563,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2620,2620,2622,2626,2631,2632,2635,2637,2641,2641,2649,2652,2654,2654,2662,2677,2689,2691,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2748,2757,2759,2761,2763,2765,2768,2768,2784,2787,2790,2799,2809,2815,2817,2819,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2876,2884,2887,2888,2891,2893,2901,2903,2908,2909,2911,2915,2918,2927,2929,2929,2946,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3006,3010,3014,3016,3018,3021,3024,3024,3031,3031,3046,3055,3072,3084,3086,3088,3090,3112,3114,3129,3132,3140,3142,3144,3146,3149,3157,3158,3160,3162,3165,3165,3168,3171,3174,3183,3200,3203,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3260,3268,3270,3272,3274,3277,3285,3286,3293,3294,3296,3299,3302,3311,3313,3315,3328,3340,3342,3344,3346,3396,3398,3400,3402,3406,3412,3415,3423,3427,3430,3439,3450,3455,3457,3459,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3530,3530,3535,3540,3542,3542,3544,3551,3558,3567,3570,3571,3585,3642,3648,3662,3664,3673,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3773,3776,3780,3782,3782,3784,3790,3792,3801,3804,3807,3840,3840,3864,3865,3872,3881,3893,3893,3895,3895,3897,3897,3902,3911,3913,3948,3953,3972,3974,3991,3993,4028,4038,4038,4096,4169,4176,4253,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4957,4959,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5909,5919,5940,5952,5971,5984,5996,5998,6e3,6002,6003,6016,6099,6103,6103,6108,6109,6112,6121,6155,6169,6176,6264,6272,6314,6320,6389,6400,6430,6432,6443,6448,6459,6470,6509,6512,6516,6528,6571,6576,6601,6608,6617,6656,6683,6688,6750,6752,6780,6783,6793,6800,6809,6823,6823,6832,6845,6847,6862,6912,6988,6992,7001,7019,7027,7040,7155,7168,7223,7232,7241,7245,7293,7296,7304,7312,7354,7357,7359,7376,7378,7380,7418,7424,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8203,8207,8234,8238,8255,8256,8276,8276,8288,8292,8294,8303,8305,8305,8319,8319,8336,8348,8400,8412,8417,8417,8421,8432,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11647,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11744,11775,11823,11823,12293,12295,12321,12335,12337,12341,12344,12348,12353,12438,12441,12442,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42539,42560,42607,42612,42621,42623,42737,42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43047,43052,43052,43072,43123,43136,43205,43216,43225,43232,43255,43259,43259,43261,43309,43312,43347,43360,43388,43392,43456,43471,43481,43488,43518,43520,43574,43584,43597,43600,43609,43616,43638,43642,43714,43739,43741,43744,43759,43762,43766,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44010,44012,44013,44016,44025,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65024,65039,65056,65071,65075,65076,65101,65103,65136,65140,65142,65276,65279,65279,65296,65305,65313,65338,65343,65343,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65529,65531,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66045,66045,66176,66204,66208,66256,66272,66272,66304,66335,66349,66378,66384,66426,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66720,66729,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68099,68101,68102,68108,68115,68117,68119,68121,68149,68152,68154,68159,68159,68192,68220,68224,68252,68288,68295,68297,68326,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68903,68912,68921,69248,69289,69291,69292,69296,69297,69373,69404,69415,69415,69424,69456,69488,69509,69552,69572,69600,69622,69632,69702,69734,69749,69759,69818,69821,69821,69826,69826,69837,69837,69840,69864,69872,69881,69888,69940,69942,69951,69956,69959,69968,70003,70006,70006,70016,70084,70089,70092,70094,70106,70108,70108,70144,70161,70163,70199,70206,70209,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70378,70384,70393,70400,70403,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70459,70468,70471,70472,70475,70477,70480,70480,70487,70487,70493,70499,70502,70508,70512,70516,70656,70730,70736,70745,70750,70753,70784,70853,70855,70855,70864,70873,71040,71093,71096,71104,71128,71133,71168,71232,71236,71236,71248,71257,71296,71352,71360,71369,71424,71450,71453,71467,71472,71481,71488,71494,71680,71738,71840,71913,71935,71942,71945,71945,71948,71955,71957,71958,71960,71989,71991,71992,71995,72003,72016,72025,72096,72103,72106,72151,72154,72161,72163,72164,72192,72254,72263,72263,72272,72345,72349,72349,72368,72440,72704,72712,72714,72758,72760,72768,72784,72793,72818,72847,72850,72871,72873,72886,72960,72966,72968,72969,72971,73014,73018,73018,73020,73021,73023,73031,73040,73049,73056,73061,73063,73064,73066,73102,73104,73105,73107,73112,73120,73129,73440,73462,73472,73488,73490,73530,73534,73538,73552,73561,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78933,82944,83526,92160,92728,92736,92766,92768,92777,92784,92862,92864,92873,92880,92909,92912,92916,92928,92982,92992,92995,93008,93017,93027,93047,93053,93071,93760,93823,93952,94026,94031,94087,94095,94111,94176,94177,94179,94180,94192,94193,94208,100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,113821,113822,113824,113827,118528,118573,118576,118598,119141,119145,119149,119170,119173,119179,119210,119213,119362,119364,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,120782,120831,121344,121398,121403,121452,121461,121461,121476,121476,121499,121503,121505,121519,122624,122654,122661,122666,122880,122886,122888,122904,122907,122913,122915,122916,122918,122922,122928,122989,123023,123023,123136,123180,123184,123197,123200,123209,123214,123214,123536,123566,123584,123641,124112,124153,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125136,125142,125184,125259,125264,125273,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,130032,130041,131072,173791,173824,177977,177984,178205,178208,183969,183984,191456,194560,195101,196608,201546,201552,205743,917505,917505,917536,917631,917760,917999,662,0,65,90,97,122,170,170,181,181,186,186,192,214,216,246,248,705,710,721,736,740,748,748,750,750,880,884,886,887,890,893,895,895,902,902,904,906,908,908,910,929,931,1013,1015,1153,1162,1327,1329,1366,1369,1369,1376,1416,1488,1514,1519,1522,1568,1610,1646,1647,1649,1747,1749,1749,1765,1766,1774,1775,1786,1788,1791,1791,1808,1808,1810,1839,1869,1957,1969,1969,1994,2026,2036,2037,2042,2042,2048,2069,2074,2074,2084,2084,2088,2088,2112,2136,2144,2154,2160,2183,2185,2190,2208,2249,2308,2361,2365,2365,2384,2384,2392,2401,2417,2432,2437,2444,2447,2448,2451,2472,2474,2480,2482,2482,2486,2489,2493,2493,2510,2510,2524,2525,2527,2529,2544,2545,2556,2556,2565,2570,2575,2576,2579,2600,2602,2608,2610,2611,2613,2614,2616,2617,2649,2652,2654,2654,2674,2676,2693,2701,2703,2705,2707,2728,2730,2736,2738,2739,2741,2745,2749,2749,2768,2768,2784,2785,2809,2809,2821,2828,2831,2832,2835,2856,2858,2864,2866,2867,2869,2873,2877,2877,2908,2909,2911,2913,2929,2929,2947,2947,2949,2954,2958,2960,2962,2965,2969,2970,2972,2972,2974,2975,2979,2980,2984,2986,2990,3001,3024,3024,3077,3084,3086,3088,3090,3112,3114,3129,3133,3133,3160,3162,3165,3165,3168,3169,3200,3200,3205,3212,3214,3216,3218,3240,3242,3251,3253,3257,3261,3261,3293,3294,3296,3297,3313,3314,3332,3340,3342,3344,3346,3386,3389,3389,3406,3406,3412,3414,3423,3425,3450,3455,3461,3478,3482,3505,3507,3515,3517,3517,3520,3526,3585,3632,3634,3635,3648,3654,3713,3714,3716,3716,3718,3722,3724,3747,3749,3749,3751,3760,3762,3763,3773,3773,3776,3780,3782,3782,3804,3807,3840,3840,3904,3911,3913,3948,3976,3980,4096,4138,4159,4159,4176,4181,4186,4189,4193,4193,4197,4198,4206,4208,4213,4225,4238,4238,4256,4293,4295,4295,4301,4301,4304,4346,4348,4680,4682,4685,4688,4694,4696,4696,4698,4701,4704,4744,4746,4749,4752,4784,4786,4789,4792,4798,4800,4800,4802,4805,4808,4822,4824,4880,4882,4885,4888,4954,4992,5007,5024,5109,5112,5117,5121,5740,5743,5759,5761,5786,5792,5866,5870,5880,5888,5905,5919,5937,5952,5969,5984,5996,5998,6e3,6016,6067,6103,6103,6108,6108,6176,6264,6272,6276,6279,6312,6314,6314,6320,6389,6400,6430,6480,6509,6512,6516,6528,6571,6576,6601,6656,6678,6688,6740,6823,6823,6917,6963,6981,6988,7043,7072,7086,7087,7098,7141,7168,7203,7245,7247,7258,7293,7296,7304,7312,7354,7357,7359,7401,7404,7406,7411,7413,7414,7418,7418,7424,7615,7680,7957,7960,7965,7968,8005,8008,8013,8016,8023,8025,8025,8027,8027,8029,8029,8031,8061,8064,8116,8118,8124,8126,8126,8130,8132,8134,8140,8144,8147,8150,8155,8160,8172,8178,8180,8182,8188,8305,8305,8319,8319,8336,8348,8450,8450,8455,8455,8458,8467,8469,8469,8473,8477,8484,8484,8486,8486,8488,8488,8490,8493,8495,8505,8508,8511,8517,8521,8526,8526,8544,8584,11264,11492,11499,11502,11506,11507,11520,11557,11559,11559,11565,11565,11568,11623,11631,11631,11648,11670,11680,11686,11688,11694,11696,11702,11704,11710,11712,11718,11720,11726,11728,11734,11736,11742,11823,11823,12293,12295,12321,12329,12337,12341,12344,12348,12353,12438,12445,12447,12449,12538,12540,12543,12549,12591,12593,12686,12704,12735,12784,12799,13312,19903,19968,42124,42192,42237,42240,42508,42512,42527,42538,42539,42560,42606,42623,42653,42656,42735,42775,42783,42786,42888,42891,42954,42960,42961,42963,42963,42965,42969,42994,43009,43011,43013,43015,43018,43020,43042,43072,43123,43138,43187,43250,43255,43259,43259,43261,43262,43274,43301,43312,43334,43360,43388,43396,43442,43471,43471,43488,43492,43494,43503,43514,43518,43520,43560,43584,43586,43588,43595,43616,43638,43642,43642,43646,43695,43697,43697,43701,43702,43705,43709,43712,43712,43714,43714,43739,43741,43744,43754,43762,43764,43777,43782,43785,43790,43793,43798,43808,43814,43816,43822,43824,43866,43868,43881,43888,44002,44032,55203,55216,55238,55243,55291,63744,64109,64112,64217,64256,64262,64275,64279,64285,64285,64287,64296,64298,64310,64312,64316,64318,64318,64320,64321,64323,64324,64326,64433,64467,64829,64848,64911,64914,64967,65008,65019,65136,65140,65142,65276,65313,65338,65345,65370,65382,65470,65474,65479,65482,65487,65490,65495,65498,65500,65536,65547,65549,65574,65576,65594,65596,65597,65599,65613,65616,65629,65664,65786,65856,65908,66176,66204,66208,66256,66304,66335,66349,66378,66384,66421,66432,66461,66464,66499,66504,66511,66513,66517,66560,66717,66736,66771,66776,66811,66816,66855,66864,66915,66928,66938,66940,66954,66956,66962,66964,66965,66967,66977,66979,66993,66995,67001,67003,67004,67072,67382,67392,67413,67424,67431,67456,67461,67463,67504,67506,67514,67584,67589,67592,67592,67594,67637,67639,67640,67644,67644,67647,67669,67680,67702,67712,67742,67808,67826,67828,67829,67840,67861,67872,67897,67968,68023,68030,68031,68096,68096,68112,68115,68117,68119,68121,68149,68192,68220,68224,68252,68288,68295,68297,68324,68352,68405,68416,68437,68448,68466,68480,68497,68608,68680,68736,68786,68800,68850,68864,68899,69248,69289,69296,69297,69376,69404,69415,69415,69424,69445,69488,69505,69552,69572,69600,69622,69635,69687,69745,69746,69749,69749,69763,69807,69840,69864,69891,69926,69956,69956,69959,69959,69968,70002,70006,70006,70019,70066,70081,70084,70106,70106,70108,70108,70144,70161,70163,70187,70207,70208,70272,70278,70280,70280,70282,70285,70287,70301,70303,70312,70320,70366,70405,70412,70415,70416,70419,70440,70442,70448,70450,70451,70453,70457,70461,70461,70480,70480,70493,70497,70656,70708,70727,70730,70751,70753,70784,70831,70852,70853,70855,70855,71040,71086,71128,71131,71168,71215,71236,71236,71296,71338,71352,71352,71424,71450,71488,71494,71680,71723,71840,71903,71935,71942,71945,71945,71948,71955,71957,71958,71960,71983,71999,71999,72001,72001,72096,72103,72106,72144,72161,72161,72163,72163,72192,72192,72203,72242,72250,72250,72272,72272,72284,72329,72349,72349,72368,72440,72704,72712,72714,72750,72768,72768,72818,72847,72960,72966,72968,72969,72971,73008,73030,73030,73056,73061,73063,73064,73066,73097,73112,73112,73440,73458,73474,73474,73476,73488,73490,73523,73648,73648,73728,74649,74752,74862,74880,75075,77712,77808,77824,78895,78913,78918,82944,83526,92160,92728,92736,92766,92784,92862,92880,92909,92928,92975,92992,92995,93027,93047,93053,93071,93760,93823,93952,94026,94032,94032,94099,94111,94176,94177,94179,94179,94208,100343,100352,101589,101632,101640,110576,110579,110581,110587,110589,110590,110592,110882,110898,110898,110928,110930,110933,110933,110948,110951,110960,111355,113664,113770,113776,113788,113792,113800,113808,113817,119808,119892,119894,119964,119966,119967,119970,119970,119973,119974,119977,119980,119982,119993,119995,119995,119997,120003,120005,120069,120071,120074,120077,120084,120086,120092,120094,120121,120123,120126,120128,120132,120134,120134,120138,120144,120146,120485,120488,120512,120514,120538,120540,120570,120572,120596,120598,120628,120630,120654,120656,120686,120688,120712,120714,120744,120746,120770,120772,120779,122624,122654,122661,122666,122928,122989,123136,123180,123191,123197,123214,123214,123536,123565,123584,123627,124112,124139,124896,124902,124904,124907,124909,124910,124912,124926,124928,125124,125184,125251,125259,125259,126464,126467,126469,126495,126497,126498,126500,126500,126503,126503,126505,126514,126516,126519,126521,126521,126523,126523,126530,126530,126535,126535,126537,126537,126539,126539,126541,126543,126545,126546,126548,126548,126551,126551,126553,126553,126555,126555,126557,126557,126559,126559,126561,126562,126564,126564,126567,126570,126572,126578,126580,126583,126585,126588,126590,126590,126592,126601,126603,126619,126625,126627,126629,126633,126635,126651,131072,173791,173824,177977,177984,178205,178208,183969,183984,191456,194560,195101,196608,201546,201552,205743,47,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,15,1,0,0,0,1,17,1,0,0,0,3,20,1,0,0,0,5,22,1,0,0,0,7,24,1,0,0,0,9,26,1,0,0,0,11,35,1,0,0,0,13,37,1,0,0,0,15,39,1,0,0,0,17,18,5,47,0,0,18,19,5,47,0,0,19,2,1,0,0,0,20,21,5,47,0,0,21,4,1,0,0,0,22,23,5,42,0,0,23,6,1,0,0,0,24,25,5,33,0,0,25,8,1,0,0,0,26,30,3,13,6,0,27,29,3,11,5,0,28,27,1,0,0,0,29,32,1,0,0,0,30,28,1,0,0,0,30,31,1,0,0,0,31,33,1,0,0,0,32,30,1,0,0,0,33,34,6,4,0,0,34,10,1,0,0,0,35,36,7,0,0,0,36,12,1,0,0,0,37,38,7,1,0,0,38,14,1,0,0,0,39,43,5,39,0,0,40,42,9,0,0,0,41,40,1,0,0,0,42,45,1,0,0,0,43,44,1,0,0,0,43,41,1,0,0,0,44,46,1,0,0,0,45,43,1,0,0,0,46,47,5,39,0,0,47,16,1,0,0,0,3,0,30,43,1,1,4,0];static __ATN;static get _ATN(){return Vt.__ATN||(Vt.__ATN=new Ks().deserialize(Vt._serializedATN)),Vt.__ATN}static vocabulary=new nn(Vt.literalNames,Vt.symbolicNames,[]);get vocabulary(){return Vt.vocabulary}static decisionsToDFA=Vt._ATN.decisionToState.map((e,t)=>new rs(e,t))},nK=class extends lu{static{k(this,"XPathLexerErrorListener")}syntaxError(r,e,t,i,n,s){}},uu=class{static{k(this,"XPathElement")}invert;nodeName;constructor(r){this.nodeName=r,this.invert=!1}toString(){return"XPathElement["+(this.invert?"!":"")+this.nodeName+"]"}},sK=class extends uu{static{k(this,"XPathRuleAnywhereElement")}ruleIndex;constructor(r,e){super(r),this.ruleIndex=e}evaluate(r){return Gs.findAllRuleNodes(r,this.ruleIndex)}toString(){return"XPathRuleAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},oK=class extends uu{static{k(this,"XPathRuleElement")}ruleIndex;constructor(r,e){super(r),this.ruleIndex=e}evaluate(r){let e=[];for(let t of Gs.getChildren(r))t instanceof h&&(t.ruleIndex===this.ruleIndex&&!this.invert||t.ruleIndex!==this.ruleIndex&&this.invert)&&e.push(t);return e}toString(){return"XPathRuleElement["+(this.invert?"!":"")+this.nodeName+"]"}},aK=class extends uu{static{k(this,"XPathTokenAnywhereElement")}tokenType;constructor(r,e){super(r),this.tokenType=e}evaluate(r){return Gs.findAllTokenNodes(r,this.tokenType)}toString(){return"XPathTokenAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},lK=class extends uu{static{k(this,"XPathTokenElement")}tokenType;constructor(r,e){super(r),this.tokenType=e}evaluate(r){let e=[];for(let t of Gs.getChildren(r))t instanceof Ur&&t.symbol&&(t.symbol.type===this.tokenType&&!this.invert||t.symbol.type!==this.tokenType&&this.invert)&&e.push(t);return e}toString(){return"XPathTokenElement["+(this.invert?"!":"")+this.nodeName+"]"}},uK=class extends uu{static{k(this,"XPathWildcardAnywhereElement")}constructor(){super($9.WILDCARD)}evaluate(r){return this.invert?[]:Gs.descendants(r)}toString(){return"XPathWildcardAnywhereElement["+(this.invert?"!":"")+this.nodeName+"]"}},cK=class extends uu{static{k(this,"XPathWildcardElement")}constructor(){super($9.WILDCARD)}evaluate(r){let e=[];if(this.invert)return e;for(let t of Gs.getChildren(r))e.push(t);return e}toString(){return"XPathWildcardElement["+(this.invert?"!":"")+this.nodeName+"]"}},$9=class b_{static{k(this,"XPath")}static WILDCARD="*";static NOT="!";path;elements;parser;constructor(e,t){this.parser=e,this.path=t,this.elements=this.split(t)}static findAll(e,t,i){return new b_(i,t).evaluate(e)}split(e){let t=new Xi(au.fromString(e));t.recover=u=>{throw u},t.removeErrorListeners(),t.addErrorListener(new nK);let i=new Cg(t);try{i.fill()}catch(u){if(u instanceof vg){let d="Invalid tokens or characters at index "+t.column+" in path '"+e+"' -- "+u.message;throw new RangeError(d)}throw u}let n=i.getTokens(),s=[],o=n.length,a=0;e:for(;a<o;){let u=n[a],c;switch(u.type){case Xi.ROOT:case Xi.ANYWHERE:let d=u.type===Xi.ANYWHERE;a++,c=n[a];let f=c.type===Xi.BANG;f&&(a++,c=n[a]);let x=this.getXPathElement(c,d);x.invert=f,s.push(x),a++;break;case Xi.TOKEN_REF:case Xi.RULE_REF:case Xi.WILDCARD:s.push(this.getXPathElement(u,!1)),++a;break;case B.EOF:break e;default:throw new Error("Unknown path element "+u)}}return s}evaluate(e){let t=new h(null);t.addChild(e);let i=new Set([t]),n=0;for(;n<this.elements.length;){let s=new Set;for(let o of i)o.getChildCount()>0&&this.elements[n].evaluate(o).forEach(u=>{s.add(u)},s);n++,i=s}return i}getXPathElement(e,t){if(e.type===B.EOF)throw new Error("Missing path element at end of path");let i=e.text;if(i==null)throw new Error("Expected wordToken to have text content.");let n=this.parser.getTokenType(i),s=this.parser.getRuleIndex(i);switch(e.type){case Xi.WILDCARD:return t?new uK:new cK;case Xi.TOKEN_REF:case Xi.STRING:if(n===B.INVALID_TYPE)throw new Error(i+" at index "+e.start+" isn't a valid token name");return t?new aK(i,n):new lK(i,n);default:if(s===-1)throw new Error(i+" at index "+e.start+" isn't a valid rule name");return t?new sK(i,s):new oK(i,s)}}},y_=class{static{k(this,"Chunk")}},dK=class{static{k(this,"ParseTreeMatch")}tree;pattern;labels;mismatchedNode;constructor(r,e,t,i){this.tree=r,this.pattern=e,this.labels=t,this.mismatchedNode=i}get(r){let e=this.labels.get(r);return!e||e.length===0?null:e[e.length-1]}getAll(r){return this.labels.get(r)??[]}getLabels(){return this.labels}getMismatchedNode(){return this.mismatchedNode}succeeded(){return!this.mismatchedNode}getPattern(){return this.pattern}getTree(){return this.tree}toString(){return`Match ${this.succeeded()?"succeeded":"failed"}; found ${this.getLabels().size} labels`}},hK=class{static{k(this,"ParseTreePattern")}patternRuleIndex;pattern;patternTree;matcher;constructor(r,e,t,i){this.matcher=r,this.patternRuleIndex=t,this.pattern=e,this.patternTree=i}match(r){return this.matcher.match(r,this)}matches(r){return this.matcher.match(r,this).succeeded()}findAll(r,e){let t=$9.findAll(r,e,this.matcher.getParser()),i=new Array;for(let n of t){let s=this.match(n);s.succeeded()&&i.push(s)}return i}getMatcher(){return this.matcher}getPattern(){return this.pattern}getPatternRuleIndex(){return this.patternRuleIndex}getPatternTree(){return this.patternTree}},S1=class extends p{static{k(this,"InputMismatchException")}constructor(r){super({message:"",recognizer:r,input:r.inputStream,ctx:r.context}),this.offendingToken=r.getCurrentToken()}},L1=class extends p{static{k(this,"FailedPredicateException")}ruleIndex=0;predicateIndex=0;predicate;constructor(r,e,t=null){super({message:pK(e??"no predicate",t??null),recognizer:r,input:r.inputStream,ctx:r.context});let n=r.atn.states[r.state].transitions[0];n instanceof JM?(this.ruleIndex=n.ruleIndex,this.predicateIndex=n.predIndex):(this.ruleIndex=0,this.predicateIndex=0),this.predicate=e,this.offendingToken=r.getCurrentToken()}},pK=k((r,e)=>e!==null?e:"failed predicate: {"+r+"}?","formatMessage"),v_=class{static{k(this,"DefaultErrorStrategy")}errorRecoveryMode=!1;lastErrorIndex=-1;lastErrorStates=new rn;nextTokensContext=null;nextTokenState=0;reset(r){this.endErrorCondition(r)}beginErrorCondition(r){this.errorRecoveryMode=!0}inErrorRecoveryMode(r){return this.errorRecoveryMode}endErrorCondition(r){this.errorRecoveryMode=!1,this.lastErrorStates=new rn,this.lastErrorIndex=-1}reportMatch(r){this.endErrorCondition(r)}reportError(r,e){this.inErrorRecoveryMode(r)||(this.beginErrorCondition(r),e instanceof ne?this.reportNoViableAlternative(r,e):e instanceof S1?this.reportInputMismatch(r,e):e instanceof L1?this.reportFailedPredicate(r,e):r.notifyErrorListeners(e.message,e.offendingToken,e))}recover(r,e){this.lastErrorIndex===r.inputStream?.index&&this.lastErrorStates.contains(r.state)&&r.consume(),this.lastErrorIndex=r.inputStream?.index??0,this.lastErrorStates.addOne(r.state);let t=this.getErrorRecoverySet(r);this.consumeUntil(r,t)}sync(r){if(this.inErrorRecoveryMode(r))return;let e=r.atn.states[r.state],t=r.tokenStream.LA(1),i=r.atn.nextTokens(e);if(i.contains(t)){this.nextTokensContext=null,this.nextTokenState=fe.INVALID_STATE_NUMBER;return}if(i.contains(B.EPSILON)){this.nextTokensContext===null&&(this.nextTokensContext=r.context,this.nextTokenState=r.state);return}switch(e.constructor.stateType){case fe.BLOCK_START:case fe.STAR_BLOCK_START:case fe.PLUS_BLOCK_START:case fe.STAR_LOOP_ENTRY:{if(this.singleTokenDeletion(r)!==null)return;throw new S1(r)}case fe.PLUS_LOOP_BACK:case fe.STAR_LOOP_BACK:{this.reportUnwantedToken(r);let n=new rn;n.addSet(r.getExpectedTokens());let s=n.addSet(this.getErrorRecoverySet(r));this.consumeUntil(r,s);break}default:}}reportNoViableAlternative(r,e){if(e.message.length>0){r.notifyErrorListeners(e.message,e.offendingToken,e);return}let t=r.tokenStream,i;t!==null&&e.startToken?e.startToken.type===B.EOF?i="<EOF>":i=t.getTextFromRange(e.startToken,e.offendingToken):i="<unknown input>";let n="no viable alternative at input "+this.escapeWSAndQuote(i);r.notifyErrorListeners(n,e.offendingToken,e)}reportInputMismatch(r,e){if(e.message.length>0){r.notifyErrorListeners(e.message,e.offendingToken,e);return}let t="mismatched input "+this.getTokenErrorDisplay(e.offendingToken)+" expecting "+e.getExpectedTokens().toStringWithVocabulary(r.vocabulary);r.notifyErrorListeners(t,e.offendingToken,e)}reportFailedPredicate(r,e){let i="rule "+r.ruleNames[r.context.ruleIndex]+" "+e.message;r.notifyErrorListeners(i,e.offendingToken,e)}reportUnwantedToken(r){if(this.inErrorRecoveryMode(r))return;this.beginErrorCondition(r);let e=r.getCurrentToken(),t=this.getTokenErrorDisplay(e),i=this.getExpectedTokens(r),n="extraneous input "+t+" expecting "+i.toStringWithVocabulary(r.vocabulary);r.notifyErrorListeners(n,e,null)}reportMissingToken(r){if(this.inErrorRecoveryMode(r))return;this.beginErrorCondition(r);let e=r.getCurrentToken(),i="missing "+this.getExpectedTokens(r).toStringWithVocabulary(r.vocabulary)+" at "+this.getTokenErrorDisplay(e);r.notifyErrorListeners(i,e,null)}recoverInline(r){let e=this.singleTokenDeletion(r);if(e)return r.consume(),e;if(this.singleTokenInsertion(r))return this.getMissingSymbol(r);throw new S1(r)}singleTokenInsertion(r){let e=r.tokenStream?.LA(1)??-1,t=r.atn,n=t.states[r.state].transitions[0].target;return t.nextTokens(n,r.context??void 0).contains(e)?(this.reportMissingToken(r),!0):!1}singleTokenDeletion(r){let e=r.tokenStream?.LA(2)??-1;if(this.getExpectedTokens(r).contains(e)){this.reportUnwantedToken(r),r.consume();let i=r.getCurrentToken();return this.reportMatch(r),i}return null}getMissingSymbol(r){let e=r.getCurrentToken(),t=this.getExpectedTokens(r),i=B.INVALID_TYPE;t.length!==0&&(i=t.minElement);let n;i===B.EOF?n="<missing EOF>":n="<missing "+r.vocabulary.getDisplayName(i)+">";let s=e,o=r.tokenStream?.LT(-1);return s.type===B.EOF&&o!==null&&(s=o),r.getTokenFactory().create(s.source,i,n,B.DEFAULT_CHANNEL,-1,-1,s.line,s.column)}getExpectedTokens(r){return r.getExpectedTokens()}getTokenErrorDisplay(r){if(r===null)return"<no token>";let e=r.text;return e||(r.type===B.EOF?e="<EOF>":e="<"+r.type+">"),this.escapeWSAndQuote(e)}escapeWSAndQuote(r){return r=r.replace(/\n/g,"\\n"),r=r.replace(/\r/g,"\\r"),r=r.replace(/\t/g,"\\t"),"'"+r+"'"}getErrorRecoverySet(r){let e=r.atn,t=r.context,i=new rn;for(;t!==null&&t.invokingState>=0;){let s=e.states[t.invokingState].transitions[0],o=e.nextTokens(s.followState);i.addSet(o),t=t.parent}return i.removeOne(B.EPSILON),i}consumeUntil(r,e){let t=r.tokenStream?.LA(1)??-1;for(;t!==B.EOF&&!e.contains(t);)r.consume(),t=r.tokenStream?.LA(1)??-1}},fK=class extends v_{static{k(this,"BailErrorStrategy")}recover(r,e){throw new N9(e)}recoverInline(r){let e=new S1(r);throw new N9(e)}sync(r){}},mK=class{static{k(this,"ListTokenSource")}sourceName;tokenFactory=u_.DEFAULT;tokens=[];i=0;eofToken=null;constructor(r,e){this.tokens=r,this.sourceName=e??""}get column(){if(this.i<this.tokens.length)return this.tokens[this.i].column;if(this.eofToken!==null)return this.eofToken.column;if(this.tokens.length>0){let r=this.tokens[this.tokens.length-1],e=r.text;if(e){let t=e.lastIndexOf(`
|
|
105
105
|
`);if(t>=0)return e.length-t-1}return r.column+r.stop-r.start+1}return 0}nextToken(){if(this.i>=this.tokens.length){if(this.eofToken===null){let e=-1;if(this.tokens.length>0){let i=this.tokens[this.tokens.length-1].stop;i!==-1&&(e=i+1)}let t=Math.max(-1,e-1);this.eofToken=this.tokenFactory.create([this,this.inputStream],B.EOF,"EOF",B.DEFAULT_CHANNEL,e,t,this.line,this.column)}return this.eofToken}let r=this.tokens[this.i];return this.i===this.tokens.length-1&&r.type===B.EOF&&(this.eofToken=r),this.i++,r}get line(){if(this.i<this.tokens.length)return this.tokens[this.i].line;if(this.eofToken!==null)return this.eofToken.line;if(this.tokens.length>0){let r=this.tokens[this.tokens.length-1],e=r.line,t=r.text;if(t)for(let i of t)i===`
|
|
106
|
-
`&&e++;return e}return 1}get inputStream(){return this.i<this.tokens.length?this.tokens[this.i].inputStream:this.eofToken!==null?this.eofToken.inputStream:this.tokens.length>0?this.tokens[this.tokens.length-1].inputStream:null}getSourceName(){if(this.sourceName!==null)return this.sourceName;let r=this.inputStream;return r!==null?r.getSourceName():"List"}},gK=class extends h{static{k(this,"InterpreterRuleContext")}#e;constructor(r,e,t){super(e,t),this.#e=r}get ruleIndex(){return this.#e}},xK=class{static{k(this,"TraceListener")}parser;constructor(r){this.parser=r}enterEveryRule(r){console.log("enter "+this.parser.ruleNames[r.ruleIndex]+", LT(1)="+this.parser.inputStream?.LT(1)?.text)}visitTerminal(r){console.log("consume "+r.getSymbol()+" rule "+this.parser.ruleNames[this.parser.context.ruleIndex])}exitEveryRule(r){console.log("exit "+this.parser.ruleNames[r.ruleIndex]+", LT(1)="+this.parser.inputStream?.LT(1)?.text)}visitErrorNode(r){}},F9=class extends l_{static{k(this,"Parser")}printer=null;buildParseTrees=!0;errorHandler=new v_;context=null;precedenceStack=[];parseListeners=null;syntaxErrors=0;matchedEOF=!1;tracer=null;bypassAltsAtnCache=null;#e;constructor(r){super(),this.precedenceStack.push(0),this.syntaxErrors=0,this.#e=r}reset(r=!0){r&&this.inputStream.seek(0),this.errorHandler.reset(this),this.context=null,this.syntaxErrors=0,this.matchedEOF=!1,this.setTrace(!1),this.precedenceStack=[],this.precedenceStack.push(0),this.interpreter&&this.interpreter.reset()}match(r){let e=this.getCurrentToken();return e.type===r?(r===B.EOF&&(this.matchedEOF=!0),this.errorHandler.reportMatch(this),this.consume()):(e=this.errorHandler.recoverInline(this),this.buildParseTrees&&e.tokenIndex===-1&&this.context.addErrorNode(this.createErrorNode(this.context,e))),e}matchWildcard(){let r=this.getCurrentToken();return r.type>0?(this.errorHandler.reportMatch(this),this.consume()):(r=this.errorHandler.recoverInline(this),this.buildParseTrees&&r.tokenIndex===-1&&this.context.addErrorNode(this.createErrorNode(this.context,r))),r}getParseListeners(){return this.parseListeners??[]}addParseListener(r){if(r===null)throw new Error("listener");this.parseListeners===null&&(this.parseListeners=[]),this.parseListeners.push(r)}removeParseListener(r){if(this.parseListeners!==null&&r!==null){let e=this.parseListeners.indexOf(r);e>=0&&this.parseListeners.splice(e,1),this.parseListeners.length===0&&(this.parseListeners=null)}}removeParseListeners(){this.parseListeners=null}triggerEnterRuleEvent(){if(this.parseListeners!==null){let r=this.context;this.parseListeners.forEach(e=>{e.enterEveryRule(r),r.enterRule(e)})}}triggerExitRuleEvent(){if(this.parseListeners!==null){let r=this.context;this.parseListeners.slice(0).reverse().forEach(e=>{r.exitRule(e),e.exitEveryRule(r)})}}getTokenFactory(){return this.inputStream.tokenSource.tokenFactory}setTokenFactory(r){this.inputStream.tokenSource.tokenFactory=r}compileParseTreePattern(r,e,t){if(!t&&this.tokenStream!==null){let n=this.tokenStream.tokenSource;n instanceof wn&&(t=n)}if(!t)throw new Error("Parser can't discover a lexer to use");return new RK(t,this).compile(r,e)}getATNWithBypassAlts(){let r=this.serializedATN;if(r===null)throw new Error("The current parser does not support an ATN with bypass alternatives.");if(this.bypassAltsAtnCache!==null)return this.bypassAltsAtnCache;let e={readOnly:!1,verifyATN:!0,generateRuleBypassTransitions:!0};return this.bypassAltsAtnCache=new Ks(e).deserialize(r),this.bypassAltsAtnCache}get numberOfSyntaxErrors(){return this.syntaxErrors}get inputStream(){return this.#e}set inputStream(r){this.tokenStream=r}get tokenStream(){return this.#e}set tokenStream(r){this.reset(!1),this.#e=r}getCurrentToken(){return this.inputStream.LT(1)}notifyErrorListeners(r,e,t){e=e??null,t=t??null,e===null&&(e=this.getCurrentToken()),this.syntaxErrors+=1;let i=e.line,n=e.column;this.errorListenerDispatch.syntaxError(this,e,i,n,r,t)}consume(){let r=this.getCurrentToken();r.type!==B.EOF&&this.tokenStream.consume();let e=this.parseListeners!==null&&this.parseListeners.length>0;if(this.buildParseTrees||e){let t;this.errorHandler.inErrorRecoveryMode(this)?t=this.context.addErrorNode(this.createErrorNode(this.context,r)):t=this.context.addTokenNode(r),e&&this.parseListeners.forEach(i=>{t instanceof P1?i.visitErrorNode(t):i.visitTerminal(t)})}return r}addContextToParseTree(){this.context?.parent&&this.context.parent.addChild(this.context)}enterRule(r,e,t){this.state=e,this.context=r,this.context.start=this.inputStream.LT(1),this.buildParseTrees&&this.addContextToParseTree(),this.triggerEnterRuleEvent()}exitRule(){this.matchedEOF?this.context.stop=this.inputStream.LT(1):this.context.stop=this.inputStream.LT(-1),this.triggerExitRuleEvent(),this.state=this.context.invokingState,this.context=this.context.parent}enterOuterAlt(r,e){r.setAltNumber(e),this.buildParseTrees&&this.context!==r&&this.context?.parent&&(this.context.parent.removeLastChild(),this.context.parent.addChild(r)),this.context=r}getPrecedence(){return this.precedenceStack.length===0?-1:this.precedenceStack[this.precedenceStack.length-1]}enterRecursionRule(r,e,t,i){this.state=e,this.precedenceStack.push(i),this.context=r,this.context.start=this.inputStream.LT(1),this.triggerEnterRuleEvent()}pushNewRecursionContext(r,e,t){let i=this.context;i.parent=r,i.invokingState=e,i.stop=this.inputStream.LT(-1),this.context=r,this.context.start=i.start,this.buildParseTrees&&this.context.addChild(i),this.triggerEnterRuleEvent()}unrollRecursionContexts(r){this.precedenceStack.pop(),this.context.stop=this.inputStream.LT(-1);let e=this.context,t=this.getParseListeners();if(t!==null&&t.length>0)for(;this.context!==r;)this.triggerExitRuleEvent(),this.context=this.context.parent;else this.context=r;e.parent=r,this.buildParseTrees&&r!==null&&r.addChild(e)}getInvokingContext(r){let e=this.context;for(;e!==null;){if(e.ruleIndex===r)return e;e=e.parent}return null}precpred(r,e){return e>=this.precedenceStack[this.precedenceStack.length-1]}isExpectedToken(r){let e=this.interpreter.atn,t=this.context,i=e.states[this.state],n=e.nextTokens(i);if(n.contains(r))return!0;if(!n.contains(B.EPSILON))return!1;for(;t!==null&&t.invokingState>=0&&n.contains(B.EPSILON);){let o=e.states[t.invokingState].transitions[0];if(n=e.nextTokens(o.followState),n.contains(r))return!0;t=t.parent}return!!(n.contains(B.EPSILON)&&r===B.EOF)}getExpectedTokens(){return this.interpreter.atn.getExpectedTokens(this.state,this.context)}getExpectedTokensWithinCurrentRule(){let r=this.interpreter.atn,e=r.states[this.state];return r.nextTokens(e)}getRuleIndex(r){return this.getRuleIndexMap().get(r)??-1}getRuleInvocationStack(r){r=r??null,r===null&&(r=this.context);let e=[];for(;r!==null;){let t=r.ruleIndex;t<0?e.push("n/a"):e.push(this.ruleNames[t]),r=r.parent}return e}getDFAStrings(){return this.interpreter.decisionToDFA.toString()}dumpDFA(){let r=!1;for(let e of this.interpreter.decisionToDFA)e.length>0&&(r&&console.log(),this.printer&&(this.printer.println("Decision "+e.decision+":"),this.printer.print(e.toString(this.vocabulary))),r=!0)}getSourceName(){return this.inputStream.getSourceName()}getParseInfo(){let r=this.interpreter;if(r instanceof pg)return new eK(r)}setProfile(r){let e=this.interpreter,t=e.predictionMode;if(r)e instanceof pg||(this.interpreter=new pg(this));else if(e instanceof pg){let i=e.sharedContextCache;if(i){let n=new T1(this,this.atn,e.decisionToDFA,i);this.interpreter=n}}this.interpreter.predictionMode=t}setTrace(r){r?(this.tracer!==null&&this.removeParseListener(this.tracer),this.tracer=new xK(this),this.addParseListener(this.tracer)):(this.removeParseListener(this.tracer),this.tracer=null)}createTerminalNode(r,e){return new Ur(e)}createErrorNode(r,e){return new P1(e)}},bK=class extends F9{static{k(this,"ParserInterpreter")}rootContext;overrideDecisionRoot=null;parentContextStack=[];overrideDecisionAlt=-1;overrideDecisionReached=!1;decisionToDFA;sharedContextCache=new oa;pushRecursionContextStates;#e=-1;#t=-1;#i;#r;#n;#s;constructor(r,e,t,i,n){super(n),this.#i=r,this.#r=i,this.#n=t.slice(0),this.#s=e,this.pushRecursionContextStates=new Tn;for(let s of i.states)s instanceof Zs&&s.precedenceRuleDecision&&this.pushRecursionContextStates.set(s.stateNumber);this.decisionToDFA=i.decisionToState.map((s,o)=>new rs(s,o)),this.interpreter=new T1(this,i,this.decisionToDFA,this.sharedContextCache)}reset(){super.reset(),this.overrideDecisionReached=!1,this.overrideDecisionRoot=null}get atn(){return this.#r}get vocabulary(){return this.#s}get ruleNames(){return this.#n}get grammarFileName(){return this.#i}get atnState(){return this.#r.states[this.state]}parse(r){let e=this.#r.ruleToStartState[r];for(this.rootContext=this.createInterpreterRuleContext(null,fe.INVALID_STATE_NUMBER,r),e.isLeftRecursiveRule?this.enterRecursionRule(this.rootContext,e.stateNumber,r,0):this.enterRule(this.rootContext,e.stateNumber,r);;){let t=this.atnState;switch(t.constructor.stateType){case fe.RULE_STOP:{if(this.context?.isEmpty())if(e.isLeftRecursiveRule){let i=this.context,n=this.parentContextStack.pop();return this.unrollRecursionContexts(n[0]),i}else return this.exitRule(),this.rootContext;this.visitRuleStopState(t);break}default:{try{this.visitState(t)}catch(i){if(i instanceof p)this.state=this.#r.ruleToStopState[t.ruleIndex].stateNumber,this.errorHandler.reportError(this,i),this.recover(i);else throw i}break}}}}addDecisionOverride(r,e,t){this.#e=r,this.#t=e,this.overrideDecisionAlt=t}get overrideDecision(){return this.#e}get overrideDecisionInputIndex(){return this.#t}enterRecursionRule(r,e,t,i){this.parentContextStack.push([this.context,r.invokingState]),super.enterRecursionRule(r,e,t,i)}get serializedATN(){throw new Error("The ParserInterpreter does not support the serializedATN property.")}visitState(r){let e=1;r instanceof sa&&(e=this.visitDecisionState(r));let t=r.transitions[e-1];switch(t.transitionType){case se.EPSILON:if(this.pushRecursionContextStates.get(r.stateNumber)&&t.target.constructor.stateType!==fe.LOOP_END){let u=this.parentContextStack[this.parentContextStack.length-1],c=this.createInterpreterRuleContext(u[0],u[1],this.context.ruleIndex);this.pushNewRecursionContext(c,this.#r.ruleToStartState[r.ruleIndex].stateNumber,this.context.ruleIndex)}break;case se.ATOM:this.match(t.label.minElement);break;case se.RANGE:case se.SET:case se.NOT_SET:t.matches(this.inputStream.LA(1),B.MIN_USER_TOKEN_TYPE,65535)||this.recoverInline(),this.matchWildcard();break;case se.WILDCARD:this.matchWildcard();break;case se.RULE:let i=t.target,n=i.ruleIndex,s=this.createInterpreterRuleContext(this.context,r.stateNumber,n);i.isLeftRecursiveRule?this.enterRecursionRule(s,i.stateNumber,n,t.precedence):this.enterRule(s,t.target.stateNumber,n);break;case se.PREDICATE:let o=t;if(!this.sempred(this.context,o.ruleIndex,o.predIndex))throw new L1(this);break;case se.ACTION:let a=t;this.action(this.context,a.ruleIndex,a.actionIndex);break;case se.PRECEDENCE:if(!this.precpred(this.context,t.precedence)){let u=t.precedence;throw new L1(this,`precpred(_ctx, ${u})`)}break;default:throw new Error("UnsupportedOperationException: Unrecognized ATN transition type.")}this.state=t.target.stateNumber}visitDecisionState(r){let e=1;if(r.transitions.length>1){this.errorHandler.sync(this);let t=r.decision;t===this.#e&&this.inputStream.index===this.#t&&!this.overrideDecisionReached?(e=this.overrideDecisionAlt,this.overrideDecisionReached=!0):e=this.interpreter.adaptivePredict(this.inputStream,t,this.context)}return e}createInterpreterRuleContext(r,e,t){return new gK(t,r,e)}visitRuleStopState(r){if(this.#r.ruleToStartState[r.ruleIndex].isLeftRecursiveRule){let[i,n]=this.parentContextStack.pop();this.unrollRecursionContexts(i),this.state=n}else this.exitRule();let t=this.#r.states[this.state].transitions[0];this.state=t.followState.stateNumber}recover(r){let e=this.inputStream.index;if(this.errorHandler.recover(this,r),this.inputStream.index===e){let t=r.offendingToken;if(!t)throw new Error("Expected exception to have an offending token");let i=t.tokenSource,n=i?.inputStream??null,s=[i,n];if(r instanceof S1){let o=r.getExpectedTokens();if(!o)throw new Error("Expected the exception to provide expected tokens");let a=B.INVALID_TYPE;o.length!==0&&(a=o.minElement);let u=this.getTokenFactory().create(s,a,t.text,B.DEFAULT_CHANNEL,-1,-1,t.line,t.column);this.context.addErrorNode(this.createErrorNode(this.context,u))}else{let o=this.getTokenFactory().create(s,B.INVALID_TYPE,t.text,B.DEFAULT_CHANNEL,-1,-1,t.line,t.column);this.context.addErrorNode(this.createErrorNode(this.context,o))}}}recoverInline(){return this.errorHandler.recoverInline(this)}},MM=class extends Map{static{k(this,"MultiMap")}map(r,e){let t=this.get(r);t||(t=new Array,this.set(r,t)),t.push(e)}getPairs(){let r=new Array;for(let e of this.keys()){let t=this.get(e)??[];for(let i of t)r.push([e,i])}return r}toString(){let r=[];return this.forEach((e,t)=>{r.push(`${t}=[${e.join(", ")}]`)}),`{${r.join(", ")}}`}},yK=class extends Error{static{k(this,"CannotInvokeStartRuleError")}constructor(r){super(),this.cause=r}},_M=class{static{k(this,"RuleTagToken")}label;ruleName;bypassTokenType;constructor(r,e,t){this.ruleName=r,this.bypassTokenType=e,this.label=t}get channel(){return B.DEFAULT_CHANNEL}get text(){return this.label!==void 0?"<"+this.label+":"+this.ruleName+">":"<"+this.ruleName+">"}get type(){return this.bypassTokenType}get line(){return 0}get column(){return-1}get tokenIndex(){return-1}get start(){return-1}get stop(){return-1}get tokenSource(){return null}get inputStream(){return null}toString(){return this.ruleName+":"+this.bypassTokenType}},vK=class extends Error{static{k(this,"StartRuleDoesNotConsumeFullPatternError")}},NM=class extends y_{static{k(this,"TagChunk")}tag;label;constructor(...r){let e,t;if(r.length===1?t=r[0]:(e=r[0],t=r[1]),super(),!t)throw new Error("tag cannot be null or empty");this.label=e,this.tag=t}toString(){return this.label!==void 0?this.label+":"+this.tag:this.tag}},eu=class extends y_{static{k(this,"TextChunk")}text;constructor(r){super(),this.text=r}toString(){return"'"+this.text+"'"}},IM=class extends yg{static{k(this,"TokenTagToken")}tokenName;label;constructor(r,e,t){super({type:e,source:yg.EMPTY_SOURCE}),this.tokenName=r,this.label=t}get text(){return this.label!==void 0?"<"+this.label+":"+this.tokenName+">":"<"+this.tokenName+">"}toString(){return this.tokenName+":"+this.type}},RK=class{static{k(this,"ParseTreePatternMatcher")}start="<";stop=">";escape="\\";lexer;parser;constructor(r,e){this.lexer=r,this.parser=e}setDelimiters(r,e,t){if(r===null||r.length===0)throw new Error("start cannot be null or empty");if(e===null||e.length===0)throw new Error("stop cannot be null or empty");this.start=r,this.stop=e,this.escape=t}matches(...r){switch(r.length){case 2:{let[e,t]=r,i=new MM;return this.matchImpl(e,t.getPatternTree(),i)===null}case 3:{let[e,t,i]=r,n=this.compile(t,i);return this.matches(e,n)}default:throw new Error("Invalid number of arguments")}}match(...r){switch(r.length){case 2:{let[e,t]=r,i=new MM,n=this.matchImpl(e,t.getPatternTree(),i);return new dK(e,t,i,n)}case 3:{let[e,t,i]=r,n=this.compile(t,i);return this.match(e,n)}default:throw new Error("Invalid number of arguments")}}compile(r,e){let t=this.tokenize(r),i=new mK(t),n=new Cg(i),s=new bK(this.parser.grammarFileName,this.parser.vocabulary,this.parser.ruleNames,this.parser.getATNWithBypassAlts(),n);s.removeErrorListeners();let o=null;try{s.errorHandler=new fK,o=s.parse(e)}catch(a){throw a instanceof N9?a.cause:a instanceof p?a:a instanceof Error?new yK(a):a}if(n.LA(1)!==B.EOF)throw new vK;return new hK(this,r,e,o)}getLexer(){return this.lexer}getParser(){return this.parser}tokenize(r){let e=this.split(r),t=new Array;for(let i of e)if(i instanceof NM){let n=i,s=n.tag[0];if(s===s.toUpperCase()){let o=this.parser.getTokenType(n.tag);if(o===B.INVALID_TYPE)throw new Error("Unknown token "+n.tag+" in pattern: "+r);let a=new IM(n.tag,o,n.label);t.push(a)}else if(s===s.toLowerCase()){let o=this.parser.getRuleIndex(n.tag);if(o===-1)throw new Error("Unknown rule "+n.tag+" in pattern: "+r);let a=this.parser.getATNWithBypassAlts().ruleToTokenType[o];t.push(new _M(n.tag,a,n.label))}else throw new Error("invalid tag: "+n.tag+" in pattern: "+r)}else{let n=i,s=au.fromString(n.text);this.lexer.inputStream=s;let o=this.lexer.nextToken();for(;o.type!==B.EOF;)t.push(o),o=this.lexer.nextToken()}return t}split(r){let e=0,t=r.length,i=new Array,n=new Array,s=new Array;for(;e<t;)e===r.indexOf(this.escape+this.start,e)?e+=this.escape.length+this.start.length:e===r.indexOf(this.escape+this.stop,e)?e+=this.escape.length+this.stop.length:e===r.indexOf(this.start,e)?(n.push(e),e+=this.start.length):e===r.indexOf(this.stop,e)?(s.push(e),e+=this.stop.length):e++;if(n.length>s.length)throw new Error("unterminated tag in pattern: "+r);if(n.length<s.length)throw new Error("missing start tag in pattern: "+r);let o=n.length;for(let a=0;a<o;a++)if(n[a]>=s[a])throw new Error("tag delimiters out of order in pattern: "+r);if(o===0){let a=r.substring(0,t);i.push(new eu(a))}if(o>0&&n[0]>0){let a=r.substring(0,n[0]);i.push(new eu(a))}for(let a=0;a<o;a++){let u=r.substring(n[a]+this.start.length,s[a]),c=u,d,f=u.indexOf(":");if(f>=0&&(d=u.substring(0,f),c=u.substring(f+1,u.length)),i.push(new NM(d,c)),a+1<o){let x=r.substring(s[a]+this.stop.length,n[a+1]);i.push(new eu(x))}}if(o>0){let a=s[o-1]+this.stop.length;if(a<t){let u=r.substring(a,t);i.push(new eu(u))}}for(let a=0;a<i.length;a++){let u=i[a];if(u instanceof eu){let c=u,d=c.text.replaceAll(this.escape,"");d.length<c.text.length&&(i[a]=new eu(d))}}return i}matchImpl(r,e,t){if(r instanceof Ur&&e instanceof Ur){let i=r,n=e,s;if(i.getSymbol().type===n.getSymbol().type)if(n.getSymbol()instanceof IM){let o=n.getSymbol();t.map(o.tokenName,r),o.label!==void 0&&t.map(o.label,r)}else i.getText()===n.getText()||s||(s=i);else s||(s=i);return s}if(r instanceof h&&e instanceof h){let i,n=this.getRuleTagToken(e);if(n)return r.ruleIndex===e.ruleIndex?(t.map(n.ruleName,r),n.label&&t.map(n.label,r)):i||(i=r),i;if(r.getChildCount()!==e.getChildCount())return i||(i=r),i;let s=r.getChildCount();for(let o=0;o<s;o++){let a=this.matchImpl(r.getChild(o),e.getChild(o),t);if(a)return a}return i}return r}getRuleTagToken(r){if(r instanceof h&&r.getChildCount()===1&&r.getChild(0)instanceof Ur){let e=r.getChild(0);if(e.getSymbol()instanceof _M)return e.getSymbol()}}},Rae=class extends lu{static{k(this,"DiagnosticErrorListener")}exactOnly;constructor(r){super(),this.exactOnly=r??!0}reportAmbiguity=k((r,e,t,i,n,s,o)=>{if(this.exactOnly&&!n)return;let a=this.getDecisionDescription(r,e),u=this.getConflictingAlts(s,o),c=r.tokenStream?.getTextFromInterval(it.of(t,i)),d=`reportAmbiguity d=${a}: ambigAlts=${u}, input='${c}'`;r.notifyErrorListeners(d,null,null)},"reportAmbiguity");reportAttemptingFullContext=k((r,e,t,i,n,s)=>{let o=this.getDecisionDescription(r,e),a=r.tokenStream?.getTextFromInterval(it.of(t,i)),u=`reportAttemptingFullContext d=${o}, input='${a}'`;r.notifyErrorListeners(u,null,null)},"reportAttemptingFullContext");reportContextSensitivity=k((r,e,t,i,n,s)=>{let o=this.getDecisionDescription(r,e),a=r.tokenStream?.getTextFromInterval(it.of(t,i)),u=`reportContextSensitivity d=${o}, input='${a}'`;r.notifyErrorListeners(u,null,null)},"reportContextSensitivity");getDecisionDescription=k((r,e)=>{let t=e.decision,i=e.atnStartState.ruleIndex,n=r.ruleNames;if(i<0||i>=n.length)return t.toString();let s=n[i];return s.length===0?t.toString():`${t} (${s})`},"getDecisionDescription");getConflictingAlts=k((r,e)=>{if(r)return r;let t=new Tn;for(let i=0;i<e.configs.length;i++)t.set(e.configs[i].alt);return t},"getConflictingAlts")},Cae=class extends wn{static{k(this,"LexerInterpreter")}decisionToDFA;sharedContextCache=new oa;#e;#t;#i;#r;#n;#s;constructor(r,e,t,i,n,s,o){if(super(o),s.grammarType!==Ce.LEXER)throw new Error("IllegalArgumentException: The ATN must be a lexer ATN.");this.#e=r,this.#t=s,this.#i=t.slice(0),this.#r=i.slice(0),this.#n=n.slice(0),this.#s=e,this.decisionToDFA=s.decisionToState.map((a,u)=>new rs(a,u)),this.interpreter=new ou(this,s,this.decisionToDFA,this.sharedContextCache)}get atn(){return this.#t}get grammarFileName(){return this.#e}get ruleNames(){return this.#i}get channelNames(){return this.#r}get modeNames(){return this.#n}get vocabulary(){return this.#s}get serializedATN(){throw new Error("The LexerInterpreter does not support the serializedATN property.")}},Eae=class ea{static{k(this,"RuntimeMetaData")}static VERSION="4.13.1";static getRuntimeVersion(){return ea.VERSION}static checkVersion(e,t){let i=ea.VERSION,n=!1,s=!1;n=i!==e&&ea.getMajorMinorVersion(i)!==ea.getMajorMinorVersion(e),s=i!==t&&ea.getMajorMinorVersion(i)!==ea.getMajorMinorVersion(t),n&&console.error(`ANTLR Tool version ${e} used for code generation does not match the current runtime version ${i}`),s&&console.error(`ANTLR Runtime version ${t} used for parser compilation does not match the current runtime version ${i}`)}static getMajorMinorVersion(e){let t=e.indexOf("."),i=t>=0?e.indexOf(".",t+1):-1,n=e.indexOf("-"),s=e.length;return i>=0&&(s=Math.min(s,i)),n>=0&&(s=Math.min(s,n)),e.substring(0,s)}},Sae=class ta{static{k(this,"TokenStreamRewriter")}static DEFAULT_PROGRAM_NAME="default";static PROGRAM_INIT_SIZE=100;static MIN_TOKEN_INDEX=0;tokens;programs=new Map;lastRewriteTokenIndexes;constructor(e){this.tokens=e}getTokenStream(){return this.tokens}insertAfter(e,t,i=ta.DEFAULT_PROGRAM_NAME){let n;typeof e=="number"?n=e:n=e.tokenIndex;let s=this.getProgram(i),o=new UM(this.tokens,n,s.length,t);s.push(o)}insertBefore(e,t,i=ta.DEFAULT_PROGRAM_NAME){let n;typeof e=="number"?n=e:n=e.tokenIndex;let s=this.getProgram(i),o=new ru(this.tokens,n,s.length,t);s.push(o)}replaceSingle(e,t,i=ta.DEFAULT_PROGRAM_NAME){this.replace(e,e,t,i)}replace(e,t,i,n=ta.DEFAULT_PROGRAM_NAME){if(typeof e!="number"&&(e=e.tokenIndex),typeof t!="number"&&(t=t.tokenIndex),e>t||e<0||t<0||t>=this.tokens.size)throw new RangeError(`replace: range invalid: ${e}..${t}(size=${this.tokens.size})`);let s=this.getProgram(n),o=new fg(this.tokens,e,t,s.length,i);s.push(o)}delete(e,t,i=ta.DEFAULT_PROGRAM_NAME){t==null&&(t=e),this.replace(e,t,null,i)}getProgram(e){let t=this.programs.get(e);return t==null&&(t=this.initializeProgram(e)),t}initializeProgram(e){let t=[];return this.programs.set(e,t),t}getText(e,t=ta.DEFAULT_PROGRAM_NAME){let i;e instanceof it?i=e:i=new it(0,this.tokens.size-1),typeof e=="string"&&(t=e);let n=this.programs.get(t),s=i.start,o=i.stop;if(o>this.tokens.size-1&&(o=this.tokens.size-1),s<0&&(s=0),n==null||n.length===0)return this.tokens.getTextFromInterval(new it(s,o));let a=[],u=this.reduceToSingleOperationPerIndex(n),c=s;for(;c<=o&&c<this.tokens.size;){let d=u.get(c);u.delete(c);let f=this.tokens.get(c);d==null?(f.type!==B.EOF&&a.push(String(f.text)),c++):c=d.execute(a)}if(o===this.tokens.size-1)for(let d of u.values())d&&d.index>=this.tokens.size-1&&a.push(String(d.text));return a.join("")}reduceToSingleOperationPerIndex(e){for(let i=0;i<e.length;i++){let n=e[i];if(n==null||!(n instanceof fg))continue;let s=n,o=this.getKindOfOps(e,ru,i);for(let u of o)u.index===s.index?(e[u.instructionIndex]=null,s.text=String(u.text)+(s.text!=null?s.text.toString():"")):u.index>s.index&&u.index<=s.lastIndex&&(e[u.instructionIndex]=null);let a=this.getKindOfOps(e,fg,i);for(let u of a){if(u.index>=s.index&&u.lastIndex<=s.lastIndex){e[u.instructionIndex]=null;continue}let c=u.lastIndex<s.index||u.index>s.lastIndex;if(u.text==null&&s.text==null&&!c)e[u.instructionIndex]=null,s.index=Math.min(u.index,s.index),s.lastIndex=Math.max(u.lastIndex,s.lastIndex);else if(!c)throw new Error(`replace op boundaries of ${s} overlap with previous ${u}`)}}for(let i=0;i<e.length;i++){let n=e[i];if(n==null||!(n instanceof ru))continue;let s=n,o=this.getKindOfOps(e,ru,i);for(let u of o)u.index===s.index&&(u instanceof UM?(s.text=this.catOpText(u.text,s.text),e[u.instructionIndex]=null):u instanceof ru&&(s.text=this.catOpText(s.text,u.text),e[u.instructionIndex]=null));let a=this.getKindOfOps(e,fg,i);for(let u of a){if(s.index===u.index){u.text=this.catOpText(s.text,u.text),e[i]=null;continue}if(s.index>=u.index&&s.index<=u.lastIndex)throw new Error(`insert op ${s} within boundaries of previous ${u}`)}}let t=new Map;for(let i of e)if(i!=null){if(t.get(i.index)!=null)throw new Error("should only be one op per index");t.set(i.index,i)}return t}catOpText(e,t){let i="",n="";return e!=null&&(i=e.toString()),t!=null&&(n=t.toString()),i+n}getKindOfOps(e,t,i){return e.slice(0,i).filter(n=>n&&n instanceof t)}},R_=class{static{k(this,"RewriteOperation")}instructionIndex;index;text;tokens;constructor(r,e,t,i){this.tokens=r,this.instructionIndex=t,this.index=e,this.text=i===void 0?"":i}execute(r){return this.index}toString(){return"<RewriteOperation@"+this.tokens.get(this.index)+':"'+this.text+'">'}},ru=class extends R_{static{k(this,"InsertBeforeOp")}constructor(r,e,t,i){super(r,e,t,i)}execute(r){return this.text&&r.push(this.text.toString()),this.tokens.get(this.index).type!==B.EOF&&r.push(String(this.tokens.get(this.index).text)),this.index+1}toString(){return"<InsertBeforeOp@"+this.tokens.get(this.index)+':"'+this.text+'">'}},UM=class extends ru{static{k(this,"InsertAfterOp")}constructor(r,e,t,i){super(r,e+1,t,i)}toString(){return"<InsertAfterOp@"+this.tokens.get(this.index)+':"'+this.text+'">'}},fg=class extends R_{static{k(this,"ReplaceOp")}lastIndex;constructor(r,e,t,i,n){super(r,e,i,n),this.lastIndex=t}execute(r){return this.text&&r.push(this.text.toString()),this.lastIndex+1}toString(){return this.text==null?"<DeleteOp@"+this.tokens.get(this.index)+".."+this.tokens.get(this.lastIndex)+">":"<ReplaceOp@"+this.tokens.get(this.index)+".."+this.tokens.get(this.lastIndex)+':"'+this.text+'">'}},Pae=class{static{k(this,"UnbufferedTokenStream")}tokenSource;tokens;n;p=0;numMarkers=0;lastToken;lastTokenBufferStart;currentTokenIndex=0;constructor(r,e){this.tokenSource=r,e=e??256,this.tokens=new Array(e),this.n=0,this.fill(1)}get(r){let e=this.getBufferStartIndex();if(r<e||r>=e+this.n)throw new Error("get("+r+") outside buffer: "+e+".."+(e+this.n));return this.tokens[r-e]}LT(r){if(r===-1)return this.lastToken;this.sync(r);let e=this.p+r-1;if(e<0)throw new Error("LT("+r+") gives negative index");return e>=this.n?this.tokens[this.n-1]:this.tokens[e]}LA(r){return this.LT(r).type}getText(){return""}getTextFromContext(r){return this.getTextFromInterval(r.getSourceInterval())}getTextFromInterval(r){let e=this.getBufferStartIndex(),t=e+this.tokens.length-1,i=r.start,n=r.stop;if(i<e||n>t)throw new Error("interval "+r+" not in token buffer window: "+e+".."+t);let s=i-e,o=n-e,a="";for(let u=s;u<=o;u++){let c=this.tokens[u];a+=c.text}return a}getTextFromRange(r,e){return this.getTextFromInterval(it.of(r.tokenIndex,e.tokenIndex))}consume(){if(this.LA(1)===B.EOF)throw new Error("cannot consume EOF");this.lastToken=this.tokens[this.p],this.p===this.n-1&&this.numMarkers===0&&(this.n=0,this.p=-1,this.lastTokenBufferStart=this.lastToken),this.p++,this.currentTokenIndex++,this.sync(1)}mark(){this.numMarkers===0&&(this.lastTokenBufferStart=this.lastToken);let r=-this.numMarkers-1;return this.numMarkers++,r}release(r){let e=-this.numMarkers;if(r!==e)throw new Error("release() called with an invalid marker.");this.numMarkers--,this.numMarkers===0&&(this.p>0&&(this.tokens.copyWithin(0,this.p,this.n),this.n=this.n-this.p,this.p=0),this.lastTokenBufferStart=this.lastToken)}get index(){return this.currentTokenIndex}seek(r){if(r===this.currentTokenIndex)return;r>this.currentTokenIndex&&(this.sync(r-this.currentTokenIndex),r=Math.min(r,this.getBufferStartIndex()+this.n-1));let e=this.getBufferStartIndex(),t=r-e;if(t<0)throw new Error("cannot seek to negative index "+r);if(t>=this.n)throw new Error("seek to index outside buffer: "+r+" not in "+e+".."+(e+this.n));this.p=t,this.currentTokenIndex=r,this.p===0?this.lastToken=this.lastTokenBufferStart:this.lastToken=this.tokens[this.p-1]}get size(){throw new Error("Unbuffered stream cannot know its size")}getSourceName(){return this.tokenSource.sourceName}setLine(r){this.tokenSource.line=r}setColumn(r){this.tokenSource.column=r}sync(r){let e=this.p+r-1-this.n+1;e>0&&this.fill(e)}fill(r){for(let e=0;e<r;e++){if(this.n>0&&this.tokens[this.n-1].type===B.EOF)return e;let t=this.tokenSource.nextToken();this.add(t)}return r}add(r){this.n>=this.tokens.length&&(this.tokens.length=this.tokens.length*2),x_(r)&&r.setTokenIndex(this.getBufferStartIndex()+this.n),this.tokens[this.n++]=r}getBufferStartIndex(){return this.currentTokenIndex-this.p}};var Eg=class r extends wn{static ABOUT=1;static ABSTRACT=2;static ACCEPT=3;static ACTION=4;static ACTOR=5;static AFTER=6;static ALIAS=7;static ALL=8;static ALLOCATE=9;static ALLOCATION=10;static ANALYSIS=11;static AND=12;static AS=13;static ASSERT=14;static ASSIGN=15;static ASSOC=16;static ASSUME=17;static AT=18;static ATTRIBUTE=19;static BEHAVIOR=20;static BIND=21;static BINDING=22;static BOOL=23;static BY=24;static CALC=25;static CASE=26;static CHAINS=27;static CLASS=28;static CLASSIFIER=29;static COMMENT=30;static COMPOSITE=31;static CONCERN=32;static CONJUGATE=33;static CONJUGATES=34;static CONJUGATION=35;static CONNECT=36;static CONNECTION=37;static CONNECTOR=38;static CONST=39;static CONSTANT=40;static CONSTRAINT=41;static CROSSES=42;static DATATYPE=43;static DECIDE=44;static DEF=45;static DEFAULT=46;static DEFINED=47;static DEPENDENCY=48;static DERIVED=49;static DIFFERENCES=50;static DISJOINING=51;static DISJOINT=52;static DO=53;static DOC=54;static ELSE=55;static END=56;static ENTRY=57;static ENUM=58;static EVENT=59;static EXHIBIT=60;static EXIT=61;static EXPOSE=62;static EXPR=63;static FALSE=64;static FEATURE=65;static FEATURED=66;static FEATURING=67;static FILTER=68;static FIRST=69;static FLOW=70;static FOR=71;static FORK=72;static FRAME=73;static FROM=74;static FUNCTION=75;static HASTYPE=76;static IF=77;static IMPLIES=78;static IMPORT=79;static IN=80;static INCLUDE=81;static INDIVIDUAL=82;static INOUT=83;static INTERACTION=84;static INTERFACE=85;static INTERSECTS=86;static INV=87;static INVERSE=88;static INVERTING=89;static ISTYPE=90;static ITEM=91;static JOIN=92;static LANGUAGE=93;static LIBRARY=94;static LOCALE=95;static LOOP=96;static MEMBER=97;static MERGE=98;static MESSAGE=99;static META=100;static METACLASS=101;static METADATA=102;static MULTIPLICITY=103;static NAMESPACE=104;static NEW=105;static NONUNIQUE=106;static NOT=107;static NULL=108;static OBJECTIVE=109;static OCCURRENCE=110;static OF=111;static OR=112;static ORDERED=113;static OUT=114;static PACKAGE=115;static PARALLEL=116;static PART=117;static PERFORM=118;static PORT=119;static PORTION=120;static PREDICATE=121;static PRIVATE=122;static PROTECTED=123;static PUBLIC=124;static REDEFINES=125;static REDEFINITION=126;static REF=127;static REFERENCES=128;static RENDER=129;static RENDERING=130;static REP=131;static REQUIRE=132;static REQUIREMENT=133;static RETURN=134;static SATISFY=135;static SEND=136;static SNAPSHOT=137;static SPECIALIZATION=138;static SPECIALIZES=139;static STAKEHOLDER=140;static STANDARD=141;static STATE=142;static STEP=143;static STRUCT=144;static SUBCLASSIFIER=145;static SUBJECT=146;static SUBSET=147;static SUBSETS=148;static SUBTYPE=149;static SUCCESSION=150;static TERMINATE=151;static THEN=152;static TIMESLICE=153;static TO=154;static TRANSITION=155;static TRUE=156;static TYPE=157;static TYPED=158;static TYPING=159;static UNIONS=160;static UNTIL=161;static USE=162;static VAR=163;static VARIANT=164;static VARIATION=165;static VERIFICATION=166;static VERIFY=167;static VIA=168;static VIEW=169;static VIEWPOINT=170;static WHEN=171;static WHILE=172;static XOR=173;static BANG_EQ_EQ=174;static COLON_COLON_GT=175;static COLON_GT_GT=176;static EQ_EQ_EQ=177;static BANG_EQ=178;static STAR_STAR=179;static ARROW=180;static DOT_DOT=181;static DOT_QUESTION=182;static COLON_COLON=183;static COLON_EQ=184;static COLON_GT=185;static LE=186;static EQ_EQ=187;static FAT_ARROW=188;static GE=189;static QUESTION_QUESTION=190;static AT_AT=191;static HASH=192;static DOLLAR=193;static PERCENT=194;static AMP=195;static LPAREN=196;static RPAREN=197;static STAR=198;static PLUS=199;static COMMA=200;static MINUS=201;static DOT=202;static SLASH=203;static COLON=204;static SEMI=205;static LT=206;static EQ=207;static GT=208;static QUESTION=209;static AT_SIGN=210;static LBRACK=211;static RBRACK=212;static CARET=213;static LBRACE=214;static PIPE=215;static RBRACE=216;static TILDE=217;static IDENTIFIER=218;static STRING=219;static DOUBLE_STRING=220;static INTEGER=221;static REAL=222;static REGULAR_COMMENT=223;static SINGLE_LINE_NOTE=224;static WS=225;static channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"];static literalNames=[null,"'about'","'abstract'","'accept'","'action'","'actor'","'after'","'alias'","'all'","'allocate'","'allocation'","'analysis'","'and'","'as'","'assert'","'assign'","'assoc'","'assume'","'at'","'attribute'","'behavior'","'bind'","'binding'","'bool'","'by'","'calc'","'case'","'chains'","'class'","'classifier'","'comment'","'composite'","'concern'","'conjugate'","'conjugates'","'conjugation'","'connect'","'connection'","'connector'","'const'","'constant'","'constraint'","'crosses'","'datatype'","'decide'","'def'","'default'","'defined'","'dependency'","'derived'","'differences'","'disjoining'","'disjoint'","'do'","'doc'","'else'","'end'","'entry'","'enum'","'event'","'exhibit'","'exit'","'expose'","'expr'","'false'","'feature'","'featured'","'featuring'","'filter'","'first'","'flow'","'for'","'fork'","'frame'","'from'","'function'","'hastype'","'if'","'implies'","'import'","'in'","'include'","'individual'","'inout'","'interaction'","'interface'","'intersects'","'inv'","'inverse'","'inverting'","'istype'","'item'","'join'","'language'","'library'","'locale'","'loop'","'member'","'merge'","'message'","'meta'","'metaclass'","'metadata'","'multiplicity'","'namespace'","'new'","'nonunique'","'not'","'null'","'objective'","'occurrence'","'of'","'or'","'ordered'","'out'","'package'","'parallel'","'part'","'perform'","'port'","'portion'","'predicate'","'private'","'protected'","'public'","'redefines'","'redefinition'","'ref'","'references'","'render'","'rendering'","'rep'","'require'","'requirement'","'return'","'satisfy'","'send'","'snapshot'","'specialization'","'specializes'","'stakeholder'","'standard'","'state'","'step'","'struct'","'subclassifier'","'subject'","'subset'","'subsets'","'subtype'","'succession'","'terminate'","'then'","'timeslice'","'to'","'transition'","'true'","'type'","'typed'","'typing'","'unions'","'until'","'use'","'var'","'variant'","'variation'","'verification'","'verify'","'via'","'view'","'viewpoint'","'when'","'while'","'xor'","'!=='","'::>'","':>>'","'==='","'!='","'**'","'->'","'..'","'.?'","'::'","':='","':>'","'<='","'=='","'=>'","'>='","'??'","'@@'","'#'","'$'","'%'","'&'","'('","')'","'*'","'+'","','","'-'","'.'","'/'","':'","';'","'<'","'='","'>'","'?'","'@'","'['","']'","'^'","'{'","'|'","'}'","'~'"];static symbolicNames=[null,"ABOUT","ABSTRACT","ACCEPT","ACTION","ACTOR","AFTER","ALIAS","ALL","ALLOCATE","ALLOCATION","ANALYSIS","AND","AS","ASSERT","ASSIGN","ASSOC","ASSUME","AT","ATTRIBUTE","BEHAVIOR","BIND","BINDING","BOOL","BY","CALC","CASE","CHAINS","CLASS","CLASSIFIER","COMMENT","COMPOSITE","CONCERN","CONJUGATE","CONJUGATES","CONJUGATION","CONNECT","CONNECTION","CONNECTOR","CONST","CONSTANT","CONSTRAINT","CROSSES","DATATYPE","DECIDE","DEF","DEFAULT","DEFINED","DEPENDENCY","DERIVED","DIFFERENCES","DISJOINING","DISJOINT","DO","DOC","ELSE","END","ENTRY","ENUM","EVENT","EXHIBIT","EXIT","EXPOSE","EXPR","FALSE","FEATURE","FEATURED","FEATURING","FILTER","FIRST","FLOW","FOR","FORK","FRAME","FROM","FUNCTION","HASTYPE","IF","IMPLIES","IMPORT","IN","INCLUDE","INDIVIDUAL","INOUT","INTERACTION","INTERFACE","INTERSECTS","INV","INVERSE","INVERTING","ISTYPE","ITEM","JOIN","LANGUAGE","LIBRARY","LOCALE","LOOP","MEMBER","MERGE","MESSAGE","META","METACLASS","METADATA","MULTIPLICITY","NAMESPACE","NEW","NONUNIQUE","NOT","NULL","OBJECTIVE","OCCURRENCE","OF","OR","ORDERED","OUT","PACKAGE","PARALLEL","PART","PERFORM","PORT","PORTION","PREDICATE","PRIVATE","PROTECTED","PUBLIC","REDEFINES","REDEFINITION","REF","REFERENCES","RENDER","RENDERING","REP","REQUIRE","REQUIREMENT","RETURN","SATISFY","SEND","SNAPSHOT","SPECIALIZATION","SPECIALIZES","STAKEHOLDER","STANDARD","STATE","STEP","STRUCT","SUBCLASSIFIER","SUBJECT","SUBSET","SUBSETS","SUBTYPE","SUCCESSION","TERMINATE","THEN","TIMESLICE","TO","TRANSITION","TRUE","TYPE","TYPED","TYPING","UNIONS","UNTIL","USE","VAR","VARIANT","VARIATION","VERIFICATION","VERIFY","VIA","VIEW","VIEWPOINT","WHEN","WHILE","XOR","BANG_EQ_EQ","COLON_COLON_GT","COLON_GT_GT","EQ_EQ_EQ","BANG_EQ","STAR_STAR","ARROW","DOT_DOT","DOT_QUESTION","COLON_COLON","COLON_EQ","COLON_GT","LE","EQ_EQ","FAT_ARROW","GE","QUESTION_QUESTION","AT_AT","HASH","DOLLAR","PERCENT","AMP","LPAREN","RPAREN","STAR","PLUS","COMMA","MINUS","DOT","SLASH","COLON","SEMI","LT","EQ","GT","QUESTION","AT_SIGN","LBRACK","RBRACK","CARET","LBRACE","PIPE","RBRACE","TILDE","IDENTIFIER","STRING","DOUBLE_STRING","INTEGER","REAL","REGULAR_COMMENT","SINGLE_LINE_NOTE","WS"];static modeNames=["DEFAULT_MODE"];static ruleNames=["ABOUT","ABSTRACT","ACCEPT","ACTION","ACTOR","AFTER","ALIAS","ALL","ALLOCATE","ALLOCATION","ANALYSIS","AND","AS","ASSERT","ASSIGN","ASSOC","ASSUME","AT","ATTRIBUTE","BEHAVIOR","BIND","BINDING","BOOL","BY","CALC","CASE","CHAINS","CLASS","CLASSIFIER","COMMENT","COMPOSITE","CONCERN","CONJUGATE","CONJUGATES","CONJUGATION","CONNECT","CONNECTION","CONNECTOR","CONST","CONSTANT","CONSTRAINT","CROSSES","DATATYPE","DECIDE","DEF","DEFAULT","DEFINED","DEPENDENCY","DERIVED","DIFFERENCES","DISJOINING","DISJOINT","DO","DOC","ELSE","END","ENTRY","ENUM","EVENT","EXHIBIT","EXIT","EXPOSE","EXPR","FALSE","FEATURE","FEATURED","FEATURING","FILTER","FIRST","FLOW","FOR","FORK","FRAME","FROM","FUNCTION","HASTYPE","IF","IMPLIES","IMPORT","IN","INCLUDE","INDIVIDUAL","INOUT","INTERACTION","INTERFACE","INTERSECTS","INV","INVERSE","INVERTING","ISTYPE","ITEM","JOIN","LANGUAGE","LIBRARY","LOCALE","LOOP","MEMBER","MERGE","MESSAGE","META","METACLASS","METADATA","MULTIPLICITY","NAMESPACE","NEW","NONUNIQUE","NOT","NULL","OBJECTIVE","OCCURRENCE","OF","OR","ORDERED","OUT","PACKAGE","PARALLEL","PART","PERFORM","PORT","PORTION","PREDICATE","PRIVATE","PROTECTED","PUBLIC","REDEFINES","REDEFINITION","REF","REFERENCES","RENDER","RENDERING","REP","REQUIRE","REQUIREMENT","RETURN","SATISFY","SEND","SNAPSHOT","SPECIALIZATION","SPECIALIZES","STAKEHOLDER","STANDARD","STATE","STEP","STRUCT","SUBCLASSIFIER","SUBJECT","SUBSET","SUBSETS","SUBTYPE","SUCCESSION","TERMINATE","THEN","TIMESLICE","TO","TRANSITION","TRUE","TYPE","TYPED","TYPING","UNIONS","UNTIL","USE","VAR","VARIANT","VARIATION","VERIFICATION","VERIFY","VIA","VIEW","VIEWPOINT","WHEN","WHILE","XOR","BANG_EQ_EQ","COLON_COLON_GT","COLON_GT_GT","EQ_EQ_EQ","BANG_EQ","STAR_STAR","ARROW","DOT_DOT","DOT_QUESTION","COLON_COLON","COLON_EQ","COLON_GT","LE","EQ_EQ","FAT_ARROW","GE","QUESTION_QUESTION","AT_AT","HASH","DOLLAR","PERCENT","AMP","LPAREN","RPAREN","STAR","PLUS","COMMA","MINUS","DOT","SLASH","COLON","SEMI","LT","EQ","GT","QUESTION","AT_SIGN","LBRACK","RBRACK","CARET","LBRACE","PIPE","RBRACE","TILDE","IDENTIFIER","STRING","DOUBLE_STRING","INTEGER","REAL","REGULAR_COMMENT","SINGLE_LINE_NOTE","WS"];constructor(e){super(e),this.interpreter=new ou(this,r._ATN,r.decisionsToDFA,new oa)}get grammarFileName(){return"SysMLv2Lexer.g4"}get literalNames(){return r.literalNames}get symbolicNames(){return r.symbolicNames}get ruleNames(){return r.ruleNames}get serializedATN(){return r._serializedATN}get channelNames(){return r.channelNames}get modeNames(){return r.modeNames}static _serializedATN=[4,0,225,1950,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,178,1,178,1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,181,1,181,1,181,1,182,1,182,1,182,1,183,1,183,1,183,1,184,1,184,1,184,1,185,1,185,1,185,1,186,1,186,1,186,1,187,1,187,1,187,1,188,1,188,1,188,1,189,1,189,1,189,1,190,1,190,1,190,1,191,1,191,1,192,1,192,1,193,1,193,1,194,1,194,1,195,1,195,1,196,1,196,1,197,1,197,1,198,1,198,1,199,1,199,1,200,1,200,1,201,1,201,1,202,1,202,1,203,1,203,1,204,1,204,1,205,1,205,1,206,1,206,1,207,1,207,1,208,1,208,1,209,1,209,1,210,1,210,1,211,1,211,1,212,1,212,1,213,1,213,1,214,1,214,1,215,1,215,1,216,1,216,1,217,1,217,5,217,1850,8,217,10,217,12,217,1853,9,217,1,218,1,218,1,218,1,218,5,218,1859,8,218,10,218,12,218,1862,9,218,1,218,1,218,1,219,1,219,1,219,1,219,5,219,1870,8,219,10,219,12,219,1873,9,219,1,219,1,219,1,220,4,220,1878,8,220,11,220,12,220,1879,1,221,5,221,1883,8,221,10,221,12,221,1886,9,221,1,221,1,221,4,221,1890,8,221,11,221,12,221,1891,1,221,1,221,3,221,1896,8,221,1,221,4,221,1899,8,221,11,221,12,221,1900,3,221,1903,8,221,1,221,4,221,1906,8,221,11,221,12,221,1907,1,221,1,221,3,221,1912,8,221,1,221,4,221,1915,8,221,11,221,12,221,1916,3,221,1919,8,221,1,222,1,222,1,222,1,222,5,222,1925,8,222,10,222,12,222,1928,9,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,5,223,1937,8,223,10,223,12,223,1940,9,223,1,223,1,223,1,224,4,224,1945,8,224,11,224,12,224,1946,1,224,1,224,1,1926,0,225,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223,112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239,120,241,121,243,122,245,123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271,136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287,144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303,152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319,160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335,168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351,176,353,177,355,178,357,179,359,180,361,181,363,182,365,183,367,184,369,185,371,186,373,187,375,188,377,189,379,190,381,191,383,192,385,193,387,194,389,195,391,196,393,197,395,198,397,199,399,200,401,201,403,202,405,203,407,204,409,205,411,206,413,207,415,208,417,209,419,210,421,211,423,212,425,213,427,214,429,215,431,216,433,217,435,218,437,219,439,220,441,221,443,222,445,223,447,224,449,225,1,0,9,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122,2,0,39,39,92,92,2,0,34,34,92,92,1,0,48,57,2,0,69,69,101,101,2,0,43,43,45,45,2,0,10,10,13,13,3,0,9,10,13,13,32,32,1967,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,1,451,1,0,0,0,3,457,1,0,0,0,5,466,1,0,0,0,7,473,1,0,0,0,9,480,1,0,0,0,11,486,1,0,0,0,13,492,1,0,0,0,15,498,1,0,0,0,17,502,1,0,0,0,19,511,1,0,0,0,21,522,1,0,0,0,23,531,1,0,0,0,25,535,1,0,0,0,27,538,1,0,0,0,29,545,1,0,0,0,31,552,1,0,0,0,33,558,1,0,0,0,35,565,1,0,0,0,37,568,1,0,0,0,39,578,1,0,0,0,41,587,1,0,0,0,43,592,1,0,0,0,45,600,1,0,0,0,47,605,1,0,0,0,49,608,1,0,0,0,51,613,1,0,0,0,53,618,1,0,0,0,55,625,1,0,0,0,57,631,1,0,0,0,59,642,1,0,0,0,61,650,1,0,0,0,63,660,1,0,0,0,65,668,1,0,0,0,67,678,1,0,0,0,69,689,1,0,0,0,71,701,1,0,0,0,73,709,1,0,0,0,75,720,1,0,0,0,77,730,1,0,0,0,79,736,1,0,0,0,81,745,1,0,0,0,83,756,1,0,0,0,85,764,1,0,0,0,87,773,1,0,0,0,89,780,1,0,0,0,91,784,1,0,0,0,93,792,1,0,0,0,95,800,1,0,0,0,97,811,1,0,0,0,99,819,1,0,0,0,101,831,1,0,0,0,103,842,1,0,0,0,105,851,1,0,0,0,107,854,1,0,0,0,109,858,1,0,0,0,111,863,1,0,0,0,113,867,1,0,0,0,115,873,1,0,0,0,117,878,1,0,0,0,119,884,1,0,0,0,121,892,1,0,0,0,123,897,1,0,0,0,125,904,1,0,0,0,127,909,1,0,0,0,129,915,1,0,0,0,131,923,1,0,0,0,133,932,1,0,0,0,135,942,1,0,0,0,137,949,1,0,0,0,139,955,1,0,0,0,141,960,1,0,0,0,143,964,1,0,0,0,145,969,1,0,0,0,147,975,1,0,0,0,149,980,1,0,0,0,151,989,1,0,0,0,153,997,1,0,0,0,155,1e3,1,0,0,0,157,1008,1,0,0,0,159,1015,1,0,0,0,161,1018,1,0,0,0,163,1026,1,0,0,0,165,1037,1,0,0,0,167,1043,1,0,0,0,169,1055,1,0,0,0,171,1065,1,0,0,0,173,1076,1,0,0,0,175,1080,1,0,0,0,177,1088,1,0,0,0,179,1098,1,0,0,0,181,1105,1,0,0,0,183,1110,1,0,0,0,185,1115,1,0,0,0,187,1124,1,0,0,0,189,1132,1,0,0,0,191,1139,1,0,0,0,193,1144,1,0,0,0,195,1151,1,0,0,0,197,1157,1,0,0,0,199,1165,1,0,0,0,201,1170,1,0,0,0,203,1180,1,0,0,0,205,1189,1,0,0,0,207,1202,1,0,0,0,209,1212,1,0,0,0,211,1216,1,0,0,0,213,1226,1,0,0,0,215,1230,1,0,0,0,217,1235,1,0,0,0,219,1245,1,0,0,0,221,1256,1,0,0,0,223,1259,1,0,0,0,225,1262,1,0,0,0,227,1270,1,0,0,0,229,1274,1,0,0,0,231,1282,1,0,0,0,233,1291,1,0,0,0,235,1296,1,0,0,0,237,1304,1,0,0,0,239,1309,1,0,0,0,241,1317,1,0,0,0,243,1327,1,0,0,0,245,1335,1,0,0,0,247,1345,1,0,0,0,249,1352,1,0,0,0,251,1362,1,0,0,0,253,1375,1,0,0,0,255,1379,1,0,0,0,257,1390,1,0,0,0,259,1397,1,0,0,0,261,1407,1,0,0,0,263,1411,1,0,0,0,265,1419,1,0,0,0,267,1431,1,0,0,0,269,1438,1,0,0,0,271,1446,1,0,0,0,273,1451,1,0,0,0,275,1460,1,0,0,0,277,1475,1,0,0,0,279,1487,1,0,0,0,281,1499,1,0,0,0,283,1508,1,0,0,0,285,1514,1,0,0,0,287,1519,1,0,0,0,289,1526,1,0,0,0,291,1540,1,0,0,0,293,1548,1,0,0,0,295,1555,1,0,0,0,297,1563,1,0,0,0,299,1571,1,0,0,0,301,1582,1,0,0,0,303,1592,1,0,0,0,305,1597,1,0,0,0,307,1607,1,0,0,0,309,1610,1,0,0,0,311,1621,1,0,0,0,313,1626,1,0,0,0,315,1631,1,0,0,0,317,1637,1,0,0,0,319,1644,1,0,0,0,321,1651,1,0,0,0,323,1657,1,0,0,0,325,1661,1,0,0,0,327,1665,1,0,0,0,329,1673,1,0,0,0,331,1683,1,0,0,0,333,1696,1,0,0,0,335,1703,1,0,0,0,337,1707,1,0,0,0,339,1712,1,0,0,0,341,1722,1,0,0,0,343,1727,1,0,0,0,345,1733,1,0,0,0,347,1737,1,0,0,0,349,1741,1,0,0,0,351,1745,1,0,0,0,353,1749,1,0,0,0,355,1753,1,0,0,0,357,1756,1,0,0,0,359,1759,1,0,0,0,361,1762,1,0,0,0,363,1765,1,0,0,0,365,1768,1,0,0,0,367,1771,1,0,0,0,369,1774,1,0,0,0,371,1777,1,0,0,0,373,1780,1,0,0,0,375,1783,1,0,0,0,377,1786,1,0,0,0,379,1789,1,0,0,0,381,1792,1,0,0,0,383,1795,1,0,0,0,385,1797,1,0,0,0,387,1799,1,0,0,0,389,1801,1,0,0,0,391,1803,1,0,0,0,393,1805,1,0,0,0,395,1807,1,0,0,0,397,1809,1,0,0,0,399,1811,1,0,0,0,401,1813,1,0,0,0,403,1815,1,0,0,0,405,1817,1,0,0,0,407,1819,1,0,0,0,409,1821,1,0,0,0,411,1823,1,0,0,0,413,1825,1,0,0,0,415,1827,1,0,0,0,417,1829,1,0,0,0,419,1831,1,0,0,0,421,1833,1,0,0,0,423,1835,1,0,0,0,425,1837,1,0,0,0,427,1839,1,0,0,0,429,1841,1,0,0,0,431,1843,1,0,0,0,433,1845,1,0,0,0,435,1847,1,0,0,0,437,1854,1,0,0,0,439,1865,1,0,0,0,441,1877,1,0,0,0,443,1918,1,0,0,0,445,1920,1,0,0,0,447,1932,1,0,0,0,449,1944,1,0,0,0,451,452,5,97,0,0,452,453,5,98,0,0,453,454,5,111,0,0,454,455,5,117,0,0,455,456,5,116,0,0,456,2,1,0,0,0,457,458,5,97,0,0,458,459,5,98,0,0,459,460,5,115,0,0,460,461,5,116,0,0,461,462,5,114,0,0,462,463,5,97,0,0,463,464,5,99,0,0,464,465,5,116,0,0,465,4,1,0,0,0,466,467,5,97,0,0,467,468,5,99,0,0,468,469,5,99,0,0,469,470,5,101,0,0,470,471,5,112,0,0,471,472,5,116,0,0,472,6,1,0,0,0,473,474,5,97,0,0,474,475,5,99,0,0,475,476,5,116,0,0,476,477,5,105,0,0,477,478,5,111,0,0,478,479,5,110,0,0,479,8,1,0,0,0,480,481,5,97,0,0,481,482,5,99,0,0,482,483,5,116,0,0,483,484,5,111,0,0,484,485,5,114,0,0,485,10,1,0,0,0,486,487,5,97,0,0,487,488,5,102,0,0,488,489,5,116,0,0,489,490,5,101,0,0,490,491,5,114,0,0,491,12,1,0,0,0,492,493,5,97,0,0,493,494,5,108,0,0,494,495,5,105,0,0,495,496,5,97,0,0,496,497,5,115,0,0,497,14,1,0,0,0,498,499,5,97,0,0,499,500,5,108,0,0,500,501,5,108,0,0,501,16,1,0,0,0,502,503,5,97,0,0,503,504,5,108,0,0,504,505,5,108,0,0,505,506,5,111,0,0,506,507,5,99,0,0,507,508,5,97,0,0,508,509,5,116,0,0,509,510,5,101,0,0,510,18,1,0,0,0,511,512,5,97,0,0,512,513,5,108,0,0,513,514,5,108,0,0,514,515,5,111,0,0,515,516,5,99,0,0,516,517,5,97,0,0,517,518,5,116,0,0,518,519,5,105,0,0,519,520,5,111,0,0,520,521,5,110,0,0,521,20,1,0,0,0,522,523,5,97,0,0,523,524,5,110,0,0,524,525,5,97,0,0,525,526,5,108,0,0,526,527,5,121,0,0,527,528,5,115,0,0,528,529,5,105,0,0,529,530,5,115,0,0,530,22,1,0,0,0,531,532,5,97,0,0,532,533,5,110,0,0,533,534,5,100,0,0,534,24,1,0,0,0,535,536,5,97,0,0,536,537,5,115,0,0,537,26,1,0,0,0,538,539,5,97,0,0,539,540,5,115,0,0,540,541,5,115,0,0,541,542,5,101,0,0,542,543,5,114,0,0,543,544,5,116,0,0,544,28,1,0,0,0,545,546,5,97,0,0,546,547,5,115,0,0,547,548,5,115,0,0,548,549,5,105,0,0,549,550,5,103,0,0,550,551,5,110,0,0,551,30,1,0,0,0,552,553,5,97,0,0,553,554,5,115,0,0,554,555,5,115,0,0,555,556,5,111,0,0,556,557,5,99,0,0,557,32,1,0,0,0,558,559,5,97,0,0,559,560,5,115,0,0,560,561,5,115,0,0,561,562,5,117,0,0,562,563,5,109,0,0,563,564,5,101,0,0,564,34,1,0,0,0,565,566,5,97,0,0,566,567,5,116,0,0,567,36,1,0,0,0,568,569,5,97,0,0,569,570,5,116,0,0,570,571,5,116,0,0,571,572,5,114,0,0,572,573,5,105,0,0,573,574,5,98,0,0,574,575,5,117,0,0,575,576,5,116,0,0,576,577,5,101,0,0,577,38,1,0,0,0,578,579,5,98,0,0,579,580,5,101,0,0,580,581,5,104,0,0,581,582,5,97,0,0,582,583,5,118,0,0,583,584,5,105,0,0,584,585,5,111,0,0,585,586,5,114,0,0,586,40,1,0,0,0,587,588,5,98,0,0,588,589,5,105,0,0,589,590,5,110,0,0,590,591,5,100,0,0,591,42,1,0,0,0,592,593,5,98,0,0,593,594,5,105,0,0,594,595,5,110,0,0,595,596,5,100,0,0,596,597,5,105,0,0,597,598,5,110,0,0,598,599,5,103,0,0,599,44,1,0,0,0,600,601,5,98,0,0,601,602,5,111,0,0,602,603,5,111,0,0,603,604,5,108,0,0,604,46,1,0,0,0,605,606,5,98,0,0,606,607,5,121,0,0,607,48,1,0,0,0,608,609,5,99,0,0,609,610,5,97,0,0,610,611,5,108,0,0,611,612,5,99,0,0,612,50,1,0,0,0,613,614,5,99,0,0,614,615,5,97,0,0,615,616,5,115,0,0,616,617,5,101,0,0,617,52,1,0,0,0,618,619,5,99,0,0,619,620,5,104,0,0,620,621,5,97,0,0,621,622,5,105,0,0,622,623,5,110,0,0,623,624,5,115,0,0,624,54,1,0,0,0,625,626,5,99,0,0,626,627,5,108,0,0,627,628,5,97,0,0,628,629,5,115,0,0,629,630,5,115,0,0,630,56,1,0,0,0,631,632,5,99,0,0,632,633,5,108,0,0,633,634,5,97,0,0,634,635,5,115,0,0,635,636,5,115,0,0,636,637,5,105,0,0,637,638,5,102,0,0,638,639,5,105,0,0,639,640,5,101,0,0,640,641,5,114,0,0,641,58,1,0,0,0,642,643,5,99,0,0,643,644,5,111,0,0,644,645,5,109,0,0,645,646,5,109,0,0,646,647,5,101,0,0,647,648,5,110,0,0,648,649,5,116,0,0,649,60,1,0,0,0,650,651,5,99,0,0,651,652,5,111,0,0,652,653,5,109,0,0,653,654,5,112,0,0,654,655,5,111,0,0,655,656,5,115,0,0,656,657,5,105,0,0,657,658,5,116,0,0,658,659,5,101,0,0,659,62,1,0,0,0,660,661,5,99,0,0,661,662,5,111,0,0,662,663,5,110,0,0,663,664,5,99,0,0,664,665,5,101,0,0,665,666,5,114,0,0,666,667,5,110,0,0,667,64,1,0,0,0,668,669,5,99,0,0,669,670,5,111,0,0,670,671,5,110,0,0,671,672,5,106,0,0,672,673,5,117,0,0,673,674,5,103,0,0,674,675,5,97,0,0,675,676,5,116,0,0,676,677,5,101,0,0,677,66,1,0,0,0,678,679,5,99,0,0,679,680,5,111,0,0,680,681,5,110,0,0,681,682,5,106,0,0,682,683,5,117,0,0,683,684,5,103,0,0,684,685,5,97,0,0,685,686,5,116,0,0,686,687,5,101,0,0,687,688,5,115,0,0,688,68,1,0,0,0,689,690,5,99,0,0,690,691,5,111,0,0,691,692,5,110,0,0,692,693,5,106,0,0,693,694,5,117,0,0,694,695,5,103,0,0,695,696,5,97,0,0,696,697,5,116,0,0,697,698,5,105,0,0,698,699,5,111,0,0,699,700,5,110,0,0,700,70,1,0,0,0,701,702,5,99,0,0,702,703,5,111,0,0,703,704,5,110,0,0,704,705,5,110,0,0,705,706,5,101,0,0,706,707,5,99,0,0,707,708,5,116,0,0,708,72,1,0,0,0,709,710,5,99,0,0,710,711,5,111,0,0,711,712,5,110,0,0,712,713,5,110,0,0,713,714,5,101,0,0,714,715,5,99,0,0,715,716,5,116,0,0,716,717,5,105,0,0,717,718,5,111,0,0,718,719,5,110,0,0,719,74,1,0,0,0,720,721,5,99,0,0,721,722,5,111,0,0,722,723,5,110,0,0,723,724,5,110,0,0,724,725,5,101,0,0,725,726,5,99,0,0,726,727,5,116,0,0,727,728,5,111,0,0,728,729,5,114,0,0,729,76,1,0,0,0,730,731,5,99,0,0,731,732,5,111,0,0,732,733,5,110,0,0,733,734,5,115,0,0,734,735,5,116,0,0,735,78,1,0,0,0,736,737,5,99,0,0,737,738,5,111,0,0,738,739,5,110,0,0,739,740,5,115,0,0,740,741,5,116,0,0,741,742,5,97,0,0,742,743,5,110,0,0,743,744,5,116,0,0,744,80,1,0,0,0,745,746,5,99,0,0,746,747,5,111,0,0,747,748,5,110,0,0,748,749,5,115,0,0,749,750,5,116,0,0,750,751,5,114,0,0,751,752,5,97,0,0,752,753,5,105,0,0,753,754,5,110,0,0,754,755,5,116,0,0,755,82,1,0,0,0,756,757,5,99,0,0,757,758,5,114,0,0,758,759,5,111,0,0,759,760,5,115,0,0,760,761,5,115,0,0,761,762,5,101,0,0,762,763,5,115,0,0,763,84,1,0,0,0,764,765,5,100,0,0,765,766,5,97,0,0,766,767,5,116,0,0,767,768,5,97,0,0,768,769,5,116,0,0,769,770,5,121,0,0,770,771,5,112,0,0,771,772,5,101,0,0,772,86,1,0,0,0,773,774,5,100,0,0,774,775,5,101,0,0,775,776,5,99,0,0,776,777,5,105,0,0,777,778,5,100,0,0,778,779,5,101,0,0,779,88,1,0,0,0,780,781,5,100,0,0,781,782,5,101,0,0,782,783,5,102,0,0,783,90,1,0,0,0,784,785,5,100,0,0,785,786,5,101,0,0,786,787,5,102,0,0,787,788,5,97,0,0,788,789,5,117,0,0,789,790,5,108,0,0,790,791,5,116,0,0,791,92,1,0,0,0,792,793,5,100,0,0,793,794,5,101,0,0,794,795,5,102,0,0,795,796,5,105,0,0,796,797,5,110,0,0,797,798,5,101,0,0,798,799,5,100,0,0,799,94,1,0,0,0,800,801,5,100,0,0,801,802,5,101,0,0,802,803,5,112,0,0,803,804,5,101,0,0,804,805,5,110,0,0,805,806,5,100,0,0,806,807,5,101,0,0,807,808,5,110,0,0,808,809,5,99,0,0,809,810,5,121,0,0,810,96,1,0,0,0,811,812,5,100,0,0,812,813,5,101,0,0,813,814,5,114,0,0,814,815,5,105,0,0,815,816,5,118,0,0,816,817,5,101,0,0,817,818,5,100,0,0,818,98,1,0,0,0,819,820,5,100,0,0,820,821,5,105,0,0,821,822,5,102,0,0,822,823,5,102,0,0,823,824,5,101,0,0,824,825,5,114,0,0,825,826,5,101,0,0,826,827,5,110,0,0,827,828,5,99,0,0,828,829,5,101,0,0,829,830,5,115,0,0,830,100,1,0,0,0,831,832,5,100,0,0,832,833,5,105,0,0,833,834,5,115,0,0,834,835,5,106,0,0,835,836,5,111,0,0,836,837,5,105,0,0,837,838,5,110,0,0,838,839,5,105,0,0,839,840,5,110,0,0,840,841,5,103,0,0,841,102,1,0,0,0,842,843,5,100,0,0,843,844,5,105,0,0,844,845,5,115,0,0,845,846,5,106,0,0,846,847,5,111,0,0,847,848,5,105,0,0,848,849,5,110,0,0,849,850,5,116,0,0,850,104,1,0,0,0,851,852,5,100,0,0,852,853,5,111,0,0,853,106,1,0,0,0,854,855,5,100,0,0,855,856,5,111,0,0,856,857,5,99,0,0,857,108,1,0,0,0,858,859,5,101,0,0,859,860,5,108,0,0,860,861,5,115,0,0,861,862,5,101,0,0,862,110,1,0,0,0,863,864,5,101,0,0,864,865,5,110,0,0,865,866,5,100,0,0,866,112,1,0,0,0,867,868,5,101,0,0,868,869,5,110,0,0,869,870,5,116,0,0,870,871,5,114,0,0,871,872,5,121,0,0,872,114,1,0,0,0,873,874,5,101,0,0,874,875,5,110,0,0,875,876,5,117,0,0,876,877,5,109,0,0,877,116,1,0,0,0,878,879,5,101,0,0,879,880,5,118,0,0,880,881,5,101,0,0,881,882,5,110,0,0,882,883,5,116,0,0,883,118,1,0,0,0,884,885,5,101,0,0,885,886,5,120,0,0,886,887,5,104,0,0,887,888,5,105,0,0,888,889,5,98,0,0,889,890,5,105,0,0,890,891,5,116,0,0,891,120,1,0,0,0,892,893,5,101,0,0,893,894,5,120,0,0,894,895,5,105,0,0,895,896,5,116,0,0,896,122,1,0,0,0,897,898,5,101,0,0,898,899,5,120,0,0,899,900,5,112,0,0,900,901,5,111,0,0,901,902,5,115,0,0,902,903,5,101,0,0,903,124,1,0,0,0,904,905,5,101,0,0,905,906,5,120,0,0,906,907,5,112,0,0,907,908,5,114,0,0,908,126,1,0,0,0,909,910,5,102,0,0,910,911,5,97,0,0,911,912,5,108,0,0,912,913,5,115,0,0,913,914,5,101,0,0,914,128,1,0,0,0,915,916,5,102,0,0,916,917,5,101,0,0,917,918,5,97,0,0,918,919,5,116,0,0,919,920,5,117,0,0,920,921,5,114,0,0,921,922,5,101,0,0,922,130,1,0,0,0,923,924,5,102,0,0,924,925,5,101,0,0,925,926,5,97,0,0,926,927,5,116,0,0,927,928,5,117,0,0,928,929,5,114,0,0,929,930,5,101,0,0,930,931,5,100,0,0,931,132,1,0,0,0,932,933,5,102,0,0,933,934,5,101,0,0,934,935,5,97,0,0,935,936,5,116,0,0,936,937,5,117,0,0,937,938,5,114,0,0,938,939,5,105,0,0,939,940,5,110,0,0,940,941,5,103,0,0,941,134,1,0,0,0,942,943,5,102,0,0,943,944,5,105,0,0,944,945,5,108,0,0,945,946,5,116,0,0,946,947,5,101,0,0,947,948,5,114,0,0,948,136,1,0,0,0,949,950,5,102,0,0,950,951,5,105,0,0,951,952,5,114,0,0,952,953,5,115,0,0,953,954,5,116,0,0,954,138,1,0,0,0,955,956,5,102,0,0,956,957,5,108,0,0,957,958,5,111,0,0,958,959,5,119,0,0,959,140,1,0,0,0,960,961,5,102,0,0,961,962,5,111,0,0,962,963,5,114,0,0,963,142,1,0,0,0,964,965,5,102,0,0,965,966,5,111,0,0,966,967,5,114,0,0,967,968,5,107,0,0,968,144,1,0,0,0,969,970,5,102,0,0,970,971,5,114,0,0,971,972,5,97,0,0,972,973,5,109,0,0,973,974,5,101,0,0,974,146,1,0,0,0,975,976,5,102,0,0,976,977,5,114,0,0,977,978,5,111,0,0,978,979,5,109,0,0,979,148,1,0,0,0,980,981,5,102,0,0,981,982,5,117,0,0,982,983,5,110,0,0,983,984,5,99,0,0,984,985,5,116,0,0,985,986,5,105,0,0,986,987,5,111,0,0,987,988,5,110,0,0,988,150,1,0,0,0,989,990,5,104,0,0,990,991,5,97,0,0,991,992,5,115,0,0,992,993,5,116,0,0,993,994,5,121,0,0,994,995,5,112,0,0,995,996,5,101,0,0,996,152,1,0,0,0,997,998,5,105,0,0,998,999,5,102,0,0,999,154,1,0,0,0,1e3,1001,5,105,0,0,1001,1002,5,109,0,0,1002,1003,5,112,0,0,1003,1004,5,108,0,0,1004,1005,5,105,0,0,1005,1006,5,101,0,0,1006,1007,5,115,0,0,1007,156,1,0,0,0,1008,1009,5,105,0,0,1009,1010,5,109,0,0,1010,1011,5,112,0,0,1011,1012,5,111,0,0,1012,1013,5,114,0,0,1013,1014,5,116,0,0,1014,158,1,0,0,0,1015,1016,5,105,0,0,1016,1017,5,110,0,0,1017,160,1,0,0,0,1018,1019,5,105,0,0,1019,1020,5,110,0,0,1020,1021,5,99,0,0,1021,1022,5,108,0,0,1022,1023,5,117,0,0,1023,1024,5,100,0,0,1024,1025,5,101,0,0,1025,162,1,0,0,0,1026,1027,5,105,0,0,1027,1028,5,110,0,0,1028,1029,5,100,0,0,1029,1030,5,105,0,0,1030,1031,5,118,0,0,1031,1032,5,105,0,0,1032,1033,5,100,0,0,1033,1034,5,117,0,0,1034,1035,5,97,0,0,1035,1036,5,108,0,0,1036,164,1,0,0,0,1037,1038,5,105,0,0,1038,1039,5,110,0,0,1039,1040,5,111,0,0,1040,1041,5,117,0,0,1041,1042,5,116,0,0,1042,166,1,0,0,0,1043,1044,5,105,0,0,1044,1045,5,110,0,0,1045,1046,5,116,0,0,1046,1047,5,101,0,0,1047,1048,5,114,0,0,1048,1049,5,97,0,0,1049,1050,5,99,0,0,1050,1051,5,116,0,0,1051,1052,5,105,0,0,1052,1053,5,111,0,0,1053,1054,5,110,0,0,1054,168,1,0,0,0,1055,1056,5,105,0,0,1056,1057,5,110,0,0,1057,1058,5,116,0,0,1058,1059,5,101,0,0,1059,1060,5,114,0,0,1060,1061,5,102,0,0,1061,1062,5,97,0,0,1062,1063,5,99,0,0,1063,1064,5,101,0,0,1064,170,1,0,0,0,1065,1066,5,105,0,0,1066,1067,5,110,0,0,1067,1068,5,116,0,0,1068,1069,5,101,0,0,1069,1070,5,114,0,0,1070,1071,5,115,0,0,1071,1072,5,101,0,0,1072,1073,5,99,0,0,1073,1074,5,116,0,0,1074,1075,5,115,0,0,1075,172,1,0,0,0,1076,1077,5,105,0,0,1077,1078,5,110,0,0,1078,1079,5,118,0,0,1079,174,1,0,0,0,1080,1081,5,105,0,0,1081,1082,5,110,0,0,1082,1083,5,118,0,0,1083,1084,5,101,0,0,1084,1085,5,114,0,0,1085,1086,5,115,0,0,1086,1087,5,101,0,0,1087,176,1,0,0,0,1088,1089,5,105,0,0,1089,1090,5,110,0,0,1090,1091,5,118,0,0,1091,1092,5,101,0,0,1092,1093,5,114,0,0,1093,1094,5,116,0,0,1094,1095,5,105,0,0,1095,1096,5,110,0,0,1096,1097,5,103,0,0,1097,178,1,0,0,0,1098,1099,5,105,0,0,1099,1100,5,115,0,0,1100,1101,5,116,0,0,1101,1102,5,121,0,0,1102,1103,5,112,0,0,1103,1104,5,101,0,0,1104,180,1,0,0,0,1105,1106,5,105,0,0,1106,1107,5,116,0,0,1107,1108,5,101,0,0,1108,1109,5,109,0,0,1109,182,1,0,0,0,1110,1111,5,106,0,0,1111,1112,5,111,0,0,1112,1113,5,105,0,0,1113,1114,5,110,0,0,1114,184,1,0,0,0,1115,1116,5,108,0,0,1116,1117,5,97,0,0,1117,1118,5,110,0,0,1118,1119,5,103,0,0,1119,1120,5,117,0,0,1120,1121,5,97,0,0,1121,1122,5,103,0,0,1122,1123,5,101,0,0,1123,186,1,0,0,0,1124,1125,5,108,0,0,1125,1126,5,105,0,0,1126,1127,5,98,0,0,1127,1128,5,114,0,0,1128,1129,5,97,0,0,1129,1130,5,114,0,0,1130,1131,5,121,0,0,1131,188,1,0,0,0,1132,1133,5,108,0,0,1133,1134,5,111,0,0,1134,1135,5,99,0,0,1135,1136,5,97,0,0,1136,1137,5,108,0,0,1137,1138,5,101,0,0,1138,190,1,0,0,0,1139,1140,5,108,0,0,1140,1141,5,111,0,0,1141,1142,5,111,0,0,1142,1143,5,112,0,0,1143,192,1,0,0,0,1144,1145,5,109,0,0,1145,1146,5,101,0,0,1146,1147,5,109,0,0,1147,1148,5,98,0,0,1148,1149,5,101,0,0,1149,1150,5,114,0,0,1150,194,1,0,0,0,1151,1152,5,109,0,0,1152,1153,5,101,0,0,1153,1154,5,114,0,0,1154,1155,5,103,0,0,1155,1156,5,101,0,0,1156,196,1,0,0,0,1157,1158,5,109,0,0,1158,1159,5,101,0,0,1159,1160,5,115,0,0,1160,1161,5,115,0,0,1161,1162,5,97,0,0,1162,1163,5,103,0,0,1163,1164,5,101,0,0,1164,198,1,0,0,0,1165,1166,5,109,0,0,1166,1167,5,101,0,0,1167,1168,5,116,0,0,1168,1169,5,97,0,0,1169,200,1,0,0,0,1170,1171,5,109,0,0,1171,1172,5,101,0,0,1172,1173,5,116,0,0,1173,1174,5,97,0,0,1174,1175,5,99,0,0,1175,1176,5,108,0,0,1176,1177,5,97,0,0,1177,1178,5,115,0,0,1178,1179,5,115,0,0,1179,202,1,0,0,0,1180,1181,5,109,0,0,1181,1182,5,101,0,0,1182,1183,5,116,0,0,1183,1184,5,97,0,0,1184,1185,5,100,0,0,1185,1186,5,97,0,0,1186,1187,5,116,0,0,1187,1188,5,97,0,0,1188,204,1,0,0,0,1189,1190,5,109,0,0,1190,1191,5,117,0,0,1191,1192,5,108,0,0,1192,1193,5,116,0,0,1193,1194,5,105,0,0,1194,1195,5,112,0,0,1195,1196,5,108,0,0,1196,1197,5,105,0,0,1197,1198,5,99,0,0,1198,1199,5,105,0,0,1199,1200,5,116,0,0,1200,1201,5,121,0,0,1201,206,1,0,0,0,1202,1203,5,110,0,0,1203,1204,5,97,0,0,1204,1205,5,109,0,0,1205,1206,5,101,0,0,1206,1207,5,115,0,0,1207,1208,5,112,0,0,1208,1209,5,97,0,0,1209,1210,5,99,0,0,1210,1211,5,101,0,0,1211,208,1,0,0,0,1212,1213,5,110,0,0,1213,1214,5,101,0,0,1214,1215,5,119,0,0,1215,210,1,0,0,0,1216,1217,5,110,0,0,1217,1218,5,111,0,0,1218,1219,5,110,0,0,1219,1220,5,117,0,0,1220,1221,5,110,0,0,1221,1222,5,105,0,0,1222,1223,5,113,0,0,1223,1224,5,117,0,0,1224,1225,5,101,0,0,1225,212,1,0,0,0,1226,1227,5,110,0,0,1227,1228,5,111,0,0,1228,1229,5,116,0,0,1229,214,1,0,0,0,1230,1231,5,110,0,0,1231,1232,5,117,0,0,1232,1233,5,108,0,0,1233,1234,5,108,0,0,1234,216,1,0,0,0,1235,1236,5,111,0,0,1236,1237,5,98,0,0,1237,1238,5,106,0,0,1238,1239,5,101,0,0,1239,1240,5,99,0,0,1240,1241,5,116,0,0,1241,1242,5,105,0,0,1242,1243,5,118,0,0,1243,1244,5,101,0,0,1244,218,1,0,0,0,1245,1246,5,111,0,0,1246,1247,5,99,0,0,1247,1248,5,99,0,0,1248,1249,5,117,0,0,1249,1250,5,114,0,0,1250,1251,5,114,0,0,1251,1252,5,101,0,0,1252,1253,5,110,0,0,1253,1254,5,99,0,0,1254,1255,5,101,0,0,1255,220,1,0,0,0,1256,1257,5,111,0,0,1257,1258,5,102,0,0,1258,222,1,0,0,0,1259,1260,5,111,0,0,1260,1261,5,114,0,0,1261,224,1,0,0,0,1262,1263,5,111,0,0,1263,1264,5,114,0,0,1264,1265,5,100,0,0,1265,1266,5,101,0,0,1266,1267,5,114,0,0,1267,1268,5,101,0,0,1268,1269,5,100,0,0,1269,226,1,0,0,0,1270,1271,5,111,0,0,1271,1272,5,117,0,0,1272,1273,5,116,0,0,1273,228,1,0,0,0,1274,1275,5,112,0,0,1275,1276,5,97,0,0,1276,1277,5,99,0,0,1277,1278,5,107,0,0,1278,1279,5,97,0,0,1279,1280,5,103,0,0,1280,1281,5,101,0,0,1281,230,1,0,0,0,1282,1283,5,112,0,0,1283,1284,5,97,0,0,1284,1285,5,114,0,0,1285,1286,5,97,0,0,1286,1287,5,108,0,0,1287,1288,5,108,0,0,1288,1289,5,101,0,0,1289,1290,5,108,0,0,1290,232,1,0,0,0,1291,1292,5,112,0,0,1292,1293,5,97,0,0,1293,1294,5,114,0,0,1294,1295,5,116,0,0,1295,234,1,0,0,0,1296,1297,5,112,0,0,1297,1298,5,101,0,0,1298,1299,5,114,0,0,1299,1300,5,102,0,0,1300,1301,5,111,0,0,1301,1302,5,114,0,0,1302,1303,5,109,0,0,1303,236,1,0,0,0,1304,1305,5,112,0,0,1305,1306,5,111,0,0,1306,1307,5,114,0,0,1307,1308,5,116,0,0,1308,238,1,0,0,0,1309,1310,5,112,0,0,1310,1311,5,111,0,0,1311,1312,5,114,0,0,1312,1313,5,116,0,0,1313,1314,5,105,0,0,1314,1315,5,111,0,0,1315,1316,5,110,0,0,1316,240,1,0,0,0,1317,1318,5,112,0,0,1318,1319,5,114,0,0,1319,1320,5,101,0,0,1320,1321,5,100,0,0,1321,1322,5,105,0,0,1322,1323,5,99,0,0,1323,1324,5,97,0,0,1324,1325,5,116,0,0,1325,1326,5,101,0,0,1326,242,1,0,0,0,1327,1328,5,112,0,0,1328,1329,5,114,0,0,1329,1330,5,105,0,0,1330,1331,5,118,0,0,1331,1332,5,97,0,0,1332,1333,5,116,0,0,1333,1334,5,101,0,0,1334,244,1,0,0,0,1335,1336,5,112,0,0,1336,1337,5,114,0,0,1337,1338,5,111,0,0,1338,1339,5,116,0,0,1339,1340,5,101,0,0,1340,1341,5,99,0,0,1341,1342,5,116,0,0,1342,1343,5,101,0,0,1343,1344,5,100,0,0,1344,246,1,0,0,0,1345,1346,5,112,0,0,1346,1347,5,117,0,0,1347,1348,5,98,0,0,1348,1349,5,108,0,0,1349,1350,5,105,0,0,1350,1351,5,99,0,0,1351,248,1,0,0,0,1352,1353,5,114,0,0,1353,1354,5,101,0,0,1354,1355,5,100,0,0,1355,1356,5,101,0,0,1356,1357,5,102,0,0,1357,1358,5,105,0,0,1358,1359,5,110,0,0,1359,1360,5,101,0,0,1360,1361,5,115,0,0,1361,250,1,0,0,0,1362,1363,5,114,0,0,1363,1364,5,101,0,0,1364,1365,5,100,0,0,1365,1366,5,101,0,0,1366,1367,5,102,0,0,1367,1368,5,105,0,0,1368,1369,5,110,0,0,1369,1370,5,105,0,0,1370,1371,5,116,0,0,1371,1372,5,105,0,0,1372,1373,5,111,0,0,1373,1374,5,110,0,0,1374,252,1,0,0,0,1375,1376,5,114,0,0,1376,1377,5,101,0,0,1377,1378,5,102,0,0,1378,254,1,0,0,0,1379,1380,5,114,0,0,1380,1381,5,101,0,0,1381,1382,5,102,0,0,1382,1383,5,101,0,0,1383,1384,5,114,0,0,1384,1385,5,101,0,0,1385,1386,5,110,0,0,1386,1387,5,99,0,0,1387,1388,5,101,0,0,1388,1389,5,115,0,0,1389,256,1,0,0,0,1390,1391,5,114,0,0,1391,1392,5,101,0,0,1392,1393,5,110,0,0,1393,1394,5,100,0,0,1394,1395,5,101,0,0,1395,1396,5,114,0,0,1396,258,1,0,0,0,1397,1398,5,114,0,0,1398,1399,5,101,0,0,1399,1400,5,110,0,0,1400,1401,5,100,0,0,1401,1402,5,101,0,0,1402,1403,5,114,0,0,1403,1404,5,105,0,0,1404,1405,5,110,0,0,1405,1406,5,103,0,0,1406,260,1,0,0,0,1407,1408,5,114,0,0,1408,1409,5,101,0,0,1409,1410,5,112,0,0,1410,262,1,0,0,0,1411,1412,5,114,0,0,1412,1413,5,101,0,0,1413,1414,5,113,0,0,1414,1415,5,117,0,0,1415,1416,5,105,0,0,1416,1417,5,114,0,0,1417,1418,5,101,0,0,1418,264,1,0,0,0,1419,1420,5,114,0,0,1420,1421,5,101,0,0,1421,1422,5,113,0,0,1422,1423,5,117,0,0,1423,1424,5,105,0,0,1424,1425,5,114,0,0,1425,1426,5,101,0,0,1426,1427,5,109,0,0,1427,1428,5,101,0,0,1428,1429,5,110,0,0,1429,1430,5,116,0,0,1430,266,1,0,0,0,1431,1432,5,114,0,0,1432,1433,5,101,0,0,1433,1434,5,116,0,0,1434,1435,5,117,0,0,1435,1436,5,114,0,0,1436,1437,5,110,0,0,1437,268,1,0,0,0,1438,1439,5,115,0,0,1439,1440,5,97,0,0,1440,1441,5,116,0,0,1441,1442,5,105,0,0,1442,1443,5,115,0,0,1443,1444,5,102,0,0,1444,1445,5,121,0,0,1445,270,1,0,0,0,1446,1447,5,115,0,0,1447,1448,5,101,0,0,1448,1449,5,110,0,0,1449,1450,5,100,0,0,1450,272,1,0,0,0,1451,1452,5,115,0,0,1452,1453,5,110,0,0,1453,1454,5,97,0,0,1454,1455,5,112,0,0,1455,1456,5,115,0,0,1456,1457,5,104,0,0,1457,1458,5,111,0,0,1458,1459,5,116,0,0,1459,274,1,0,0,0,1460,1461,5,115,0,0,1461,1462,5,112,0,0,1462,1463,5,101,0,0,1463,1464,5,99,0,0,1464,1465,5,105,0,0,1465,1466,5,97,0,0,1466,1467,5,108,0,0,1467,1468,5,105,0,0,1468,1469,5,122,0,0,1469,1470,5,97,0,0,1470,1471,5,116,0,0,1471,1472,5,105,0,0,1472,1473,5,111,0,0,1473,1474,5,110,0,0,1474,276,1,0,0,0,1475,1476,5,115,0,0,1476,1477,5,112,0,0,1477,1478,5,101,0,0,1478,1479,5,99,0,0,1479,1480,5,105,0,0,1480,1481,5,97,0,0,1481,1482,5,108,0,0,1482,1483,5,105,0,0,1483,1484,5,122,0,0,1484,1485,5,101,0,0,1485,1486,5,115,0,0,1486,278,1,0,0,0,1487,1488,5,115,0,0,1488,1489,5,116,0,0,1489,1490,5,97,0,0,1490,1491,5,107,0,0,1491,1492,5,101,0,0,1492,1493,5,104,0,0,1493,1494,5,111,0,0,1494,1495,5,108,0,0,1495,1496,5,100,0,0,1496,1497,5,101,0,0,1497,1498,5,114,0,0,1498,280,1,0,0,0,1499,1500,5,115,0,0,1500,1501,5,116,0,0,1501,1502,5,97,0,0,1502,1503,5,110,0,0,1503,1504,5,100,0,0,1504,1505,5,97,0,0,1505,1506,5,114,0,0,1506,1507,5,100,0,0,1507,282,1,0,0,0,1508,1509,5,115,0,0,1509,1510,5,116,0,0,1510,1511,5,97,0,0,1511,1512,5,116,0,0,1512,1513,5,101,0,0,1513,284,1,0,0,0,1514,1515,5,115,0,0,1515,1516,5,116,0,0,1516,1517,5,101,0,0,1517,1518,5,112,0,0,1518,286,1,0,0,0,1519,1520,5,115,0,0,1520,1521,5,116,0,0,1521,1522,5,114,0,0,1522,1523,5,117,0,0,1523,1524,5,99,0,0,1524,1525,5,116,0,0,1525,288,1,0,0,0,1526,1527,5,115,0,0,1527,1528,5,117,0,0,1528,1529,5,98,0,0,1529,1530,5,99,0,0,1530,1531,5,108,0,0,1531,1532,5,97,0,0,1532,1533,5,115,0,0,1533,1534,5,115,0,0,1534,1535,5,105,0,0,1535,1536,5,102,0,0,1536,1537,5,105,0,0,1537,1538,5,101,0,0,1538,1539,5,114,0,0,1539,290,1,0,0,0,1540,1541,5,115,0,0,1541,1542,5,117,0,0,1542,1543,5,98,0,0,1543,1544,5,106,0,0,1544,1545,5,101,0,0,1545,1546,5,99,0,0,1546,1547,5,116,0,0,1547,292,1,0,0,0,1548,1549,5,115,0,0,1549,1550,5,117,0,0,1550,1551,5,98,0,0,1551,1552,5,115,0,0,1552,1553,5,101,0,0,1553,1554,5,116,0,0,1554,294,1,0,0,0,1555,1556,5,115,0,0,1556,1557,5,117,0,0,1557,1558,5,98,0,0,1558,1559,5,115,0,0,1559,1560,5,101,0,0,1560,1561,5,116,0,0,1561,1562,5,115,0,0,1562,296,1,0,0,0,1563,1564,5,115,0,0,1564,1565,5,117,0,0,1565,1566,5,98,0,0,1566,1567,5,116,0,0,1567,1568,5,121,0,0,1568,1569,5,112,0,0,1569,1570,5,101,0,0,1570,298,1,0,0,0,1571,1572,5,115,0,0,1572,1573,5,117,0,0,1573,1574,5,99,0,0,1574,1575,5,99,0,0,1575,1576,5,101,0,0,1576,1577,5,115,0,0,1577,1578,5,115,0,0,1578,1579,5,105,0,0,1579,1580,5,111,0,0,1580,1581,5,110,0,0,1581,300,1,0,0,0,1582,1583,5,116,0,0,1583,1584,5,101,0,0,1584,1585,5,114,0,0,1585,1586,5,109,0,0,1586,1587,5,105,0,0,1587,1588,5,110,0,0,1588,1589,5,97,0,0,1589,1590,5,116,0,0,1590,1591,5,101,0,0,1591,302,1,0,0,0,1592,1593,5,116,0,0,1593,1594,5,104,0,0,1594,1595,5,101,0,0,1595,1596,5,110,0,0,1596,304,1,0,0,0,1597,1598,5,116,0,0,1598,1599,5,105,0,0,1599,1600,5,109,0,0,1600,1601,5,101,0,0,1601,1602,5,115,0,0,1602,1603,5,108,0,0,1603,1604,5,105,0,0,1604,1605,5,99,0,0,1605,1606,5,101,0,0,1606,306,1,0,0,0,1607,1608,5,116,0,0,1608,1609,5,111,0,0,1609,308,1,0,0,0,1610,1611,5,116,0,0,1611,1612,5,114,0,0,1612,1613,5,97,0,0,1613,1614,5,110,0,0,1614,1615,5,115,0,0,1615,1616,5,105,0,0,1616,1617,5,116,0,0,1617,1618,5,105,0,0,1618,1619,5,111,0,0,1619,1620,5,110,0,0,1620,310,1,0,0,0,1621,1622,5,116,0,0,1622,1623,5,114,0,0,1623,1624,5,117,0,0,1624,1625,5,101,0,0,1625,312,1,0,0,0,1626,1627,5,116,0,0,1627,1628,5,121,0,0,1628,1629,5,112,0,0,1629,1630,5,101,0,0,1630,314,1,0,0,0,1631,1632,5,116,0,0,1632,1633,5,121,0,0,1633,1634,5,112,0,0,1634,1635,5,101,0,0,1635,1636,5,100,0,0,1636,316,1,0,0,0,1637,1638,5,116,0,0,1638,1639,5,121,0,0,1639,1640,5,112,0,0,1640,1641,5,105,0,0,1641,1642,5,110,0,0,1642,1643,5,103,0,0,1643,318,1,0,0,0,1644,1645,5,117,0,0,1645,1646,5,110,0,0,1646,1647,5,105,0,0,1647,1648,5,111,0,0,1648,1649,5,110,0,0,1649,1650,5,115,0,0,1650,320,1,0,0,0,1651,1652,5,117,0,0,1652,1653,5,110,0,0,1653,1654,5,116,0,0,1654,1655,5,105,0,0,1655,1656,5,108,0,0,1656,322,1,0,0,0,1657,1658,5,117,0,0,1658,1659,5,115,0,0,1659,1660,5,101,0,0,1660,324,1,0,0,0,1661,1662,5,118,0,0,1662,1663,5,97,0,0,1663,1664,5,114,0,0,1664,326,1,0,0,0,1665,1666,5,118,0,0,1666,1667,5,97,0,0,1667,1668,5,114,0,0,1668,1669,5,105,0,0,1669,1670,5,97,0,0,1670,1671,5,110,0,0,1671,1672,5,116,0,0,1672,328,1,0,0,0,1673,1674,5,118,0,0,1674,1675,5,97,0,0,1675,1676,5,114,0,0,1676,1677,5,105,0,0,1677,1678,5,97,0,0,1678,1679,5,116,0,0,1679,1680,5,105,0,0,1680,1681,5,111,0,0,1681,1682,5,110,0,0,1682,330,1,0,0,0,1683,1684,5,118,0,0,1684,1685,5,101,0,0,1685,1686,5,114,0,0,1686,1687,5,105,0,0,1687,1688,5,102,0,0,1688,1689,5,105,0,0,1689,1690,5,99,0,0,1690,1691,5,97,0,0,1691,1692,5,116,0,0,1692,1693,5,105,0,0,1693,1694,5,111,0,0,1694,1695,5,110,0,0,1695,332,1,0,0,0,1696,1697,5,118,0,0,1697,1698,5,101,0,0,1698,1699,5,114,0,0,1699,1700,5,105,0,0,1700,1701,5,102,0,0,1701,1702,5,121,0,0,1702,334,1,0,0,0,1703,1704,5,118,0,0,1704,1705,5,105,0,0,1705,1706,5,97,0,0,1706,336,1,0,0,0,1707,1708,5,118,0,0,1708,1709,5,105,0,0,1709,1710,5,101,0,0,1710,1711,5,119,0,0,1711,338,1,0,0,0,1712,1713,5,118,0,0,1713,1714,5,105,0,0,1714,1715,5,101,0,0,1715,1716,5,119,0,0,1716,1717,5,112,0,0,1717,1718,5,111,0,0,1718,1719,5,105,0,0,1719,1720,5,110,0,0,1720,1721,5,116,0,0,1721,340,1,0,0,0,1722,1723,5,119,0,0,1723,1724,5,104,0,0,1724,1725,5,101,0,0,1725,1726,5,110,0,0,1726,342,1,0,0,0,1727,1728,5,119,0,0,1728,1729,5,104,0,0,1729,1730,5,105,0,0,1730,1731,5,108,0,0,1731,1732,5,101,0,0,1732,344,1,0,0,0,1733,1734,5,120,0,0,1734,1735,5,111,0,0,1735,1736,5,114,0,0,1736,346,1,0,0,0,1737,1738,5,33,0,0,1738,1739,5,61,0,0,1739,1740,5,61,0,0,1740,348,1,0,0,0,1741,1742,5,58,0,0,1742,1743,5,58,0,0,1743,1744,5,62,0,0,1744,350,1,0,0,0,1745,1746,5,58,0,0,1746,1747,5,62,0,0,1747,1748,5,62,0,0,1748,352,1,0,0,0,1749,1750,5,61,0,0,1750,1751,5,61,0,0,1751,1752,5,61,0,0,1752,354,1,0,0,0,1753,1754,5,33,0,0,1754,1755,5,61,0,0,1755,356,1,0,0,0,1756,1757,5,42,0,0,1757,1758,5,42,0,0,1758,358,1,0,0,0,1759,1760,5,45,0,0,1760,1761,5,62,0,0,1761,360,1,0,0,0,1762,1763,5,46,0,0,1763,1764,5,46,0,0,1764,362,1,0,0,0,1765,1766,5,46,0,0,1766,1767,5,63,0,0,1767,364,1,0,0,0,1768,1769,5,58,0,0,1769,1770,5,58,0,0,1770,366,1,0,0,0,1771,1772,5,58,0,0,1772,1773,5,61,0,0,1773,368,1,0,0,0,1774,1775,5,58,0,0,1775,1776,5,62,0,0,1776,370,1,0,0,0,1777,1778,5,60,0,0,1778,1779,5,61,0,0,1779,372,1,0,0,0,1780,1781,5,61,0,0,1781,1782,5,61,0,0,1782,374,1,0,0,0,1783,1784,5,61,0,0,1784,1785,5,62,0,0,1785,376,1,0,0,0,1786,1787,5,62,0,0,1787,1788,5,61,0,0,1788,378,1,0,0,0,1789,1790,5,63,0,0,1790,1791,5,63,0,0,1791,380,1,0,0,0,1792,1793,5,64,0,0,1793,1794,5,64,0,0,1794,382,1,0,0,0,1795,1796,5,35,0,0,1796,384,1,0,0,0,1797,1798,5,36,0,0,1798,386,1,0,0,0,1799,1800,5,37,0,0,1800,388,1,0,0,0,1801,1802,5,38,0,0,1802,390,1,0,0,0,1803,1804,5,40,0,0,1804,392,1,0,0,0,1805,1806,5,41,0,0,1806,394,1,0,0,0,1807,1808,5,42,0,0,1808,396,1,0,0,0,1809,1810,5,43,0,0,1810,398,1,0,0,0,1811,1812,5,44,0,0,1812,400,1,0,0,0,1813,1814,5,45,0,0,1814,402,1,0,0,0,1815,1816,5,46,0,0,1816,404,1,0,0,0,1817,1818,5,47,0,0,1818,406,1,0,0,0,1819,1820,5,58,0,0,1820,408,1,0,0,0,1821,1822,5,59,0,0,1822,410,1,0,0,0,1823,1824,5,60,0,0,1824,412,1,0,0,0,1825,1826,5,61,0,0,1826,414,1,0,0,0,1827,1828,5,62,0,0,1828,416,1,0,0,0,1829,1830,5,63,0,0,1830,418,1,0,0,0,1831,1832,5,64,0,0,1832,420,1,0,0,0,1833,1834,5,91,0,0,1834,422,1,0,0,0,1835,1836,5,93,0,0,1836,424,1,0,0,0,1837,1838,5,94,0,0,1838,426,1,0,0,0,1839,1840,5,123,0,0,1840,428,1,0,0,0,1841,1842,5,124,0,0,1842,430,1,0,0,0,1843,1844,5,125,0,0,1844,432,1,0,0,0,1845,1846,5,126,0,0,1846,434,1,0,0,0,1847,1851,7,0,0,0,1848,1850,7,1,0,0,1849,1848,1,0,0,0,1850,1853,1,0,0,0,1851,1849,1,0,0,0,1851,1852,1,0,0,0,1852,436,1,0,0,0,1853,1851,1,0,0,0,1854,1860,5,39,0,0,1855,1856,5,92,0,0,1856,1859,9,0,0,0,1857,1859,8,2,0,0,1858,1855,1,0,0,0,1858,1857,1,0,0,0,1859,1862,1,0,0,0,1860,1858,1,0,0,0,1860,1861,1,0,0,0,1861,1863,1,0,0,0,1862,1860,1,0,0,0,1863,1864,5,39,0,0,1864,438,1,0,0,0,1865,1871,5,34,0,0,1866,1867,5,92,0,0,1867,1870,9,0,0,0,1868,1870,8,3,0,0,1869,1866,1,0,0,0,1869,1868,1,0,0,0,1870,1873,1,0,0,0,1871,1869,1,0,0,0,1871,1872,1,0,0,0,1872,1874,1,0,0,0,1873,1871,1,0,0,0,1874,1875,5,34,0,0,1875,440,1,0,0,0,1876,1878,7,4,0,0,1877,1876,1,0,0,0,1878,1879,1,0,0,0,1879,1877,1,0,0,0,1879,1880,1,0,0,0,1880,442,1,0,0,0,1881,1883,7,4,0,0,1882,1881,1,0,0,0,1883,1886,1,0,0,0,1884,1882,1,0,0,0,1884,1885,1,0,0,0,1885,1887,1,0,0,0,1886,1884,1,0,0,0,1887,1889,5,46,0,0,1888,1890,7,4,0,0,1889,1888,1,0,0,0,1890,1891,1,0,0,0,1891,1889,1,0,0,0,1891,1892,1,0,0,0,1892,1902,1,0,0,0,1893,1895,7,5,0,0,1894,1896,7,6,0,0,1895,1894,1,0,0,0,1895,1896,1,0,0,0,1896,1898,1,0,0,0,1897,1899,7,4,0,0,1898,1897,1,0,0,0,1899,1900,1,0,0,0,1900,1898,1,0,0,0,1900,1901,1,0,0,0,1901,1903,1,0,0,0,1902,1893,1,0,0,0,1902,1903,1,0,0,0,1903,1919,1,0,0,0,1904,1906,7,4,0,0,1905,1904,1,0,0,0,1906,1907,1,0,0,0,1907,1905,1,0,0,0,1907,1908,1,0,0,0,1908,1909,1,0,0,0,1909,1911,7,5,0,0,1910,1912,7,6,0,0,1911,1910,1,0,0,0,1911,1912,1,0,0,0,1912,1914,1,0,0,0,1913,1915,7,4,0,0,1914,1913,1,0,0,0,1915,1916,1,0,0,0,1916,1914,1,0,0,0,1916,1917,1,0,0,0,1917,1919,1,0,0,0,1918,1884,1,0,0,0,1918,1905,1,0,0,0,1919,444,1,0,0,0,1920,1921,5,47,0,0,1921,1922,5,42,0,0,1922,1926,1,0,0,0,1923,1925,9,0,0,0,1924,1923,1,0,0,0,1925,1928,1,0,0,0,1926,1927,1,0,0,0,1926,1924,1,0,0,0,1927,1929,1,0,0,0,1928,1926,1,0,0,0,1929,1930,5,42,0,0,1930,1931,5,47,0,0,1931,446,1,0,0,0,1932,1933,5,47,0,0,1933,1934,5,47,0,0,1934,1938,1,0,0,0,1935,1937,8,7,0,0,1936,1935,1,0,0,0,1937,1940,1,0,0,0,1938,1936,1,0,0,0,1938,1939,1,0,0,0,1939,1941,1,0,0,0,1940,1938,1,0,0,0,1941,1942,6,223,0,0,1942,448,1,0,0,0,1943,1945,7,8,0,0,1944,1943,1,0,0,0,1945,1946,1,0,0,0,1946,1944,1,0,0,0,1946,1947,1,0,0,0,1947,1948,1,0,0,0,1948,1949,6,224,0,0,1949,450,1,0,0,0,19,0,1851,1858,1860,1869,1871,1879,1884,1891,1895,1900,1902,1907,1911,1916,1918,1926,1938,1946,1,6,0,0];static __ATN;static get _ATN(){return r.__ATN||(r.__ATN=new Ks().deserialize(r._serializedATN)),r.__ATN}static vocabulary=new nn(r.literalNames,r.symbolicNames,[]);get vocabulary(){return r.vocabulary}static decisionsToDFA=r._ATN.decisionToState.map((e,t)=>new rs(e,t))};var l=class r extends F9{static ABOUT=1;static ABSTRACT=2;static ACCEPT=3;static ACTION=4;static ACTOR=5;static AFTER=6;static ALIAS=7;static ALL=8;static ALLOCATE=9;static ALLOCATION=10;static ANALYSIS=11;static AND=12;static AS=13;static ASSERT=14;static ASSIGN=15;static ASSOC=16;static ASSUME=17;static AT=18;static ATTRIBUTE=19;static BEHAVIOR=20;static BIND=21;static BINDING=22;static BOOL=23;static BY=24;static CALC=25;static CASE=26;static CHAINS=27;static CLASS=28;static CLASSIFIER=29;static COMMENT=30;static COMPOSITE=31;static CONCERN=32;static CONJUGATE=33;static CONJUGATES=34;static CONJUGATION=35;static CONNECT=36;static CONNECTION=37;static CONNECTOR=38;static CONST=39;static CONSTANT=40;static CONSTRAINT=41;static CROSSES=42;static DATATYPE=43;static DECIDE=44;static DEF=45;static DEFAULT=46;static DEFINED=47;static DEPENDENCY=48;static DERIVED=49;static DIFFERENCES=50;static DISJOINING=51;static DISJOINT=52;static DO=53;static DOC=54;static ELSE=55;static END=56;static ENTRY=57;static ENUM=58;static EVENT=59;static EXHIBIT=60;static EXIT=61;static EXPOSE=62;static EXPR=63;static FALSE=64;static FEATURE=65;static FEATURED=66;static FEATURING=67;static FILTER=68;static FIRST=69;static FLOW=70;static FOR=71;static FORK=72;static FRAME=73;static FROM=74;static FUNCTION=75;static HASTYPE=76;static IF=77;static IMPLIES=78;static IMPORT=79;static IN=80;static INCLUDE=81;static INDIVIDUAL=82;static INOUT=83;static INTERACTION=84;static INTERFACE=85;static INTERSECTS=86;static INV=87;static INVERSE=88;static INVERTING=89;static ISTYPE=90;static ITEM=91;static JOIN=92;static LANGUAGE=93;static LIBRARY=94;static LOCALE=95;static LOOP=96;static MEMBER=97;static MERGE=98;static MESSAGE=99;static META=100;static METACLASS=101;static METADATA=102;static MULTIPLICITY=103;static NAMESPACE=104;static NEW=105;static NONUNIQUE=106;static NOT=107;static NULL=108;static OBJECTIVE=109;static OCCURRENCE=110;static OF=111;static OR=112;static ORDERED=113;static OUT=114;static PACKAGE=115;static PARALLEL=116;static PART=117;static PERFORM=118;static PORT=119;static PORTION=120;static PREDICATE=121;static PRIVATE=122;static PROTECTED=123;static PUBLIC=124;static REDEFINES=125;static REDEFINITION=126;static REF=127;static REFERENCES=128;static RENDER=129;static RENDERING=130;static REP=131;static REQUIRE=132;static REQUIREMENT=133;static RETURN=134;static SATISFY=135;static SEND=136;static SNAPSHOT=137;static SPECIALIZATION=138;static SPECIALIZES=139;static STAKEHOLDER=140;static STANDARD=141;static STATE=142;static STEP=143;static STRUCT=144;static SUBCLASSIFIER=145;static SUBJECT=146;static SUBSET=147;static SUBSETS=148;static SUBTYPE=149;static SUCCESSION=150;static TERMINATE=151;static THEN=152;static TIMESLICE=153;static TO=154;static TRANSITION=155;static TRUE=156;static TYPE=157;static TYPED=158;static TYPING=159;static UNIONS=160;static UNTIL=161;static USE=162;static VAR=163;static VARIANT=164;static VARIATION=165;static VERIFICATION=166;static VERIFY=167;static VIA=168;static VIEW=169;static VIEWPOINT=170;static WHEN=171;static WHILE=172;static XOR=173;static BANG_EQ_EQ=174;static COLON_COLON_GT=175;static COLON_GT_GT=176;static EQ_EQ_EQ=177;static BANG_EQ=178;static STAR_STAR=179;static ARROW=180;static DOT_DOT=181;static DOT_QUESTION=182;static COLON_COLON=183;static COLON_EQ=184;static COLON_GT=185;static LE=186;static EQ_EQ=187;static FAT_ARROW=188;static GE=189;static QUESTION_QUESTION=190;static AT_AT=191;static HASH=192;static DOLLAR=193;static PERCENT=194;static AMP=195;static LPAREN=196;static RPAREN=197;static STAR=198;static PLUS=199;static COMMA=200;static MINUS=201;static DOT=202;static SLASH=203;static COLON=204;static SEMI=205;static LT=206;static EQ=207;static GT=208;static QUESTION=209;static AT_SIGN=210;static LBRACK=211;static RBRACK=212;static CARET=213;static LBRACE=214;static PIPE=215;static RBRACE=216;static TILDE=217;static IDENTIFIER=218;static STRING=219;static DOUBLE_STRING=220;static INTEGER=221;static REAL=222;static REGULAR_COMMENT=223;static SINGLE_LINE_NOTE=224;static WS=225;static RULE_ownedExpression=0;static RULE_typeReference=1;static RULE_sequenceExpressionList=2;static RULE_baseExpression=3;static RULE_nullExpression=4;static RULE_featureReferenceExpression=5;static RULE_metadataAccessExpression=6;static RULE_invocationExpression=7;static RULE_constructorExpression=8;static RULE_bodyExpression=9;static RULE_argumentList=10;static RULE_positionalArgumentList=11;static RULE_namedArgumentList=12;static RULE_namedArgument=13;static RULE_literalExpression=14;static RULE_literalBoolean=15;static RULE_literalString=16;static RULE_literalInteger=17;static RULE_literalReal=18;static RULE_literalInfinity=19;static RULE_argumentMember=20;static RULE_argumentExpressionMember=21;static RULE_name=22;static RULE_identification=23;static RULE_relationshipBody=24;static RULE_relationshipOwnedElement=25;static RULE_ownedRelatedElement=26;static RULE_dependency=27;static RULE_annotation=28;static RULE_ownedAnnotation=29;static RULE_annotatingElement=30;static RULE_comment=31;static RULE_documentation=32;static RULE_textualRepresentation=33;static RULE_rootNamespace=34;static RULE_namespace=35;static RULE_namespaceDeclaration=36;static RULE_namespaceBody=37;static RULE_namespaceBodyElement=38;static RULE_memberPrefix=39;static RULE_visibilityIndicator=40;static RULE_namespaceMember=41;static RULE_nonFeatureMember=42;static RULE_namespaceFeatureMember=43;static RULE_aliasMember=44;static RULE_qualifiedName=45;static RULE_importRule=46;static RULE_importDeclaration=47;static RULE_membershipImport=48;static RULE_namespaceImport=49;static RULE_filterPackage=50;static RULE_filterPackageMember=51;static RULE_memberElement=52;static RULE_nonFeatureElement=53;static RULE_featureElement=54;static RULE_type=55;static RULE_typePrefix=56;static RULE_typeDeclaration=57;static RULE_specializationPart=58;static RULE_conjugationPart=59;static RULE_typeRelationshipPart=60;static RULE_disjoiningPart=61;static RULE_unioningPart=62;static RULE_intersectingPart=63;static RULE_differencingPart=64;static RULE_typeBody=65;static RULE_typeBodyElement=66;static RULE_specialization=67;static RULE_ownedSpecialization=68;static RULE_specificType=69;static RULE_generalType=70;static RULE_conjugation=71;static RULE_ownedConjugation=72;static RULE_disjoining=73;static RULE_ownedDisjoining=74;static RULE_unioning=75;static RULE_intersecting=76;static RULE_differencing=77;static RULE_featureMember=78;static RULE_typeFeatureMember=79;static RULE_ownedFeatureMember=80;static RULE_classifier=81;static RULE_classifierDeclaration=82;static RULE_superclassingPart=83;static RULE_subclassification=84;static RULE_ownedSubclassification=85;static RULE_feature=86;static RULE_endFeaturePrefix=87;static RULE_basicFeaturePrefix=88;static RULE_featurePrefix=89;static RULE_ownedCrossFeatureMember=90;static RULE_ownedCrossFeature=91;static RULE_featureDirection=92;static RULE_featureDeclaration=93;static RULE_featureIdentification=94;static RULE_featureRelationshipPart=95;static RULE_chainingPart=96;static RULE_invertingPart=97;static RULE_typeFeaturingPart=98;static RULE_featureSpecializationPart=99;static RULE_multiplicityPart=100;static RULE_featureSpecialization=101;static RULE_typings=102;static RULE_typedBy=103;static RULE_subsettings=104;static RULE_subsets=105;static RULE_references=106;static RULE_crosses=107;static RULE_redefinitions=108;static RULE_redefines=109;static RULE_featureTyping=110;static RULE_ownedFeatureTyping=111;static RULE_subsetting=112;static RULE_ownedSubsetting=113;static RULE_ownedReferenceSubsetting=114;static RULE_ownedCrossSubsetting=115;static RULE_redefinition=116;static RULE_ownedRedefinition=117;static RULE_ownedFeatureChain=118;static RULE_featureChain=119;static RULE_ownedFeatureChaining=120;static RULE_featureInverting=121;static RULE_ownedFeatureInverting=122;static RULE_typeFeaturing=123;static RULE_ownedTypeFeaturing=124;static RULE_dataType=125;static RULE_class=126;static RULE_structure=127;static RULE_association=128;static RULE_associationStructure=129;static RULE_connector=130;static RULE_connectorDeclaration=131;static RULE_binaryConnectorDeclaration=132;static RULE_naryConnectorDeclaration=133;static RULE_connectorEndMember=134;static RULE_connectorEnd=135;static RULE_ownedCrossMultiplicityMember=136;static RULE_ownedCrossMultiplicity=137;static RULE_bindingConnector=138;static RULE_bindingConnectorDeclaration=139;static RULE_succession=140;static RULE_successionDeclaration=141;static RULE_behavior=142;static RULE_step=143;static RULE_function=144;static RULE_functionBody=145;static RULE_functionBodyPart=146;static RULE_returnFeatureMember=147;static RULE_resultExpressionMember=148;static RULE_expression=149;static RULE_predicate=150;static RULE_booleanExpression=151;static RULE_invariant=152;static RULE_ownedExpressionMember=153;static RULE_metadataReference=154;static RULE_typeReferenceMember=155;static RULE_typeResultMember=156;static RULE_referenceTyping=157;static RULE_emptyResultMember=158;static RULE_sequenceOperatorExpression=159;static RULE_sequenceExpressionListMember=160;static RULE_bodyArgumentMember=161;static RULE_bodyArgument=162;static RULE_bodyArgumentValue=163;static RULE_functionReferenceArgumentMember=164;static RULE_functionReferenceArgument=165;static RULE_functionReferenceArgumentValue=166;static RULE_functionReferenceExpression=167;static RULE_functionReferenceMember=168;static RULE_functionReference=169;static RULE_featureChainMember=170;static RULE_ownedFeatureChainMember=171;static RULE_featureReferenceMember=172;static RULE_featureReference=173;static RULE_elementReferenceMember=174;static RULE_constructorResultMember=175;static RULE_constructorResult=176;static RULE_instantiatedTypeMember=177;static RULE_instantiatedTypeReference=178;static RULE_namedArgumentMember=179;static RULE_parameterRedefinition=180;static RULE_expressionBodyMember=181;static RULE_expressionBody=182;static RULE_booleanValue=183;static RULE_realValue=184;static RULE_interaction=185;static RULE_flow=186;static RULE_successionFlow=187;static RULE_flowDeclaration=188;static RULE_payloadFeatureMember=189;static RULE_payloadFeature=190;static RULE_payloadFeatureSpecializationPart=191;static RULE_flowEndMember=192;static RULE_flowEnd=193;static RULE_flowFeatureMember=194;static RULE_flowFeature=195;static RULE_flowFeatureRedefinition=196;static RULE_valuePart=197;static RULE_featureValue=198;static RULE_multiplicity=199;static RULE_multiplicitySubset=200;static RULE_multiplicityRange=201;static RULE_ownedMultiplicity=202;static RULE_ownedMultiplicityRange=203;static RULE_multiplicityBounds=204;static RULE_multiplicityExpressionMember=205;static RULE_metaclass=206;static RULE_prefixMetadataAnnotation=207;static RULE_prefixMetadataMember=208;static RULE_prefixMetadataFeature=209;static RULE_metadataFeature=210;static RULE_metadataFeatureDeclaration=211;static RULE_metadataBody=212;static RULE_metadataBodyElement=213;static RULE_metadataBodyFeatureMember=214;static RULE_metadataBodyFeature=215;static RULE_package=216;static RULE_libraryPackage=217;static RULE_packageDeclaration=218;static RULE_packageBody=219;static RULE_elementFilterMember=220;static RULE_dependencyDeclaration=221;static RULE_annotatingMember=222;static RULE_packageBodyElement=223;static RULE_packageMember=224;static RULE_definitionElement=225;static RULE_usageElement=226;static RULE_basicDefinitionPrefix=227;static RULE_definitionExtensionKeyword=228;static RULE_definitionPrefix=229;static RULE_definition=230;static RULE_definitionDeclaration=231;static RULE_definitionBody=232;static RULE_definitionBodyItem=233;static RULE_definitionBodyItemContent=234;static RULE_definitionMember=235;static RULE_variantUsageMember=236;static RULE_nonOccurrenceUsageMember=237;static RULE_occurrenceUsageMember=238;static RULE_structureUsageMember=239;static RULE_behaviorUsageMember=240;static RULE_refPrefix=241;static RULE_basicUsagePrefix=242;static RULE_endUsagePrefix=243;static RULE_usageExtensionKeyword=244;static RULE_unextendedUsagePrefix=245;static RULE_usagePrefix=246;static RULE_usage=247;static RULE_usageDeclaration=248;static RULE_usageCompletion=249;static RULE_usageBody=250;static RULE_defaultReferenceUsage=251;static RULE_referenceUsage=252;static RULE_endFeatureUsage=253;static RULE_variantReference=254;static RULE_nonOccurrenceUsageElement=255;static RULE_occurrenceUsageElement=256;static RULE_structureUsageElement=257;static RULE_behaviorUsageElement=258;static RULE_variantUsageElement=259;static RULE_subclassificationPart=260;static RULE_attributeDefinition=261;static RULE_attributeUsage=262;static RULE_enumerationDefinition=263;static RULE_enumerationBody=264;static RULE_enumerationUsageMember=265;static RULE_enumeratedValue=266;static RULE_enumerationUsage=267;static RULE_occurrenceDefinitionPrefix=268;static RULE_occurrenceDefinition=269;static RULE_individualDefinition=270;static RULE_emptyMultiplicityMember=271;static RULE_occurrenceUsagePrefix=272;static RULE_occurrenceUsage=273;static RULE_individualUsage=274;static RULE_portionUsage=275;static RULE_portionKind=276;static RULE_eventOccurrenceUsage=277;static RULE_sourceSuccessionMember=278;static RULE_sourceSuccession=279;static RULE_sourceEndMember=280;static RULE_sourceEnd=281;static RULE_itemDefinition=282;static RULE_itemUsage=283;static RULE_partDefinition=284;static RULE_partUsage=285;static RULE_portDefinition=286;static RULE_conjugatedPortDefinitionMember=287;static RULE_conjugatedPortDefinition=288;static RULE_portUsage=289;static RULE_conjugatedPortTyping=290;static RULE_connectionDefinition=291;static RULE_connectionUsage=292;static RULE_connectorPart=293;static RULE_binaryConnectorPart=294;static RULE_naryConnectorPart=295;static RULE_bindingConnectorAsUsage=296;static RULE_successionAsUsage=297;static RULE_interfaceDefinition=298;static RULE_interfaceBody=299;static RULE_interfaceBodyItem=300;static RULE_interfaceNonOccurrenceUsageMember=301;static RULE_interfaceNonOccurrenceUsageElement=302;static RULE_interfaceOccurrenceUsageMember=303;static RULE_interfaceOccurrenceUsageElement=304;static RULE_defaultInterfaceEnd=305;static RULE_interfaceUsage=306;static RULE_interfaceUsageDeclaration=307;static RULE_interfacePart=308;static RULE_binaryInterfacePart=309;static RULE_naryInterfacePart=310;static RULE_interfaceEndMember=311;static RULE_interfaceEnd=312;static RULE_allocationDefinition=313;static RULE_allocationUsage=314;static RULE_allocationUsageDeclaration=315;static RULE_flowDefinition=316;static RULE_message=317;static RULE_messageDeclaration=318;static RULE_messageEventMember=319;static RULE_messageEvent=320;static RULE_flowUsage=321;static RULE_successionFlowUsage=322;static RULE_flowPayloadFeatureMember=323;static RULE_flowPayloadFeature=324;static RULE_flowEndSubsetting=325;static RULE_featureChainPrefix=326;static RULE_actionDefinition=327;static RULE_actionBody=328;static RULE_actionBodyItem=329;static RULE_nonBehaviorBodyItem=330;static RULE_actionBehaviorMember=331;static RULE_initialNodeMember=332;static RULE_actionNodeMember=333;static RULE_actionTargetSuccessionMember=334;static RULE_guardedSuccessionMember=335;static RULE_actionUsage=336;static RULE_actionUsageDeclaration=337;static RULE_performActionUsage=338;static RULE_performActionUsageDeclaration=339;static RULE_actionNode=340;static RULE_actionNodeUsageDeclaration=341;static RULE_actionNodePrefix=342;static RULE_controlNode=343;static RULE_controlNodePrefix=344;static RULE_mergeNode=345;static RULE_decisionNode=346;static RULE_joinNode=347;static RULE_forkNode=348;static RULE_acceptNode=349;static RULE_acceptNodeDeclaration=350;static RULE_acceptParameterPart=351;static RULE_payloadParameterMember=352;static RULE_payloadParameter=353;static RULE_triggerValuePart=354;static RULE_triggerFeatureValue=355;static RULE_triggerExpression=356;static RULE_sendNode=357;static RULE_sendNodeDeclaration=358;static RULE_senderReceiverPart=359;static RULE_nodeParameterMember=360;static RULE_nodeParameter=361;static RULE_featureBinding=362;static RULE_emptyParameterMember=363;static RULE_assignmentNode=364;static RULE_assignmentNodeDeclaration=365;static RULE_assignmentTargetMember=366;static RULE_assignmentTargetParameter=367;static RULE_assignmentTargetBinding=368;static RULE_terminateNode=369;static RULE_ifNode=370;static RULE_expressionParameterMember=371;static RULE_actionBodyParameterMember=372;static RULE_actionBodyParameter=373;static RULE_ifNodeParameterMember=374;static RULE_whileLoopNode=375;static RULE_forLoopNode=376;static RULE_forVariableDeclarationMember=377;static RULE_forVariableDeclaration=378;static RULE_actionTargetSuccession=379;static RULE_targetSuccession=380;static RULE_guardedTargetSuccession=381;static RULE_defaultTargetSuccession=382;static RULE_guardedSuccession=383;static RULE_stateDefinition=384;static RULE_stateDefBody=385;static RULE_stateBodyItem=386;static RULE_entryActionMember=387;static RULE_doActionMember=388;static RULE_exitActionMember=389;static RULE_entryTransitionMember=390;static RULE_stateActionUsage=391;static RULE_statePerformActionUsage=392;static RULE_stateAcceptActionUsage=393;static RULE_stateSendActionUsage=394;static RULE_stateAssignmentActionUsage=395;static RULE_transitionUsageMember=396;static RULE_targetTransitionUsageMember=397;static RULE_stateUsage=398;static RULE_stateUsageBody=399;static RULE_exhibitStateUsage=400;static RULE_transitionUsage=401;static RULE_targetTransitionUsage=402;static RULE_triggerActionMember=403;static RULE_triggerAction=404;static RULE_guardExpressionMember=405;static RULE_effectBehaviorMember=406;static RULE_effectBehaviorUsage=407;static RULE_transitionPerformActionUsage=408;static RULE_transitionAcceptActionUsage=409;static RULE_transitionSendActionUsage=410;static RULE_transitionAssignmentActionUsage=411;static RULE_transitionSuccessionMember=412;static RULE_transitionSuccession=413;static RULE_emptyEndMember=414;static RULE_calculationDefinition=415;static RULE_calculationUsage=416;static RULE_calculationBody=417;static RULE_calculationBodyPart=418;static RULE_calculationBodyItem=419;static RULE_returnParameterMember=420;static RULE_constraintDefinition=421;static RULE_constraintUsage=422;static RULE_assertConstraintUsage=423;static RULE_constraintUsageDeclaration=424;static RULE_requirementDefinition=425;static RULE_requirementBody=426;static RULE_requirementBodyItem=427;static RULE_subjectMember=428;static RULE_subjectUsage=429;static RULE_requirementConstraintMember=430;static RULE_requirementKind=431;static RULE_requirementConstraintUsage=432;static RULE_framedConcernMember=433;static RULE_framedConcernUsage=434;static RULE_actorMember=435;static RULE_actorUsage=436;static RULE_stakeholderMember=437;static RULE_stakeholderUsage=438;static RULE_requirementUsage=439;static RULE_satisfyRequirementUsage=440;static RULE_satisfactionSubjectMember=441;static RULE_satisfactionParameter=442;static RULE_satisfactionFeatureValue=443;static RULE_satisfactionReferenceExpression=444;static RULE_concernDefinition=445;static RULE_concernUsage=446;static RULE_caseDefinition=447;static RULE_caseUsage=448;static RULE_caseBody=449;static RULE_caseBodyItem=450;static RULE_objectiveMember=451;static RULE_objectiveRequirementUsage=452;static RULE_analysisCaseDefinition=453;static RULE_analysisCaseUsage=454;static RULE_verificationCaseDefinition=455;static RULE_verificationCaseUsage=456;static RULE_requirementVerificationMember=457;static RULE_requirementVerificationUsage=458;static RULE_useCaseDefinition=459;static RULE_useCaseUsage=460;static RULE_includeUseCaseUsage=461;static RULE_viewDefinition=462;static RULE_viewDefinitionBody=463;static RULE_viewDefinitionBodyItem=464;static RULE_viewRenderingMember=465;static RULE_viewRenderingUsage=466;static RULE_viewUsage=467;static RULE_viewBody=468;static RULE_viewBodyItem=469;static RULE_expose=470;static RULE_membershipExpose=471;static RULE_namespaceExpose=472;static RULE_viewpointDefinition=473;static RULE_viewpointUsage=474;static RULE_renderingDefinition=475;static RULE_renderingUsage=476;static RULE_metadataDefinition=477;static RULE_prefixMetadataUsage=478;static RULE_metadataUsage=479;static RULE_metadataUsageDeclaration=480;static RULE_metadataBodyUsageMember=481;static RULE_metadataBodyUsage=482;static RULE_extendedDefinition=483;static RULE_extendedUsage=484;static RULE_filterPackageImportDeclaration=485;static RULE_namespaceImportDirect=486;static RULE_calculationUsageDeclaration=487;static RULE_emptyActionUsage_=488;static RULE_emptyFeature_=489;static RULE_emptyMultiplicity_=490;static RULE_emptyUsage_=491;static RULE_filterPackageImport=492;static RULE_nonFeatureChainPrimaryExpression=493;static RULE_portConjugation=494;static literalNames=[null,"'about'","'abstract'","'accept'","'action'","'actor'","'after'","'alias'","'all'","'allocate'","'allocation'","'analysis'","'and'","'as'","'assert'","'assign'","'assoc'","'assume'","'at'","'attribute'","'behavior'","'bind'","'binding'","'bool'","'by'","'calc'","'case'","'chains'","'class'","'classifier'","'comment'","'composite'","'concern'","'conjugate'","'conjugates'","'conjugation'","'connect'","'connection'","'connector'","'const'","'constant'","'constraint'","'crosses'","'datatype'","'decide'","'def'","'default'","'defined'","'dependency'","'derived'","'differences'","'disjoining'","'disjoint'","'do'","'doc'","'else'","'end'","'entry'","'enum'","'event'","'exhibit'","'exit'","'expose'","'expr'","'false'","'feature'","'featured'","'featuring'","'filter'","'first'","'flow'","'for'","'fork'","'frame'","'from'","'function'","'hastype'","'if'","'implies'","'import'","'in'","'include'","'individual'","'inout'","'interaction'","'interface'","'intersects'","'inv'","'inverse'","'inverting'","'istype'","'item'","'join'","'language'","'library'","'locale'","'loop'","'member'","'merge'","'message'","'meta'","'metaclass'","'metadata'","'multiplicity'","'namespace'","'new'","'nonunique'","'not'","'null'","'objective'","'occurrence'","'of'","'or'","'ordered'","'out'","'package'","'parallel'","'part'","'perform'","'port'","'portion'","'predicate'","'private'","'protected'","'public'","'redefines'","'redefinition'","'ref'","'references'","'render'","'rendering'","'rep'","'require'","'requirement'","'return'","'satisfy'","'send'","'snapshot'","'specialization'","'specializes'","'stakeholder'","'standard'","'state'","'step'","'struct'","'subclassifier'","'subject'","'subset'","'subsets'","'subtype'","'succession'","'terminate'","'then'","'timeslice'","'to'","'transition'","'true'","'type'","'typed'","'typing'","'unions'","'until'","'use'","'var'","'variant'","'variation'","'verification'","'verify'","'via'","'view'","'viewpoint'","'when'","'while'","'xor'","'!=='","'::>'","':>>'","'==='","'!='","'**'","'->'","'..'","'.?'","'::'","':='","':>'","'<='","'=='","'=>'","'>='","'??'","'@@'","'#'","'$'","'%'","'&'","'('","')'","'*'","'+'","','","'-'","'.'","'/'","':'","';'","'<'","'='","'>'","'?'","'@'","'['","']'","'^'","'{'","'|'","'}'","'~'"];static symbolicNames=[null,"ABOUT","ABSTRACT","ACCEPT","ACTION","ACTOR","AFTER","ALIAS","ALL","ALLOCATE","ALLOCATION","ANALYSIS","AND","AS","ASSERT","ASSIGN","ASSOC","ASSUME","AT","ATTRIBUTE","BEHAVIOR","BIND","BINDING","BOOL","BY","CALC","CASE","CHAINS","CLASS","CLASSIFIER","COMMENT","COMPOSITE","CONCERN","CONJUGATE","CONJUGATES","CONJUGATION","CONNECT","CONNECTION","CONNECTOR","CONST","CONSTANT","CONSTRAINT","CROSSES","DATATYPE","DECIDE","DEF","DEFAULT","DEFINED","DEPENDENCY","DERIVED","DIFFERENCES","DISJOINING","DISJOINT","DO","DOC","ELSE","END","ENTRY","ENUM","EVENT","EXHIBIT","EXIT","EXPOSE","EXPR","FALSE","FEATURE","FEATURED","FEATURING","FILTER","FIRST","FLOW","FOR","FORK","FRAME","FROM","FUNCTION","HASTYPE","IF","IMPLIES","IMPORT","IN","INCLUDE","INDIVIDUAL","INOUT","INTERACTION","INTERFACE","INTERSECTS","INV","INVERSE","INVERTING","ISTYPE","ITEM","JOIN","LANGUAGE","LIBRARY","LOCALE","LOOP","MEMBER","MERGE","MESSAGE","META","METACLASS","METADATA","MULTIPLICITY","NAMESPACE","NEW","NONUNIQUE","NOT","NULL","OBJECTIVE","OCCURRENCE","OF","OR","ORDERED","OUT","PACKAGE","PARALLEL","PART","PERFORM","PORT","PORTION","PREDICATE","PRIVATE","PROTECTED","PUBLIC","REDEFINES","REDEFINITION","REF","REFERENCES","RENDER","RENDERING","REP","REQUIRE","REQUIREMENT","RETURN","SATISFY","SEND","SNAPSHOT","SPECIALIZATION","SPECIALIZES","STAKEHOLDER","STANDARD","STATE","STEP","STRUCT","SUBCLASSIFIER","SUBJECT","SUBSET","SUBSETS","SUBTYPE","SUCCESSION","TERMINATE","THEN","TIMESLICE","TO","TRANSITION","TRUE","TYPE","TYPED","TYPING","UNIONS","UNTIL","USE","VAR","VARIANT","VARIATION","VERIFICATION","VERIFY","VIA","VIEW","VIEWPOINT","WHEN","WHILE","XOR","BANG_EQ_EQ","COLON_COLON_GT","COLON_GT_GT","EQ_EQ_EQ","BANG_EQ","STAR_STAR","ARROW","DOT_DOT","DOT_QUESTION","COLON_COLON","COLON_EQ","COLON_GT","LE","EQ_EQ","FAT_ARROW","GE","QUESTION_QUESTION","AT_AT","HASH","DOLLAR","PERCENT","AMP","LPAREN","RPAREN","STAR","PLUS","COMMA","MINUS","DOT","SLASH","COLON","SEMI","LT","EQ","GT","QUESTION","AT_SIGN","LBRACK","RBRACK","CARET","LBRACE","PIPE","RBRACE","TILDE","IDENTIFIER","STRING","DOUBLE_STRING","INTEGER","REAL","REGULAR_COMMENT","SINGLE_LINE_NOTE","WS"];static ruleNames=["ownedExpression","typeReference","sequenceExpressionList","baseExpression","nullExpression","featureReferenceExpression","metadataAccessExpression","invocationExpression","constructorExpression","bodyExpression","argumentList","positionalArgumentList","namedArgumentList","namedArgument","literalExpression","literalBoolean","literalString","literalInteger","literalReal","literalInfinity","argumentMember","argumentExpressionMember","name","identification","relationshipBody","relationshipOwnedElement","ownedRelatedElement","dependency","annotation","ownedAnnotation","annotatingElement","comment","documentation","textualRepresentation","rootNamespace","namespace","namespaceDeclaration","namespaceBody","namespaceBodyElement","memberPrefix","visibilityIndicator","namespaceMember","nonFeatureMember","namespaceFeatureMember","aliasMember","qualifiedName","importRule","importDeclaration","membershipImport","namespaceImport","filterPackage","filterPackageMember","memberElement","nonFeatureElement","featureElement","type","typePrefix","typeDeclaration","specializationPart","conjugationPart","typeRelationshipPart","disjoiningPart","unioningPart","intersectingPart","differencingPart","typeBody","typeBodyElement","specialization","ownedSpecialization","specificType","generalType","conjugation","ownedConjugation","disjoining","ownedDisjoining","unioning","intersecting","differencing","featureMember","typeFeatureMember","ownedFeatureMember","classifier","classifierDeclaration","superclassingPart","subclassification","ownedSubclassification","feature","endFeaturePrefix","basicFeaturePrefix","featurePrefix","ownedCrossFeatureMember","ownedCrossFeature","featureDirection","featureDeclaration","featureIdentification","featureRelationshipPart","chainingPart","invertingPart","typeFeaturingPart","featureSpecializationPart","multiplicityPart","featureSpecialization","typings","typedBy","subsettings","subsets","references","crosses","redefinitions","redefines","featureTyping","ownedFeatureTyping","subsetting","ownedSubsetting","ownedReferenceSubsetting","ownedCrossSubsetting","redefinition","ownedRedefinition","ownedFeatureChain","featureChain","ownedFeatureChaining","featureInverting","ownedFeatureInverting","typeFeaturing","ownedTypeFeaturing","dataType","class","structure","association","associationStructure","connector","connectorDeclaration","binaryConnectorDeclaration","naryConnectorDeclaration","connectorEndMember","connectorEnd","ownedCrossMultiplicityMember","ownedCrossMultiplicity","bindingConnector","bindingConnectorDeclaration","succession","successionDeclaration","behavior","step","function","functionBody","functionBodyPart","returnFeatureMember","resultExpressionMember","expression","predicate","booleanExpression","invariant","ownedExpressionMember","metadataReference","typeReferenceMember","typeResultMember","referenceTyping","emptyResultMember","sequenceOperatorExpression","sequenceExpressionListMember","bodyArgumentMember","bodyArgument","bodyArgumentValue","functionReferenceArgumentMember","functionReferenceArgument","functionReferenceArgumentValue","functionReferenceExpression","functionReferenceMember","functionReference","featureChainMember","ownedFeatureChainMember","featureReferenceMember","featureReference","elementReferenceMember","constructorResultMember","constructorResult","instantiatedTypeMember","instantiatedTypeReference","namedArgumentMember","parameterRedefinition","expressionBodyMember","expressionBody","booleanValue","realValue","interaction","flow","successionFlow","flowDeclaration","payloadFeatureMember","payloadFeature","payloadFeatureSpecializationPart","flowEndMember","flowEnd","flowFeatureMember","flowFeature","flowFeatureRedefinition","valuePart","featureValue","multiplicity","multiplicitySubset","multiplicityRange","ownedMultiplicity","ownedMultiplicityRange","multiplicityBounds","multiplicityExpressionMember","metaclass","prefixMetadataAnnotation","prefixMetadataMember","prefixMetadataFeature","metadataFeature","metadataFeatureDeclaration","metadataBody","metadataBodyElement","metadataBodyFeatureMember","metadataBodyFeature","package","libraryPackage","packageDeclaration","packageBody","elementFilterMember","dependencyDeclaration","annotatingMember","packageBodyElement","packageMember","definitionElement","usageElement","basicDefinitionPrefix","definitionExtensionKeyword","definitionPrefix","definition","definitionDeclaration","definitionBody","definitionBodyItem","definitionBodyItemContent","definitionMember","variantUsageMember","nonOccurrenceUsageMember","occurrenceUsageMember","structureUsageMember","behaviorUsageMember","refPrefix","basicUsagePrefix","endUsagePrefix","usageExtensionKeyword","unextendedUsagePrefix","usagePrefix","usage","usageDeclaration","usageCompletion","usageBody","defaultReferenceUsage","referenceUsage","endFeatureUsage","variantReference","nonOccurrenceUsageElement","occurrenceUsageElement","structureUsageElement","behaviorUsageElement","variantUsageElement","subclassificationPart","attributeDefinition","attributeUsage","enumerationDefinition","enumerationBody","enumerationUsageMember","enumeratedValue","enumerationUsage","occurrenceDefinitionPrefix","occurrenceDefinition","individualDefinition","emptyMultiplicityMember","occurrenceUsagePrefix","occurrenceUsage","individualUsage","portionUsage","portionKind","eventOccurrenceUsage","sourceSuccessionMember","sourceSuccession","sourceEndMember","sourceEnd","itemDefinition","itemUsage","partDefinition","partUsage","portDefinition","conjugatedPortDefinitionMember","conjugatedPortDefinition","portUsage","conjugatedPortTyping","connectionDefinition","connectionUsage","connectorPart","binaryConnectorPart","naryConnectorPart","bindingConnectorAsUsage","successionAsUsage","interfaceDefinition","interfaceBody","interfaceBodyItem","interfaceNonOccurrenceUsageMember","interfaceNonOccurrenceUsageElement","interfaceOccurrenceUsageMember","interfaceOccurrenceUsageElement","defaultInterfaceEnd","interfaceUsage","interfaceUsageDeclaration","interfacePart","binaryInterfacePart","naryInterfacePart","interfaceEndMember","interfaceEnd","allocationDefinition","allocationUsage","allocationUsageDeclaration","flowDefinition","message","messageDeclaration","messageEventMember","messageEvent","flowUsage","successionFlowUsage","flowPayloadFeatureMember","flowPayloadFeature","flowEndSubsetting","featureChainPrefix","actionDefinition","actionBody","actionBodyItem","nonBehaviorBodyItem","actionBehaviorMember","initialNodeMember","actionNodeMember","actionTargetSuccessionMember","guardedSuccessionMember","actionUsage","actionUsageDeclaration","performActionUsage","performActionUsageDeclaration","actionNode","actionNodeUsageDeclaration","actionNodePrefix","controlNode","controlNodePrefix","mergeNode","decisionNode","joinNode","forkNode","acceptNode","acceptNodeDeclaration","acceptParameterPart","payloadParameterMember","payloadParameter","triggerValuePart","triggerFeatureValue","triggerExpression","sendNode","sendNodeDeclaration","senderReceiverPart","nodeParameterMember","nodeParameter","featureBinding","emptyParameterMember","assignmentNode","assignmentNodeDeclaration","assignmentTargetMember","assignmentTargetParameter","assignmentTargetBinding","terminateNode","ifNode","expressionParameterMember","actionBodyParameterMember","actionBodyParameter","ifNodeParameterMember","whileLoopNode","forLoopNode","forVariableDeclarationMember","forVariableDeclaration","actionTargetSuccession","targetSuccession","guardedTargetSuccession","defaultTargetSuccession","guardedSuccession","stateDefinition","stateDefBody","stateBodyItem","entryActionMember","doActionMember","exitActionMember","entryTransitionMember","stateActionUsage","statePerformActionUsage","stateAcceptActionUsage","stateSendActionUsage","stateAssignmentActionUsage","transitionUsageMember","targetTransitionUsageMember","stateUsage","stateUsageBody","exhibitStateUsage","transitionUsage","targetTransitionUsage","triggerActionMember","triggerAction","guardExpressionMember","effectBehaviorMember","effectBehaviorUsage","transitionPerformActionUsage","transitionAcceptActionUsage","transitionSendActionUsage","transitionAssignmentActionUsage","transitionSuccessionMember","transitionSuccession","emptyEndMember","calculationDefinition","calculationUsage","calculationBody","calculationBodyPart","calculationBodyItem","returnParameterMember","constraintDefinition","constraintUsage","assertConstraintUsage","constraintUsageDeclaration","requirementDefinition","requirementBody","requirementBodyItem","subjectMember","subjectUsage","requirementConstraintMember","requirementKind","requirementConstraintUsage","framedConcernMember","framedConcernUsage","actorMember","actorUsage","stakeholderMember","stakeholderUsage","requirementUsage","satisfyRequirementUsage","satisfactionSubjectMember","satisfactionParameter","satisfactionFeatureValue","satisfactionReferenceExpression","concernDefinition","concernUsage","caseDefinition","caseUsage","caseBody","caseBodyItem","objectiveMember","objectiveRequirementUsage","analysisCaseDefinition","analysisCaseUsage","verificationCaseDefinition","verificationCaseUsage","requirementVerificationMember","requirementVerificationUsage","useCaseDefinition","useCaseUsage","includeUseCaseUsage","viewDefinition","viewDefinitionBody","viewDefinitionBodyItem","viewRenderingMember","viewRenderingUsage","viewUsage","viewBody","viewBodyItem","expose","membershipExpose","namespaceExpose","viewpointDefinition","viewpointUsage","renderingDefinition","renderingUsage","metadataDefinition","prefixMetadataUsage","metadataUsage","metadataUsageDeclaration","metadataBodyUsageMember","metadataBodyUsage","extendedDefinition","extendedUsage","filterPackageImportDeclaration","namespaceImportDirect","calculationUsageDeclaration","emptyActionUsage_","emptyFeature_","emptyMultiplicity_","emptyUsage_","filterPackageImport","nonFeatureChainPrimaryExpression","portConjugation"];get grammarFileName(){return"SysMLv2Parser.g4"}get literalNames(){return r.literalNames}get symbolicNames(){return r.symbolicNames}get ruleNames(){return r.ruleNames}get serializedATN(){return r._serializedATN}createFailedPredicateException(e,t){return new L1(this,e,t)}constructor(e){super(e),this.interpreter=new T1(this,r._ATN,r.decisionsToDFA,new oa)}ownedExpression(e){e===void 0&&(e=0);let t=this.context,i=this.state,n=new Me(this.context,i),s=n,o=0;this.enterRecursionRule(n,0,r.RULE_ownedExpression,e);let a;try{let u;this.enterOuterAlt(n,1);{switch(this.state=1005,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.IF:this.state=991,this.match(r.IF),this.state=992,this.ownedExpression(0),this.state=993,this.match(r.QUESTION),this.state=994,this.ownedExpression(0),this.state=995,this.match(r.ELSE),this.state=996,this.ownedExpression(28);break;case r.NOT:case r.PLUS:case r.MINUS:case r.TILDE:this.state=998,a=this.tokenStream.LA(1),a===107||(a-199&-32)===0&&(1<<a-199&262149)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=999,this.ownedExpression(14);break;case r.AT_AT:case r.AT_SIGN:this.state=1e3,a=this.tokenStream.LA(1),a===191||a===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1001,this.typeReference();break;case r.ALL:this.state=1002,this.match(r.ALL),this.state=1003,this.typeReference();break;case r.FALSE:case r.NEW:case r.NULL:case r.TRUE:case r.DOLLAR:case r.LPAREN:case r.STAR:case r.LBRACE:case r.IDENTIFIER:case r.STRING:case r.DOUBLE_STRING:case r.INTEGER:case r.REAL:this.state=1004,this.baseExpression();break;default:throw new ne(this)}for(this.context.stop=this.tokenStream.LT(-1),this.state=1088,this.errorHandler.sync(this),u=this.interpreter.adaptivePredict(this.tokenStream,5,this.context);u!==2&&u!==Ce.INVALID_ALT_NUMBER;){if(u===1)switch(this.parseListeners!=null&&this.triggerExitRuleEvent(),s=n,this.state=1086,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,4,this.context)){case 1:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1007,!this.precpred(this.context,27))throw this.createFailedPredicateException("this.precpred(this.context, 27)");this.state=1008,this.match(r.QUESTION_QUESTION),this.state=1009,this.ownedExpression(28)}break;case 2:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1010,!this.precpred(this.context,26))throw this.createFailedPredicateException("this.precpred(this.context, 26)");this.state=1011,this.match(r.IMPLIES),this.state=1012,this.ownedExpression(27)}break;case 3:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1013,!this.precpred(this.context,25))throw this.createFailedPredicateException("this.precpred(this.context, 25)");this.state=1014,this.match(r.OR),this.state=1015,this.ownedExpression(26)}break;case 4:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1016,!this.precpred(this.context,24))throw this.createFailedPredicateException("this.precpred(this.context, 24)");this.state=1017,this.match(r.AND),this.state=1018,this.ownedExpression(25)}break;case 5:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1019,!this.precpred(this.context,23))throw this.createFailedPredicateException("this.precpred(this.context, 23)");this.state=1020,this.match(r.XOR),this.state=1021,this.ownedExpression(24)}break;case 6:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1022,!this.precpred(this.context,22))throw this.createFailedPredicateException("this.precpred(this.context, 22)");this.state=1023,this.match(r.PIPE),this.state=1024,this.ownedExpression(23)}break;case 7:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1025,!this.precpred(this.context,21))throw this.createFailedPredicateException("this.precpred(this.context, 21)");this.state=1026,this.match(r.AMP),this.state=1027,this.ownedExpression(22)}break;case 8:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1028,!this.precpred(this.context,20))throw this.createFailedPredicateException("this.precpred(this.context, 20)");this.state=1029,a=this.tokenStream.LA(1),(a-174&-32)===0&&(1<<a-174&8217)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1030,this.ownedExpression(21)}break;case 9:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1031,!this.precpred(this.context,19))throw this.createFailedPredicateException("this.precpred(this.context, 19)");this.state=1032,a=this.tokenStream.LA(1),(a-186&-32)===0&&(1<<a-186&5242889)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1033,this.ownedExpression(20)}break;case 10:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1034,!this.precpred(this.context,18))throw this.createFailedPredicateException("this.precpred(this.context, 18)");this.state=1035,this.match(r.DOT_DOT),this.state=1036,this.ownedExpression(19)}break;case 11:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1037,!this.precpred(this.context,17))throw this.createFailedPredicateException("this.precpred(this.context, 17)");this.state=1038,a=this.tokenStream.LA(1),a===199||a===201?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1039,this.ownedExpression(18)}break;case 12:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1040,!this.precpred(this.context,16))throw this.createFailedPredicateException("this.precpred(this.context, 16)");this.state=1041,a=this.tokenStream.LA(1),(a-194&-32)===0&&(1<<a-194&529)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1042,this.ownedExpression(17)}break;case 13:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1043,!this.precpred(this.context,15))throw this.createFailedPredicateException("this.precpred(this.context, 15)");this.state=1044,a=this.tokenStream.LA(1),a===179||a===213?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1045,this.ownedExpression(15)}break;case 14:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1046,!this.precpred(this.context,12))throw this.createFailedPredicateException("this.precpred(this.context, 12)");this.state=1047,a=this.tokenStream.LA(1),a===76||a===90||a===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1048,this.typeReference()}break;case 15:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1049,!this.precpred(this.context,11))throw this.createFailedPredicateException("this.precpred(this.context, 11)");this.state=1050,this.match(r.AS),this.state=1051,this.typeReference()}break;case 16:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1052,!this.precpred(this.context,10))throw this.createFailedPredicateException("this.precpred(this.context, 10)");this.state=1053,this.match(r.AT_AT),this.state=1054,this.typeReference()}break;case 17:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1055,!this.precpred(this.context,9))throw this.createFailedPredicateException("this.precpred(this.context, 9)");this.state=1056,this.match(r.META),this.state=1057,this.typeReference()}break;case 18:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1058,!this.precpred(this.context,8))throw this.createFailedPredicateException("this.precpred(this.context, 8)");this.state=1059,this.match(r.LBRACK),this.state=1061,this.errorHandler.sync(this),a=this.tokenStream.LA(1),(a===8||a===64||a===77||(a-105&-32)===0&&(1<<a-105&13)!==0||a===156||(a-191&-32)===0&&(1<<a-191&4236772773)!==0)&&(this.state=1060,this.sequenceExpressionList()),this.state=1063,this.match(r.RBRACK)}break;case 19:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1064,!this.precpred(this.context,7))throw this.createFailedPredicateException("this.precpred(this.context, 7)");this.state=1065,this.match(r.HASH),this.state=1066,this.match(r.LPAREN),this.state=1068,this.errorHandler.sync(this),a=this.tokenStream.LA(1),(a===8||a===64||a===77||(a-105&-32)===0&&(1<<a-105&13)!==0||a===156||(a-191&-32)===0&&(1<<a-191&4236772773)!==0)&&(this.state=1067,this.sequenceExpressionList()),this.state=1070,this.match(r.RPAREN)}break;case 20:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1071,!this.precpred(this.context,6))throw this.createFailedPredicateException("this.precpred(this.context, 6)");this.state=1072,this.argumentList()}break;case 21:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1073,!this.precpred(this.context,5))throw this.createFailedPredicateException("this.precpred(this.context, 5)");this.state=1074,this.match(r.DOT),this.state=1075,this.qualifiedName()}break;case 22:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1076,!this.precpred(this.context,4))throw this.createFailedPredicateException("this.precpred(this.context, 4)");this.state=1077,this.match(r.DOT_QUESTION),this.state=1078,this.bodyExpression()}break;case 23:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1079,!this.precpred(this.context,3))throw this.createFailedPredicateException("this.precpred(this.context, 3)");switch(this.state=1080,this.match(r.ARROW),this.state=1081,this.qualifiedName(),this.state=1084,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LBRACE:this.state=1082,this.bodyExpression();break;case r.LPAREN:this.state=1083,this.argumentList();break;default:throw new ne(this)}}break}this.state=1090,this.errorHandler.sync(this),u=this.interpreter.adaptivePredict(this.tokenStream,5,this.context)}}}catch(u){if(u instanceof p)this.errorHandler.reportError(this,u),this.errorHandler.recover(this,u);else throw u}finally{this.unrollRecursionContexts(t)}return n}typeReference(){let e=new cu(this.context,this.state);this.enterRule(e,2,r.RULE_typeReference);try{this.enterOuterAlt(e,1),this.state=1091,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sequenceExpressionList(){let e=new du(this.context,this.state);this.enterRule(e,4,r.RULE_sequenceExpressionList);let t;try{for(this.enterOuterAlt(e,1),this.state=1093,this.ownedExpression(0),this.state=1098,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1094,this.match(r.COMMA),this.state=1095,this.ownedExpression(0),this.state=1100,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}baseExpression(){let e=new Sg(this.context,this.state);this.enterRule(e,6,r.RULE_baseExpression);let t;try{switch(this.state=1116,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,9,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1101,this.nullExpression();break;case 2:this.enterOuterAlt(e,2),this.state=1102,this.literalExpression();break;case 3:switch(this.enterOuterAlt(e,3),this.state=1103,this.qualifiedName(),this.state=1107,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,7,this.context)){case 1:this.state=1104,this.argumentList();break;case 2:this.state=1105,this.match(r.DOT),this.state=1106,this.match(r.METADATA);break}break;case 4:this.enterOuterAlt(e,4),this.state=1109,this.constructorExpression();break;case 5:this.enterOuterAlt(e,5),this.state=1110,this.bodyExpression();break;case 6:this.enterOuterAlt(e,6),this.state=1111,this.match(r.LPAREN),this.state=1113,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&13)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=1112,this.sequenceExpressionList()),this.state=1115,this.match(r.RPAREN);break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nullExpression(){let e=new Pg(this.context,this.state);this.enterRule(e,8,r.RULE_nullExpression);try{switch(this.state=1121,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.NULL:this.enterOuterAlt(e,1),this.state=1118,this.match(r.NULL);break;case r.LPAREN:this.enterOuterAlt(e,2),this.state=1119,this.match(r.LPAREN),this.state=1120,this.match(r.RPAREN);break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureReferenceExpression(){let e=new Lg(this.context,this.state);this.enterRule(e,10,r.RULE_featureReferenceExpression);try{this.enterOuterAlt(e,1),this.state=1123,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataAccessExpression(){let e=new H9(this.context,this.state);this.enterRule(e,12,r.RULE_metadataAccessExpression);try{this.enterOuterAlt(e,1),this.state=1125,this.qualifiedName(),this.state=1126,this.match(r.DOT),this.state=1127,this.match(r.METADATA)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}invocationExpression(){let e=new z9(this.context,this.state);this.enterRule(e,14,r.RULE_invocationExpression);try{this.enterOuterAlt(e,1),this.state=1129,this.qualifiedName(),this.state=1130,this.argumentList()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constructorExpression(){let e=new Tg(this.context,this.state);this.enterRule(e,16,r.RULE_constructorExpression);try{this.enterOuterAlt(e,1),this.state=1132,this.match(r.NEW),this.state=1133,this.qualifiedName(),this.state=1134,this.argumentList()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyExpression(){let e=new hu(this.context,this.state);this.enterRule(e,18,r.RULE_bodyExpression);try{this.enterOuterAlt(e,1),this.state=1136,this.match(r.LBRACE),this.state=1137,this.functionBodyPart(),this.state=1138,this.match(r.RBRACE)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}argumentList(){let e=new Js(this.context,this.state);this.enterRule(e,20,r.RULE_argumentList);try{this.enterOuterAlt(e,1);{switch(this.state=1140,this.match(r.LPAREN),this.state=1143,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,11,this.context)){case 1:this.state=1141,this.positionalArgumentList();break;case 2:this.state=1142,this.namedArgumentList();break}this.state=1145,this.match(r.RPAREN)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}positionalArgumentList(){let e=new wg(this.context,this.state);this.enterRule(e,22,r.RULE_positionalArgumentList);let t;try{for(this.enterOuterAlt(e,1),this.state=1147,this.ownedExpression(0),this.state=1152,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1148,this.match(r.COMMA),this.state=1149,this.ownedExpression(0),this.state=1154,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namedArgumentList(){let e=new kg(this.context,this.state);this.enterRule(e,24,r.RULE_namedArgumentList);let t;try{for(this.enterOuterAlt(e,1),this.state=1155,this.namedArgument(),this.state=1160,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1156,this.match(r.COMMA),this.state=1157,this.namedArgument(),this.state=1162,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namedArgument(){let e=new pu(this.context,this.state);this.enterRule(e,26,r.RULE_namedArgument);try{this.enterOuterAlt(e,1),this.state=1163,this.qualifiedName(),this.state=1164,this.match(r.EQ),this.state=1165,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalExpression(){let e=new w1(this.context,this.state);this.enterRule(e,28,r.RULE_literalExpression);try{switch(this.state=1172,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.FALSE:case r.TRUE:this.enterOuterAlt(e,1),this.state=1167,this.literalBoolean();break;case r.DOUBLE_STRING:this.enterOuterAlt(e,2),this.state=1168,this.literalString();break;case r.INTEGER:this.enterOuterAlt(e,3),this.state=1169,this.literalInteger();break;case r.REAL:this.enterOuterAlt(e,4),this.state=1170,this.literalReal();break;case r.STAR:this.enterOuterAlt(e,5),this.state=1171,this.literalInfinity();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalBoolean(){let e=new Ag(this.context,this.state);this.enterRule(e,30,r.RULE_literalBoolean);let t;try{this.enterOuterAlt(e,1),this.state=1174,t=this.tokenStream.LA(1),t===64||t===156?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}literalString(){let e=new Mg(this.context,this.state);this.enterRule(e,32,r.RULE_literalString);try{this.enterOuterAlt(e,1),this.state=1176,this.match(r.DOUBLE_STRING)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalInteger(){let e=new _g(this.context,this.state);this.enterRule(e,34,r.RULE_literalInteger);try{this.enterOuterAlt(e,1),this.state=1178,this.match(r.INTEGER)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalReal(){let e=new Ng(this.context,this.state);this.enterRule(e,36,r.RULE_literalReal);try{this.enterOuterAlt(e,1),this.state=1180,this.match(r.REAL)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalInfinity(){let e=new Ig(this.context,this.state);this.enterRule(e,38,r.RULE_literalInfinity);try{this.enterOuterAlt(e,1),this.state=1182,this.match(r.STAR)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}argumentMember(){let e=new Ug(this.context,this.state);this.enterRule(e,40,r.RULE_argumentMember);try{this.enterOuterAlt(e,1),this.state=1184,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}argumentExpressionMember(){let e=new Og(this.context,this.state);this.enterRule(e,42,r.RULE_argumentExpressionMember);try{this.enterOuterAlt(e,1),this.state=1186,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}name(){let e=new Or(this.context,this.state);this.enterRule(e,44,r.RULE_name);let t;try{this.enterOuterAlt(e,1),this.state=1188,t=this.tokenStream.LA(1),t===218||t===219?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}identification(){let e=new ot(this.context,this.state);this.enterRule(e,46,r.RULE_identification);try{switch(this.state=1200,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,15,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1190,this.match(r.LT),this.state=1191,this.name(),this.state=1192,this.match(r.GT),this.state=1193,this.name();break;case 2:this.enterOuterAlt(e,2),this.state=1195,this.match(r.LT),this.state=1196,this.name(),this.state=1197,this.match(r.GT);break;case 3:this.enterOuterAlt(e,3),this.state=1199,this.name();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}relationshipBody(){let e=new Xt(this.context,this.state);this.enterRule(e,48,r.RULE_relationshipBody);let t;try{switch(this.state=1219,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,18,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1202,this.match(r.SEMI);break;case 2:this.enterOuterAlt(e,2);{for(this.state=1203,this.match(r.LBRACE),this.state=1207,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&4040229124)!==0||(t-33&-32)===0&&(1<<t-33&1085130343)!==0||(t-65&-32)===0&&(1<<t-65&1909228581)!==0||(t-101&-32)===0&&(1<<t-101&1259892783)!==0||(t-138&-32)===0&&(1<<t-138&37232361)!==0||(t-175&-32)===0&&(1<<t-175&2684756995)!==0||(t-210&-32)===0&&(1<<t-210&9091)!==0;)this.state=1204,this.relationshipOwnedElement(),this.state=1209,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1210,this.match(r.RBRACE)}break;case 3:this.enterOuterAlt(e,3);{for(this.state=1211,this.match(r.LBRACE),this.state=1215,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===30||t===54||(t-93&-32)===0&&(1<<t-93&517)!==0||t===131||(t-192&-32)===0&&(1<<t-192&2147745793)!==0;)this.state=1212,this.ownedAnnotation(),this.state=1217,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1218,this.match(r.RBRACE)}break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}relationshipOwnedElement(){let e=new k1(this.context,this.state);this.enterRule(e,50,r.RULE_relationshipOwnedElement);try{switch(this.state=1223,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,19,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1221,this.ownedRelatedElement();break;case 2:this.enterOuterAlt(e,2),this.state=1222,this.ownedAnnotation();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedRelatedElement(){let e=new Dg(this.context,this.state);this.enterRule(e,52,r.RULE_ownedRelatedElement);try{switch(this.state=1227,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,20,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1225,this.nonFeatureElement();break;case 2:this.enterOuterAlt(e,2),this.state=1226,this.featureElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}dependency(){let e=new A1(this.context,this.state);this.enterRule(e,54,r.RULE_dependency);let t;try{switch(this.state=1271,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,27,this.context)){case 1:this.enterOuterAlt(e,1);{for(this.state=1232,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1229,this.prefixMetadataAnnotation(),this.state=1234,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1235,this.match(r.DEPENDENCY),this.state=1240,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,23,this.context)===1&&(this.state=1237,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1236,this.identification()),this.state=1239,this.match(r.FROM)),this.state=1242,this.qualifiedName(),this.state=1247,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1243,this.match(r.COMMA),this.state=1244,this.qualifiedName(),this.state=1249,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1250,this.match(r.TO),this.state=1251,this.qualifiedName(),this.state=1256,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1252,this.match(r.COMMA),this.state=1253,this.qualifiedName(),this.state=1258,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1259,this.relationshipBody()}break;case 2:this.enterOuterAlt(e,2);{for(this.state=1264,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1261,this.prefixMetadataAnnotation(),this.state=1266,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1267,this.match(r.DEPENDENCY),this.state=1268,this.dependencyDeclaration(),this.state=1269,this.relationshipBody()}break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}annotation(){let e=new is(this.context,this.state);this.enterRule(e,56,r.RULE_annotation);try{this.enterOuterAlt(e,1),this.state=1273,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedAnnotation(){let e=new fu(this.context,this.state);this.enterRule(e,58,r.RULE_ownedAnnotation);try{this.enterOuterAlt(e,1),this.state=1275,this.annotatingElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}annotatingElement(){let e=new aa(this.context,this.state);this.enterRule(e,60,r.RULE_annotatingElement);try{switch(this.state=1281,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COMMENT:case r.LOCALE:case r.REGULAR_COMMENT:this.enterOuterAlt(e,1),this.state=1277,this.comment();break;case r.DOC:this.enterOuterAlt(e,2),this.state=1278,this.documentation();break;case r.LANGUAGE:case r.REP:this.enterOuterAlt(e,3),this.state=1279,this.textualRepresentation();break;case r.METADATA:case r.HASH:case r.AT_SIGN:this.enterOuterAlt(e,4),this.state=1280,this.metadataFeature();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}comment(){let e=new $g(this.context,this.state);this.enterRule(e,62,r.RULE_comment);let t;try{this.enterOuterAlt(e,1);{if(this.state=1298,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===30&&(this.state=1283,this.match(r.COMMENT),this.state=1285,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1284,this.identification()),this.state=1296,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===1))for(this.state=1287,this.match(r.ABOUT),this.state=1288,this.annotation(),this.state=1293,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1289,this.match(r.COMMA),this.state=1290,this.annotation(),this.state=1295,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1302,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===95&&(this.state=1300,this.match(r.LOCALE),this.state=1301,this.match(r.DOUBLE_STRING)),this.state=1304,this.match(r.REGULAR_COMMENT)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}documentation(){let e=new Fg(this.context,this.state);this.enterRule(e,64,r.RULE_documentation);let t;try{this.enterOuterAlt(e,1),this.state=1306,this.match(r.DOC),this.state=1308,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1307,this.identification()),this.state=1312,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===95&&(this.state=1310,this.match(r.LOCALE),this.state=1311,this.match(r.DOUBLE_STRING)),this.state=1314,this.match(r.REGULAR_COMMENT)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}textualRepresentation(){let e=new Hg(this.context,this.state);this.enterRule(e,66,r.RULE_textualRepresentation);let t;try{this.enterOuterAlt(e,1),this.state=1320,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===131&&(this.state=1316,this.match(r.REP),this.state=1318,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1317,this.identification())),this.state=1322,this.match(r.LANGUAGE),this.state=1323,this.match(r.DOUBLE_STRING),this.state=1324,this.match(r.REGULAR_COMMENT)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}rootNamespace(){let e=new B9(this.context,this.state);this.enterRule(e,68,r.RULE_rootNamespace);let t;try{this.enterOuterAlt(e,1);{for(this.state=1329,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3364135109)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=1326,this.packageBodyElement(),this.state=1331,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1332,this.match(r.EOF)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespace(){let e=new zg(this.context,this.state);this.enterRule(e,70,r.RULE_namespace);let t;try{this.enterOuterAlt(e,1);{for(this.state=1337,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1334,this.prefixMetadataMember(),this.state=1339,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1340,this.namespaceDeclaration(),this.state=1341,this.namespaceBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceDeclaration(){let e=new Bg(this.context,this.state);this.enterRule(e,72,r.RULE_namespaceDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=1343,this.match(r.NAMESPACE),this.state=1345,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1344,this.identification())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceBody(){let e=new jg(this.context,this.state);this.enterRule(e,74,r.RULE_namespaceBody);let t;try{switch(this.state=1356,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=1347,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=1348,this.match(r.LBRACE),this.state=1352,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&4040229252)!==0||(t-33&-32)===0&&(1<<t-33&1085130343)!==0||(t-65&-32)===0&&(1<<t-65&1909244965)!==0||(t-101&-32)===0&&(1<<t-101&1274572847)!==0||(t-138&-32)===0&&(1<<t-138&37232361)!==0||(t-175&-32)===0&&(1<<t-175&2684756995)!==0||(t-210&-32)===0&&(1<<t-210&9091)!==0;)this.state=1349,this.namespaceBodyElement(),this.state=1354,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1355,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceBodyElement(){let e=new M1(this.context,this.state);this.enterRule(e,76,r.RULE_namespaceBodyElement);try{switch(this.state=1361,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,43,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1358,this.namespaceMember();break;case 2:this.enterOuterAlt(e,2),this.state=1359,this.aliasMember();break;case 3:this.enterOuterAlt(e,3),this.state=1360,this.importRule();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}memberPrefix(){let e=new _e(this.context,this.state);this.enterRule(e,78,r.RULE_memberPrefix);let t;try{this.enterOuterAlt(e,1),this.state=1364,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-122&-32)===0&&(1<<t-122&7)!==0&&(this.state=1363,this.visibilityIndicator())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}visibilityIndicator(){let e=new _1(this.context,this.state);this.enterRule(e,80,r.RULE_visibilityIndicator);let t;try{this.enterOuterAlt(e,1),this.state=1366,t=this.tokenStream.LA(1),(t-122&-32)===0&&(1<<t-122&7)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceMember(){let e=new qg(this.context,this.state);this.enterRule(e,82,r.RULE_namespaceMember);try{switch(this.state=1370,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,45,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1368,this.nonFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=1369,this.namespaceFeatureMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonFeatureMember(){let e=new mu(this.context,this.state);this.enterRule(e,84,r.RULE_nonFeatureMember);try{this.enterOuterAlt(e,1),this.state=1372,this.memberPrefix(),this.state=1373,this.memberElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namespaceFeatureMember(){let e=new Vg(this.context,this.state);this.enterRule(e,86,r.RULE_namespaceFeatureMember);try{this.enterOuterAlt(e,1),this.state=1375,this.memberPrefix(),this.state=1376,this.featureElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}aliasMember(){let e=new sn(this.context,this.state);this.enterRule(e,88,r.RULE_aliasMember);let t;try{this.enterOuterAlt(e,1),this.state=1378,this.memberPrefix(),this.state=1379,this.match(r.ALIAS),this.state=1384,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===206&&(this.state=1380,this.match(r.LT),this.state=1381,this.name(),this.state=1382,this.match(r.GT)),this.state=1387,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===218||t===219)&&(this.state=1386,this.name()),this.state=1389,this.match(r.FOR),this.state=1390,this.qualifiedName(),this.state=1391,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}qualifiedName(){let e=new Y(this.context,this.state);this.enterRule(e,90,r.RULE_qualifiedName);let t;try{let i;this.enterOuterAlt(e,1);{for(this.state=1395,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===193&&(this.state=1393,this.match(r.DOLLAR),this.state=1394,this.match(r.COLON_COLON)),this.state=1402,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,49,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=1397,this.name(),this.state=1398,this.match(r.COLON_COLON)),this.state=1404,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,49,this.context);this.state=1405,this.name()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}importRule(){let e=new wi(this.context,this.state);this.enterRule(e,92,r.RULE_importRule);let t;try{this.enterOuterAlt(e,1),this.state=1408,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-122&-32)===0&&(1<<t-122&7)!==0&&(this.state=1407,this.visibilityIndicator()),this.state=1410,this.match(r.IMPORT),this.state=1412,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1411,this.match(r.ALL)),this.state=1414,this.importDeclaration(),this.state=1415,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}importDeclaration(){let e=new Zg(this.context,this.state);this.enterRule(e,94,r.RULE_importDeclaration);try{switch(this.state=1419,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,52,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1417,this.membershipImport();break;case 2:this.enterOuterAlt(e,2),this.state=1418,this.namespaceImport();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}membershipImport(){let e=new gu(this.context,this.state);this.enterRule(e,96,r.RULE_membershipImport);let t;try{this.enterOuterAlt(e,1),this.state=1421,this.qualifiedName(),this.state=1424,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===183&&(this.state=1422,this.match(r.COLON_COLON),this.state=1423,this.match(r.STAR_STAR))}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceImport(){let e=new N1(this.context,this.state);this.enterRule(e,98,r.RULE_namespaceImport);let t;try{switch(this.state=1434,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,55,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1426,this.qualifiedName(),this.state=1427,this.match(r.COLON_COLON),this.state=1428,this.match(r.STAR),this.state=1431,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===183&&(this.state=1429,this.match(r.COLON_COLON),this.state=1430,this.match(r.STAR_STAR));break;case 2:this.enterOuterAlt(e,2),this.state=1433,this.filterPackage();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}filterPackage(){let e=new Gg(this.context,this.state);this.enterRule(e,100,r.RULE_filterPackage);let t;try{switch(this.state=1448,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,58,this.context)){case 1:this.enterOuterAlt(e,1);{this.state=1436,this.filterPackageImportDeclaration(),this.state=1438,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=1437,this.filterPackageMember(),this.state=1440,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===211)}break;case 2:this.enterOuterAlt(e,2);{this.state=1442,this.filterPackageImport(),this.state=1444,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=1443,this.filterPackageMember(),this.state=1446,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===211)}break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}filterPackageMember(){let e=new I1(this.context,this.state);this.enterRule(e,102,r.RULE_filterPackageMember);try{this.enterOuterAlt(e,1),this.state=1450,this.match(r.LBRACK),this.state=1451,this.ownedExpression(0),this.state=1452,this.match(r.RBRACK)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}memberElement(){let e=new Wg(this.context,this.state);this.enterRule(e,104,r.RULE_memberElement);try{switch(this.state=1456,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,59,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1454,this.annotatingElement();break;case 2:this.enterOuterAlt(e,2),this.state=1455,this.nonFeatureElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonFeatureElement(){let e=new U1(this.context,this.state);this.enterRule(e,106,r.RULE_nonFeatureElement);try{switch(this.state=1484,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,60,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1458,this.dependency();break;case 2:this.enterOuterAlt(e,2),this.state=1459,this.namespace();break;case 3:this.enterOuterAlt(e,3),this.state=1460,this.type_();break;case 4:this.enterOuterAlt(e,4),this.state=1461,this.classifier();break;case 5:this.enterOuterAlt(e,5),this.state=1462,this.dataType();break;case 6:this.enterOuterAlt(e,6),this.state=1463,this.class_();break;case 7:this.enterOuterAlt(e,7),this.state=1464,this.structure();break;case 8:this.enterOuterAlt(e,8),this.state=1465,this.metaclass();break;case 9:this.enterOuterAlt(e,9),this.state=1466,this.association();break;case 10:this.enterOuterAlt(e,10),this.state=1467,this.associationStructure();break;case 11:this.enterOuterAlt(e,11),this.state=1468,this.interaction();break;case 12:this.enterOuterAlt(e,12),this.state=1469,this.behavior();break;case 13:this.enterOuterAlt(e,13),this.state=1470,this.function_();break;case 14:this.enterOuterAlt(e,14),this.state=1471,this.predicate();break;case 15:this.enterOuterAlt(e,15),this.state=1472,this.multiplicity();break;case 16:this.enterOuterAlt(e,16),this.state=1473,this.package_();break;case 17:this.enterOuterAlt(e,17),this.state=1474,this.libraryPackage();break;case 18:this.enterOuterAlt(e,18),this.state=1475,this.specialization();break;case 19:this.enterOuterAlt(e,19),this.state=1476,this.conjugation();break;case 20:this.enterOuterAlt(e,20),this.state=1477,this.subclassification();break;case 21:this.enterOuterAlt(e,21),this.state=1478,this.disjoining();break;case 22:this.enterOuterAlt(e,22),this.state=1479,this.featureInverting();break;case 23:this.enterOuterAlt(e,23),this.state=1480,this.featureTyping();break;case 24:this.enterOuterAlt(e,24),this.state=1481,this.subsetting();break;case 25:this.enterOuterAlt(e,25),this.state=1482,this.redefinition();break;case 26:this.enterOuterAlt(e,26),this.state=1483,this.typeFeaturing();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureElement(){let e=new Qs(this.context,this.state);this.enterRule(e,108,r.RULE_featureElement);try{switch(this.state=1496,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,61,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1486,this.feature();break;case 2:this.enterOuterAlt(e,2),this.state=1487,this.step();break;case 3:this.enterOuterAlt(e,3),this.state=1488,this.expression();break;case 4:this.enterOuterAlt(e,4),this.state=1489,this.booleanExpression();break;case 5:this.enterOuterAlt(e,5),this.state=1490,this.invariant();break;case 6:this.enterOuterAlt(e,6),this.state=1491,this.connector();break;case 7:this.enterOuterAlt(e,7),this.state=1492,this.bindingConnector();break;case 8:this.enterOuterAlt(e,8),this.state=1493,this.succession();break;case 9:this.enterOuterAlt(e,9),this.state=1494,this.flow();break;case 10:this.enterOuterAlt(e,10),this.state=1495,this.successionFlow();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}type_(){let e=new Kg(this.context,this.state);this.enterRule(e,110,r.RULE_type);try{this.enterOuterAlt(e,1),this.state=1498,this.typePrefix(),this.state=1499,this.match(r.TYPE),this.state=1500,this.typeDeclaration(),this.state=1501,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typePrefix(){let e=new Dr(this.context,this.state);this.enterRule(e,112,r.RULE_typePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=1504,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===2&&(this.state=1503,this.match(r.ABSTRACT)),this.state=1509,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1506,this.prefixMetadataMember(),this.state=1511,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeDeclaration(){let e=new Jg(this.context,this.state);this.enterRule(e,114,r.RULE_typeDeclaration);let t;try{this.enterOuterAlt(e,1);{this.state=1513,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1512,this.match(r.ALL)),this.state=1516,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1515,this.identification()),this.state=1519,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===211&&(this.state=1518,this.ownedMultiplicity()),this.state=1523,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do{switch(this.state=1523,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SPECIALIZES:case r.COLON_GT:this.state=1521,this.specializationPart();break;case r.CONJUGATES:case r.TILDE:this.state=1522,this.conjugationPart();break;default:throw new ne(this)}this.state=1525,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}while(t===34||t===139||t===185||t===217);for(this.state=1530,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===50||t===52||t===86||t===160;)this.state=1527,this.typeRelationshipPart(),this.state=1532,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}specializationPart(){let e=new O1(this.context,this.state);this.enterRule(e,116,r.RULE_specializationPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1533,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1534,this.ownedSpecialization(),this.state=1539,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1535,this.match(r.COMMA),this.state=1536,this.ownedSpecialization(),this.state=1541,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}conjugationPart(){let e=new la(this.context,this.state);this.enterRule(e,118,r.RULE_conjugationPart);let t;try{this.enterOuterAlt(e,1),this.state=1542,t=this.tokenStream.LA(1),t===34||t===217?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1543,this.ownedConjugation()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeRelationshipPart(){let e=new Ys(this.context,this.state);this.enterRule(e,120,r.RULE_typeRelationshipPart);try{switch(this.state=1549,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DISJOINT:this.enterOuterAlt(e,1),this.state=1545,this.disjoiningPart();break;case r.UNIONS:this.enterOuterAlt(e,2),this.state=1546,this.unioningPart();break;case r.INTERSECTS:this.enterOuterAlt(e,3),this.state=1547,this.intersectingPart();break;case r.DIFFERENCES:this.enterOuterAlt(e,4),this.state=1548,this.differencingPart();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}disjoiningPart(){let e=new Qg(this.context,this.state);this.enterRule(e,122,r.RULE_disjoiningPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1551,this.match(r.DISJOINT),this.state=1552,this.match(r.FROM),this.state=1553,this.ownedDisjoining(),this.state=1558,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1554,this.match(r.COMMA),this.state=1555,this.ownedDisjoining(),this.state=1560,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}unioningPart(){let e=new Yg(this.context,this.state);this.enterRule(e,124,r.RULE_unioningPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1561,this.match(r.UNIONS),this.state=1562,this.unioning(),this.state=1567,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1563,this.match(r.COMMA),this.state=1564,this.unioning(),this.state=1569,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}intersectingPart(){let e=new Xg(this.context,this.state);this.enterRule(e,126,r.RULE_intersectingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1570,this.match(r.INTERSECTS),this.state=1571,this.intersecting(),this.state=1576,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1572,this.match(r.COMMA),this.state=1573,this.intersecting(),this.state=1578,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}differencingPart(){let e=new e3(this.context,this.state);this.enterRule(e,128,r.RULE_differencingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1579,this.match(r.DIFFERENCES),this.state=1580,this.differencing(),this.state=1585,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1581,this.match(r.COMMA),this.state=1582,this.differencing(),this.state=1587,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeBody(){let e=new Ut(this.context,this.state);this.enterRule(e,130,r.RULE_typeBody);let t;try{switch(this.state=1597,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=1588,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=1589,this.match(r.LBRACE),this.state=1593,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&4040229252)!==0||(t-33&-32)===0&&(1<<t-33&1085130343)!==0||(t-65&-32)===0&&(1<<t-65&1909244965)!==0||(t-97&-32)===0&&(1<<t-97&3213296369)!==0||(t-131&-32)===0&&(1<<t-131&470774913)!==0||(t-163&-32)===0&&(1<<t-163&1648373761)!==0||(t-204&-32)===0&&(1<<t-204&581829)!==0;)this.state=1590,this.typeBodyElement(),this.state=1595,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1596,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeBodyElement(){let e=new ua(this.context,this.state);this.enterRule(e,132,r.RULE_typeBodyElement);try{switch(this.state=1603,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,78,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1599,this.nonFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=1600,this.featureMember();break;case 3:this.enterOuterAlt(e,3),this.state=1601,this.aliasMember();break;case 4:this.enterOuterAlt(e,4),this.state=1602,this.importRule();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}specialization(){let e=new t3(this.context,this.state);this.enterRule(e,134,r.RULE_specialization);let t;try{this.enterOuterAlt(e,1),this.state=1609,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=1605,this.match(r.SPECIALIZATION),this.state=1607,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1606,this.identification())),this.state=1611,this.match(r.SUBTYPE),this.state=1612,this.specificType(),this.state=1613,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1614,this.generalType(),this.state=1615,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedSpecialization(){let e=new D1(this.context,this.state);this.enterRule(e,136,r.RULE_ownedSpecialization);try{this.enterOuterAlt(e,1),this.state=1617,this.generalType()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}specificType(){let e=new xu(this.context,this.state);this.enterRule(e,138,r.RULE_specificType);let t;try{for(this.enterOuterAlt(e,1),this.state=1619,this.qualifiedName(),this.state=1624,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1620,this.match(r.DOT),this.state=1621,this.qualifiedName(),this.state=1626,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}generalType(){let e=new Xs(this.context,this.state);this.enterRule(e,140,r.RULE_generalType);let t;try{for(this.enterOuterAlt(e,1),this.state=1627,this.qualifiedName(),this.state=1632,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1628,this.match(r.DOT),this.state=1629,this.qualifiedName(),this.state=1634,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}conjugation(){let e=new r3(this.context,this.state);this.enterRule(e,142,r.RULE_conjugation);let t;try{this.enterOuterAlt(e,1);{for(this.state=1639,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===35&&(this.state=1635,this.match(r.CONJUGATION),this.state=1637,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1636,this.identification())),this.state=1641,this.match(r.CONJUGATE),this.state=1642,this.qualifiedName(),this.state=1647,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1643,this.match(r.DOT),this.state=1644,this.qualifiedName(),this.state=1649,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1650,t=this.tokenStream.LA(1),t===34||t===217?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1651,this.qualifiedName(),this.state=1656,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1652,this.match(r.DOT),this.state=1653,this.qualifiedName(),this.state=1658,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1659,this.relationshipBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedConjugation(){let e=new i3(this.context,this.state);this.enterRule(e,144,r.RULE_ownedConjugation);let t;try{for(this.enterOuterAlt(e,1),this.state=1661,this.qualifiedName(),this.state=1666,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1662,this.match(r.DOT),this.state=1663,this.qualifiedName(),this.state=1668,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}disjoining(){let e=new n3(this.context,this.state);this.enterRule(e,146,r.RULE_disjoining);let t;try{this.enterOuterAlt(e,1);{for(this.state=1673,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===51&&(this.state=1669,this.match(r.DISJOINING),this.state=1671,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1670,this.identification())),this.state=1675,this.match(r.DISJOINT),this.state=1676,this.qualifiedName(),this.state=1681,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1677,this.match(r.DOT),this.state=1678,this.qualifiedName(),this.state=1683,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1684,this.match(r.FROM),this.state=1685,this.qualifiedName(),this.state=1690,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1686,this.match(r.DOT),this.state=1687,this.qualifiedName(),this.state=1692,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1693,this.relationshipBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedDisjoining(){let e=new $1(this.context,this.state);this.enterRule(e,148,r.RULE_ownedDisjoining);let t;try{for(this.enterOuterAlt(e,1),this.state=1695,this.qualifiedName(),this.state=1700,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1696,this.match(r.DOT),this.state=1697,this.qualifiedName(),this.state=1702,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}unioning(){let e=new F1(this.context,this.state);this.enterRule(e,150,r.RULE_unioning);let t;try{for(this.enterOuterAlt(e,1),this.state=1703,this.qualifiedName(),this.state=1708,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1704,this.match(r.DOT),this.state=1705,this.qualifiedName(),this.state=1710,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}intersecting(){let e=new H1(this.context,this.state);this.enterRule(e,152,r.RULE_intersecting);let t;try{for(this.enterOuterAlt(e,1),this.state=1711,this.qualifiedName(),this.state=1716,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1712,this.match(r.DOT),this.state=1713,this.qualifiedName(),this.state=1718,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}differencing(){let e=new z1(this.context,this.state);this.enterRule(e,154,r.RULE_differencing);let t;try{for(this.enterOuterAlt(e,1),this.state=1719,this.qualifiedName(),this.state=1724,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1720,this.match(r.DOT),this.state=1721,this.qualifiedName(),this.state=1726,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureMember(){let e=new s3(this.context,this.state);this.enterRule(e,156,r.RULE_featureMember);try{switch(this.state=1729,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,96,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1727,this.typeFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=1728,this.ownedFeatureMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeFeatureMember(){let e=new o3(this.context,this.state);this.enterRule(e,158,r.RULE_typeFeatureMember);try{this.enterOuterAlt(e,1),this.state=1731,this.memberPrefix(),this.state=1732,this.match(r.MEMBER),this.state=1733,this.featureElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedFeatureMember(){let e=new a3(this.context,this.state);this.enterRule(e,160,r.RULE_ownedFeatureMember);try{this.enterOuterAlt(e,1),this.state=1735,this.memberPrefix(),this.state=1736,this.featureElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}classifier(){let e=new l3(this.context,this.state);this.enterRule(e,162,r.RULE_classifier);try{this.enterOuterAlt(e,1),this.state=1738,this.typePrefix(),this.state=1739,this.match(r.CLASSIFIER),this.state=1740,this.classifierDeclaration(),this.state=1741,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}classifierDeclaration(){let e=new Qr(this.context,this.state);this.enterRule(e,164,r.RULE_classifierDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=1744,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1743,this.match(r.ALL)),this.state=1747,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1746,this.identification()),this.state=1750,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===211&&(this.state=1749,this.ownedMultiplicity()),this.state=1754,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SPECIALIZES:case r.COLON_GT:this.state=1752,this.superclassingPart();break;case r.CONJUGATES:case r.TILDE:this.state=1753,this.conjugationPart();break;case r.DIFFERENCES:case r.DISJOINT:case r.INTERSECTS:case r.UNIONS:case r.SEMI:case r.LBRACE:break;default:break}for(this.state=1759,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===50||t===52||t===86||t===160;)this.state=1756,this.typeRelationshipPart(),this.state=1761,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}superclassingPart(){let e=new u3(this.context,this.state);this.enterRule(e,166,r.RULE_superclassingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1762,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1763,this.ownedSubclassification(),this.state=1768,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1764,this.match(r.COMMA),this.state=1765,this.ownedSubclassification(),this.state=1770,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}subclassification(){let e=new c3(this.context,this.state);this.enterRule(e,168,r.RULE_subclassification);let t;try{this.enterOuterAlt(e,1),this.state=1775,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=1771,this.match(r.SPECIALIZATION),this.state=1773,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1772,this.identification())),this.state=1777,this.match(r.SUBCLASSIFIER),this.state=1778,this.qualifiedName(),this.state=1779,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1780,this.qualifiedName(),this.state=1781,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedSubclassification(){let e=new ca(this.context,this.state);this.enterRule(e,170,r.RULE_ownedSubclassification);try{this.enterOuterAlt(e,1),this.state=1783,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}feature(){let e=new d3(this.context,this.state);this.enterRule(e,172,r.RULE_feature);let t;try{this.enterOuterAlt(e,1);{switch(this.state=1799,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,108,this.context)){case 1:{switch(this.state=1785,this.featurePrefix(),this.state=1788,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.FEATURE:this.state=1786,this.match(r.FEATURE);break;case r.HASH:this.state=1787,this.prefixMetadataMember();break;default:throw new ne(this)}this.state=1791,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=1790,this.featureDeclaration())}break;case 2:{switch(this.state=1795,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,107,this.context)){case 1:this.state=1793,this.endFeaturePrefix();break;case 2:this.state=1794,this.basicFeaturePrefix();break}this.state=1797,this.featureDeclaration()}break}this.state=1802,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=1801,this.valuePart()),this.state=1804,this.typeBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}endFeaturePrefix(){let e=new B1(this.context,this.state);this.enterRule(e,174,r.RULE_endFeaturePrefix);let t;try{this.enterOuterAlt(e,1),this.state=1807,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===39&&(this.state=1806,this.match(r.CONST)),this.state=1809,this.match(r.END)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}basicFeaturePrefix(){let e=new bu(this.context,this.state);this.enterRule(e,176,r.RULE_basicFeaturePrefix);let t;try{this.enterOuterAlt(e,1),this.state=1812,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===80||t===83||t===114)&&(this.state=1811,this.featureDirection()),this.state=1815,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===49&&(this.state=1814,this.match(r.DERIVED)),this.state=1818,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===2&&(this.state=1817,this.match(r.ABSTRACT)),this.state=1821,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===31||t===120)&&(this.state=1820,t=this.tokenStream.LA(1),t===31||t===120?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1824,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===39||t===163)&&(this.state=1823,t=this.tokenStream.LA(1),t===39||t===163?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this))}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featurePrefix(){let e=new ci(this.context,this.state);this.enterRule(e,178,r.RULE_featurePrefix);try{let t;this.enterOuterAlt(e,1);{switch(this.state=1830,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,116,this.context)){case 1:this.state=1826,this.endFeaturePrefix(),this.state=1827,this.ownedCrossFeatureMember();break;case 2:this.state=1829,this.basicFeaturePrefix();break}for(this.state=1835,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,117,this.context);t!==2&&t!==Ce.INVALID_ALT_NUMBER;)t===1&&(this.state=1832,this.prefixMetadataMember()),this.state=1837,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,117,this.context)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedCrossFeatureMember(){let e=new j1(this.context,this.state);this.enterRule(e,180,r.RULE_ownedCrossFeatureMember);try{this.enterOuterAlt(e,1),this.state=1838,this.ownedCrossFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedCrossFeature(){let e=new h3(this.context,this.state);this.enterRule(e,182,r.RULE_ownedCrossFeature);try{switch(this.state=1847,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,119,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1840,this.basicFeaturePrefix(),this.state=1841,this.featureDeclaration();break;case 2:this.enterOuterAlt(e,2),this.state=1843,this.basicUsagePrefix(),this.state=1845,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,118,this.context)===1&&(this.state=1844,this.usageDeclaration());break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureDirection(){let e=new q1(this.context,this.state);this.enterRule(e,184,r.RULE_featureDirection);let t;try{this.enterOuterAlt(e,1),this.state=1849,t=this.tokenStream.LA(1),t===80||t===83||t===114?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureDeclaration(){let e=new Er(this.context,this.state);this.enterRule(e,186,r.RULE_featureDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=1852,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1851,this.match(r.ALL)),this.state=1861,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LT:case r.IDENTIFIER:case r.STRING:switch(this.state=1854,this.featureIdentification(),this.state=1857,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,121,this.context)){case 1:this.state=1855,this.featureSpecializationPart();break;case 2:this.state=1856,this.conjugationPart();break}break;case r.CROSSES:case r.DEFINED:case r.NONUNIQUE:case r.ORDERED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.LBRACK:this.state=1859,this.featureSpecializationPart();break;case r.CONJUGATES:case r.TILDE:this.state=1860,this.conjugationPart();break;default:throw new ne(this)}for(this.state=1866,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t-27&-32)===0&&(1<<t-27&41943041)!==0||(t-66&-32)===0&&(1<<t-66&5242881)!==0||t===160;)this.state=1863,this.featureRelationshipPart(),this.state=1868,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureIdentification(){let e=new p3(this.context,this.state);this.enterRule(e,188,r.RULE_featureIdentification);try{switch(this.state=1876,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LT:this.enterOuterAlt(e,1),this.state=1869,this.match(r.LT),this.state=1870,this.name(),this.state=1871,this.match(r.GT),this.state=1873,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,124,this.context)===1&&(this.state=1872,this.name());break;case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,2),this.state=1875,this.name();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureRelationshipPart(){let e=new V1(this.context,this.state);this.enterRule(e,190,r.RULE_featureRelationshipPart);try{switch(this.state=1882,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DIFFERENCES:case r.DISJOINT:case r.INTERSECTS:case r.UNIONS:this.enterOuterAlt(e,1),this.state=1878,this.typeRelationshipPart();break;case r.CHAINS:this.enterOuterAlt(e,2),this.state=1879,this.chainingPart();break;case r.INVERSE:this.enterOuterAlt(e,3),this.state=1880,this.invertingPart();break;case r.FEATURED:this.enterOuterAlt(e,4),this.state=1881,this.typeFeaturingPart();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}chainingPart(){let e=new f3(this.context,this.state);this.enterRule(e,192,r.RULE_chainingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1884,this.match(r.CHAINS),this.state=1885,this.qualifiedName(),this.state=1890,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1886,this.match(r.DOT),this.state=1887,this.qualifiedName(),this.state=1892,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}invertingPart(){let e=new m3(this.context,this.state);this.enterRule(e,194,r.RULE_invertingPart);try{this.enterOuterAlt(e,1),this.state=1893,this.match(r.INVERSE),this.state=1894,this.match(r.OF),this.state=1895,this.ownedFeatureInverting()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeFeaturingPart(){let e=new g3(this.context,this.state);this.enterRule(e,196,r.RULE_typeFeaturingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1897,this.match(r.FEATURED),this.state=1898,this.match(r.BY),this.state=1899,this.ownedTypeFeaturing(),this.state=1904,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1900,this.match(r.COMMA),this.state=1901,this.ownedTypeFeaturing(),this.state=1906,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureSpecializationPart(){let e=new Sr(this.context,this.state);this.enterRule(e,198,r.RULE_featureSpecializationPart);try{let t;switch(this.state=1928,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.CROSSES:case r.DEFINED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:this.enterOuterAlt(e,1);{this.state=1908,this.errorHandler.sync(this),t=1;do{if(t===1)this.state=1907,this.featureSpecialization();else throw new ne(this);this.state=1910,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,129,this.context)}while(t!==2&&t!==Ce.INVALID_ALT_NUMBER);for(this.state=1913,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,130,this.context)===1&&(this.state=1912,this.multiplicityPart()),this.state=1918,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,131,this.context);t!==2&&t!==Ce.INVALID_ALT_NUMBER;)t===1&&(this.state=1915,this.featureSpecialization()),this.state=1920,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,131,this.context)}break;case r.NONUNIQUE:case r.ORDERED:case r.LBRACK:for(this.enterOuterAlt(e,2),this.state=1921,this.multiplicityPart(),this.state=1925,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,132,this.context);t!==2&&t!==Ce.INVALID_ALT_NUMBER;)t===1&&(this.state=1922,this.featureSpecialization()),this.state=1927,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,132,this.context);break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicityPart(){let e=new Z1(this.context,this.state);this.enterRule(e,200,r.RULE_multiplicityPart);try{switch(this.state=1951,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LBRACK:switch(this.enterOuterAlt(e,1),this.state=1930,this.ownedMultiplicity(),this.state=1939,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,136,this.context)){case 1:this.state=1931,this.match(r.ORDERED),this.state=1933,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,134,this.context)===1&&(this.state=1932,this.match(r.NONUNIQUE));break;case 2:this.state=1935,this.match(r.NONUNIQUE),this.state=1937,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,135,this.context)===1&&(this.state=1936,this.match(r.ORDERED));break}break;case r.NONUNIQUE:case r.ORDERED:switch(this.enterOuterAlt(e,2),this.state=1949,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.ORDERED:this.state=1941,this.match(r.ORDERED),this.state=1943,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,137,this.context)===1&&(this.state=1942,this.match(r.NONUNIQUE));break;case r.NONUNIQUE:this.state=1945,this.match(r.NONUNIQUE),this.state=1947,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,138,this.context)===1&&(this.state=1946,this.match(r.ORDERED));break;default:throw new ne(this)}break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureSpecialization(){let e=new on(this.context,this.state);this.enterRule(e,202,r.RULE_featureSpecialization);try{switch(this.state=1958,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DEFINED:case r.TYPED:case r.COLON:this.enterOuterAlt(e,1),this.state=1953,this.typings();break;case r.SUBSETS:case r.COLON_GT:this.enterOuterAlt(e,2),this.state=1954,this.subsettings();break;case r.REFERENCES:case r.COLON_COLON_GT:this.enterOuterAlt(e,3),this.state=1955,this.references();break;case r.CROSSES:case r.FAT_ARROW:this.enterOuterAlt(e,4),this.state=1956,this.crosses();break;case r.REDEFINES:case r.COLON_GT_GT:this.enterOuterAlt(e,5),this.state=1957,this.redefinitions();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typings(){let e=new x3(this.context,this.state);this.enterRule(e,204,r.RULE_typings);let t;try{for(this.enterOuterAlt(e,1),this.state=1960,this.typedBy(),this.state=1965,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1961,this.match(r.COMMA),this.state=1962,this.featureTyping(),this.state=1967,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typedBy(){let e=new b3(this.context,this.state);this.enterRule(e,206,r.RULE_typedBy);try{this.enterOuterAlt(e,1);{switch(this.state=1973,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=1968,this.match(r.COLON);break;case r.TYPED:this.state=1969,this.match(r.TYPED),this.state=1970,this.match(r.BY);break;case r.DEFINED:this.state=1971,this.match(r.DEFINED),this.state=1972,this.match(r.BY);break;default:throw new ne(this)}this.state=1975,this.featureTyping()}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subsettings(){let e=new y3(this.context,this.state);this.enterRule(e,208,r.RULE_subsettings);let t;try{for(this.enterOuterAlt(e,1),this.state=1977,this.subsets(),this.state=1982,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1978,this.match(r.COMMA),this.state=1979,this.ownedSubsetting(),this.state=1984,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}subsets(){let e=new G1(this.context,this.state);this.enterRule(e,210,r.RULE_subsets);let t;try{this.enterOuterAlt(e,1),this.state=1985,t=this.tokenStream.LA(1),t===148||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1986,this.ownedSubsetting()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}references(){let e=new v3(this.context,this.state);this.enterRule(e,212,r.RULE_references);let t;try{this.enterOuterAlt(e,1),this.state=1988,t=this.tokenStream.LA(1),t===128||t===175?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1989,this.ownedReferenceSubsetting()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}crosses(){let e=new R3(this.context,this.state);this.enterRule(e,214,r.RULE_crosses);let t;try{this.enterOuterAlt(e,1),this.state=1991,t=this.tokenStream.LA(1),t===42||t===188?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1992,this.ownedCrossSubsetting()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}redefinitions(){let e=new C3(this.context,this.state);this.enterRule(e,216,r.RULE_redefinitions);let t;try{for(this.enterOuterAlt(e,1),this.state=1994,this.redefines(),this.state=1999,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1995,this.match(r.COMMA),this.state=1996,this.ownedRedefinition(),this.state=2001,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}redefines(){let e=new E3(this.context,this.state);this.enterRule(e,218,r.RULE_redefines);let t;try{this.enterOuterAlt(e,1),this.state=2002,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2003,this.ownedRedefinition()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureTyping(){let e=new da(this.context,this.state);this.enterRule(e,220,r.RULE_featureTyping);let t;try{switch(this.state=2023,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SPECIALIZATION:case r.TYPING:this.enterOuterAlt(e,1);{switch(this.state=2009,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=2005,this.match(r.SPECIALIZATION),this.state=2007,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2006,this.identification())),this.state=2011,this.match(r.TYPING),this.state=2012,this.qualifiedName(),this.state=2016,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=2013,this.match(r.COLON);break;case r.TYPED:this.state=2014,this.match(r.TYPED),this.state=2015,this.match(r.BY);break;default:throw new ne(this)}this.state=2018,this.generalType(),this.state=2019,this.relationshipBody()}break;case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,2),this.state=2021,this.ownedFeatureTyping();break;case r.TILDE:this.enterOuterAlt(e,3),this.state=2022,this.conjugatedPortTyping();break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureTyping(){let e=new ns(this.context,this.state);this.enterRule(e,222,r.RULE_ownedFeatureTyping);let t;try{for(this.enterOuterAlt(e,1),this.state=2025,this.qualifiedName(),this.state=2030,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2026,this.match(r.DOT),this.state=2027,this.qualifiedName(),this.state=2032,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}subsetting(){let e=new S3(this.context,this.state);this.enterRule(e,224,r.RULE_subsetting);let t;try{this.enterOuterAlt(e,1),this.state=2037,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=2033,this.match(r.SPECIALIZATION),this.state=2035,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2034,this.identification())),this.state=2039,this.match(r.SUBSET),this.state=2040,this.specificType(),this.state=2041,t=this.tokenStream.LA(1),t===148||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2042,this.generalType(),this.state=2043,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedSubsetting(){let e=new yu(this.context,this.state);this.enterRule(e,226,r.RULE_ownedSubsetting);let t;try{for(this.enterOuterAlt(e,1),this.state=2045,this.qualifiedName(),this.state=2050,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2046,this.match(r.DOT),this.state=2047,this.qualifiedName(),this.state=2052,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedReferenceSubsetting(){let e=new er(this.context,this.state);this.enterRule(e,228,r.RULE_ownedReferenceSubsetting);let t;try{for(this.enterOuterAlt(e,1),this.state=2053,this.qualifiedName(),this.state=2058,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2054,this.match(r.DOT),this.state=2055,this.qualifiedName(),this.state=2060,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedCrossSubsetting(){let e=new P3(this.context,this.state);this.enterRule(e,230,r.RULE_ownedCrossSubsetting);let t;try{for(this.enterOuterAlt(e,1),this.state=2061,this.qualifiedName(),this.state=2066,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2062,this.match(r.DOT),this.state=2063,this.qualifiedName(),this.state=2068,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}redefinition(){let e=new L3(this.context,this.state);this.enterRule(e,232,r.RULE_redefinition);let t;try{this.enterOuterAlt(e,1),this.state=2073,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=2069,this.match(r.SPECIALIZATION),this.state=2071,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2070,this.identification())),this.state=2075,this.match(r.REDEFINITION),this.state=2076,this.specificType(),this.state=2077,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2078,this.generalType(),this.state=2079,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedRedefinition(){let e=new eo(this.context,this.state);this.enterRule(e,234,r.RULE_ownedRedefinition);let t;try{for(this.enterOuterAlt(e,1),this.state=2081,this.qualifiedName(),this.state=2086,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2082,this.match(r.DOT),this.state=2083,this.qualifiedName(),this.state=2088,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureChain(){let e=new T3(this.context,this.state);this.enterRule(e,236,r.RULE_ownedFeatureChain);let t;try{switch(this.state=2097,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,160,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2089,this.featureChain();break;case 2:this.enterOuterAlt(e,2);{this.state=2090,this.ownedFeatureChaining(),this.state=2093,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=2091,this.match(r.DOT),this.state=2092,this.ownedFeatureChaining(),this.state=2095,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===202)}break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureChain(){let e=new W1(this.context,this.state);this.enterRule(e,238,r.RULE_featureChain);let t;try{this.enterOuterAlt(e,1);{this.state=2099,this.ownedFeatureChaining(),this.state=2102,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=2100,this.match(r.DOT),this.state=2101,this.ownedFeatureChaining(),this.state=2104,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===202)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureChaining(){let e=new ss(this.context,this.state);this.enterRule(e,240,r.RULE_ownedFeatureChaining);try{this.enterOuterAlt(e,1),this.state=2106,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureInverting(){let e=new w3(this.context,this.state);this.enterRule(e,242,r.RULE_featureInverting);let t;try{this.enterOuterAlt(e,1);{for(this.state=2112,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===89&&(this.state=2108,this.match(r.INVERTING),this.state=2110,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2109,this.identification())),this.state=2114,this.match(r.INVERSE),this.state=2115,this.qualifiedName(),this.state=2120,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2116,this.match(r.DOT),this.state=2117,this.qualifiedName(),this.state=2122,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=2123,this.match(r.OF),this.state=2124,this.qualifiedName(),this.state=2129,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2125,this.match(r.DOT),this.state=2126,this.qualifiedName(),this.state=2131,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2132,this.relationshipBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureInverting(){let e=new k3(this.context,this.state);this.enterRule(e,244,r.RULE_ownedFeatureInverting);let t;try{for(this.enterOuterAlt(e,1),this.state=2134,this.qualifiedName(),this.state=2139,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2135,this.match(r.DOT),this.state=2136,this.qualifiedName(),this.state=2141,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeFeaturing(){let e=new A3(this.context,this.state);this.enterRule(e,246,r.RULE_typeFeaturing);let t;try{this.enterOuterAlt(e,1),this.state=2142,this.match(r.FEATURING),this.state=2147,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,168,this.context)===1&&(this.state=2144,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2143,this.identification()),this.state=2146,this.match(r.OF)),this.state=2149,this.qualifiedName(),this.state=2150,this.match(r.BY),this.state=2151,this.qualifiedName(),this.state=2152,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedTypeFeaturing(){let e=new K1(this.context,this.state);this.enterRule(e,248,r.RULE_ownedTypeFeaturing);try{this.enterOuterAlt(e,1),this.state=2154,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}dataType(){let e=new M3(this.context,this.state);this.enterRule(e,250,r.RULE_dataType);try{this.enterOuterAlt(e,1),this.state=2156,this.typePrefix(),this.state=2157,this.match(r.DATATYPE),this.state=2158,this.classifierDeclaration(),this.state=2159,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}class_(){let e=new _3(this.context,this.state);this.enterRule(e,252,r.RULE_class);try{this.enterOuterAlt(e,1),this.state=2161,this.typePrefix(),this.state=2162,this.match(r.CLASS),this.state=2163,this.classifierDeclaration(),this.state=2164,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}structure(){let e=new N3(this.context,this.state);this.enterRule(e,254,r.RULE_structure);try{this.enterOuterAlt(e,1),this.state=2166,this.typePrefix(),this.state=2167,this.match(r.STRUCT),this.state=2168,this.classifierDeclaration(),this.state=2169,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}association(){let e=new I3(this.context,this.state);this.enterRule(e,256,r.RULE_association);try{this.enterOuterAlt(e,1),this.state=2171,this.typePrefix(),this.state=2172,this.match(r.ASSOC),this.state=2173,this.classifierDeclaration(),this.state=2174,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}associationStructure(){let e=new U3(this.context,this.state);this.enterRule(e,258,r.RULE_associationStructure);try{this.enterOuterAlt(e,1),this.state=2176,this.typePrefix(),this.state=2177,this.match(r.ASSOC),this.state=2178,this.match(r.STRUCT),this.state=2179,this.classifierDeclaration(),this.state=2180,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connector(){let e=new O3(this.context,this.state);this.enterRule(e,260,r.RULE_connector);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2182,this.featurePrefix(),this.state=2183,this.match(r.CONNECTOR),this.state=2191,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,171,this.context)){case 1:this.state=2185,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=2184,this.featureDeclaration()),this.state=2188,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2187,this.valuePart());break;case 2:this.state=2190,this.connectorDeclaration();break}this.state=2193,this.typeBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}connectorDeclaration(){let e=new D3(this.context,this.state);this.enterRule(e,262,r.RULE_connectorDeclaration);try{switch(this.state=2197,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,172,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2195,this.binaryConnectorDeclaration();break;case 2:this.enterOuterAlt(e,2),this.state=2196,this.naryConnectorDeclaration();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}binaryConnectorDeclaration(){let e=new $3(this.context,this.state);this.enterRule(e,264,r.RULE_binaryConnectorDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2207,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,175,this.context)){case 1:this.state=2200,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=2199,this.featureDeclaration()),this.state=2202,this.match(r.FROM);break;case 2:this.state=2203,this.match(r.ALL),this.state=2205,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=2204,this.match(r.FROM));break}this.state=2209,this.connectorEndMember(),this.state=2210,this.match(r.TO),this.state=2211,this.connectorEndMember()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}naryConnectorDeclaration(){let e=new F3(this.context,this.state);this.enterRule(e,266,r.RULE_naryConnectorDeclaration);let t;try{this.enterOuterAlt(e,1);{for(this.state=2214,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=2213,this.featureDeclaration()),this.state=2216,this.match(r.LPAREN),this.state=2217,this.connectorEndMember(),this.state=2218,this.match(r.COMMA),this.state=2219,this.connectorEndMember(),this.state=2224,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2220,this.match(r.COMMA),this.state=2221,this.connectorEndMember(),this.state=2226,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2227,this.match(r.RPAREN)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}connectorEndMember(){let e=new Ft(this.context,this.state);this.enterRule(e,268,r.RULE_connectorEndMember);try{this.enterOuterAlt(e,1),this.state=2229,this.connectorEnd()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connectorEnd(){let e=new H3(this.context,this.state);this.enterRule(e,270,r.RULE_connectorEnd);let t;try{this.enterOuterAlt(e,1),this.state=2232,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===211&&(this.state=2231,this.ownedCrossMultiplicityMember()),this.state=2237,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,179,this.context)===1&&(this.state=2234,this.name(),this.state=2235,t=this.tokenStream.LA(1),t===128||t===175?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2239,this.ownedReferenceSubsetting()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedCrossMultiplicityMember(){let e=new J1(this.context,this.state);this.enterRule(e,272,r.RULE_ownedCrossMultiplicityMember);try{this.enterOuterAlt(e,1),this.state=2241,this.ownedCrossMultiplicity()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedCrossMultiplicity(){let e=new z3(this.context,this.state);this.enterRule(e,274,r.RULE_ownedCrossMultiplicity);try{this.enterOuterAlt(e,1),this.state=2243,this.ownedMultiplicity()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bindingConnector(){let e=new B3(this.context,this.state);this.enterRule(e,276,r.RULE_bindingConnector);try{this.enterOuterAlt(e,1),this.state=2245,this.featurePrefix(),this.state=2246,this.match(r.BINDING),this.state=2247,this.bindingConnectorDeclaration(),this.state=2248,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bindingConnectorDeclaration(){let e=new j3(this.context,this.state);this.enterRule(e,278,r.RULE_bindingConnectorDeclaration);let t;try{switch(this.state=2270,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,184,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2250,this.featureDeclaration(),this.state=2256,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2251,this.match(r.OF),this.state=2252,this.connectorEndMember(),this.state=2253,this.match(r.EQ),this.state=2254,this.connectorEndMember());break;case 2:this.enterOuterAlt(e,2),this.state=2259,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=2258,this.match(r.ALL)),this.state=2268,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===111||(t-193&-32)===0&&(1<<t-193&100925441)!==0)&&(this.state=2262,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2261,this.match(r.OF)),this.state=2264,this.connectorEndMember(),this.state=2265,this.match(r.EQ),this.state=2266,this.connectorEndMember());break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}succession(){let e=new q3(this.context,this.state);this.enterRule(e,280,r.RULE_succession);try{this.enterOuterAlt(e,1),this.state=2272,this.featurePrefix(),this.state=2273,this.match(r.SUCCESSION),this.state=2274,this.successionDeclaration(),this.state=2275,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}successionDeclaration(){let e=new V3(this.context,this.state);this.enterRule(e,282,r.RULE_successionDeclaration);let t;try{switch(this.state=2297,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,189,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2277,this.featureDeclaration(),this.state=2283,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===69&&(this.state=2278,this.match(r.FIRST),this.state=2279,this.connectorEndMember(),this.state=2280,this.match(r.THEN),this.state=2281,this.connectorEndMember());break;case 2:this.enterOuterAlt(e,2),this.state=2286,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=2285,this.match(r.ALL)),this.state=2295,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===69||(t-193&-32)===0&&(1<<t-193&100925441)!==0)&&(this.state=2289,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===69&&(this.state=2288,this.match(r.FIRST)),this.state=2291,this.connectorEndMember(),this.state=2292,this.match(r.THEN),this.state=2293,this.connectorEndMember());break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}behavior(){let e=new Z3(this.context,this.state);this.enterRule(e,284,r.RULE_behavior);try{this.enterOuterAlt(e,1),this.state=2299,this.typePrefix(),this.state=2300,this.match(r.BEHAVIOR),this.state=2301,this.classifierDeclaration(),this.state=2302,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}step(){let e=new G3(this.context,this.state);this.enterRule(e,286,r.RULE_step);let t;try{this.enterOuterAlt(e,1),this.state=2304,this.featurePrefix(),this.state=2305,this.match(r.STEP),this.state=2306,this.featureDeclaration(),this.state=2308,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2307,this.valuePart()),this.state=2310,this.typeBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}function_(){let e=new W3(this.context,this.state);this.enterRule(e,288,r.RULE_function);try{this.enterOuterAlt(e,1),this.state=2312,this.typePrefix(),this.state=2313,this.match(r.FUNCTION),this.state=2314,this.classifierDeclaration(),this.state=2315,this.functionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionBody(){let e=new to(this.context,this.state);this.enterRule(e,290,r.RULE_functionBody);try{switch(this.state=2322,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=2317,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2),this.state=2318,this.match(r.LBRACE),this.state=2319,this.functionBodyPart(),this.state=2320,this.match(r.RBRACE);break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionBodyPart(){let e=new vu(this.context,this.state);this.enterRule(e,292,r.RULE_functionBodyPart);let t;try{let i;this.enterOuterAlt(e,1);{for(this.state=2328,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,193,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;){if(i===1)switch(this.state=2326,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,192,this.context)){case 1:this.state=2324,this.typeBodyElement();break;case 2:this.state=2325,this.returnFeatureMember();break}this.state=2330,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,193,this.context)}this.state=2332,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&917517)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=2331,this.resultExpressionMember())}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}returnFeatureMember(){let e=new Q1(this.context,this.state);this.enterRule(e,294,r.RULE_returnFeatureMember);try{this.enterOuterAlt(e,1),this.state=2334,this.memberPrefix(),this.state=2335,this.match(r.RETURN),this.state=2336,this.featureElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}resultExpressionMember(){let e=new Ru(this.context,this.state);this.enterRule(e,296,r.RULE_resultExpressionMember);try{this.enterOuterAlt(e,1),this.state=2338,this.memberPrefix(),this.state=2339,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expression(){let e=new K3(this.context,this.state);this.enterRule(e,298,r.RULE_expression);let t;try{this.enterOuterAlt(e,1),this.state=2341,this.featurePrefix(),this.state=2342,this.match(r.EXPR),this.state=2343,this.featureDeclaration(),this.state=2345,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2344,this.valuePart()),this.state=2347,this.functionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}predicate(){let e=new J3(this.context,this.state);this.enterRule(e,300,r.RULE_predicate);try{this.enterOuterAlt(e,1),this.state=2349,this.typePrefix(),this.state=2350,this.match(r.PREDICATE),this.state=2351,this.classifierDeclaration(),this.state=2352,this.functionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}booleanExpression(){let e=new Q3(this.context,this.state);this.enterRule(e,302,r.RULE_booleanExpression);let t;try{this.enterOuterAlt(e,1),this.state=2354,this.featurePrefix(),this.state=2355,this.match(r.BOOL),this.state=2356,this.featureDeclaration(),this.state=2358,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2357,this.valuePart()),this.state=2360,this.functionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}invariant(){let e=new Y3(this.context,this.state);this.enterRule(e,304,r.RULE_invariant);let t;try{this.enterOuterAlt(e,1),this.state=2362,this.featurePrefix(),this.state=2363,this.match(r.INV),this.state=2365,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===64||t===156)&&(this.state=2364,t=this.tokenStream.LA(1),t===64||t===156?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2367,this.featureDeclaration(),this.state=2369,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2368,this.valuePart()),this.state=2371,this.functionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedExpressionMember(){let e=new X3(this.context,this.state);this.enterRule(e,306,r.RULE_ownedExpressionMember);try{this.enterOuterAlt(e,1),this.state=2373,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataReference(){let e=new j9(this.context,this.state);this.enterRule(e,308,r.RULE_metadataReference);try{this.enterOuterAlt(e,1),this.state=2375,this.elementReferenceMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeReferenceMember(){let e=new q9(this.context,this.state);this.enterRule(e,310,r.RULE_typeReferenceMember);try{this.enterOuterAlt(e,1),this.state=2377,this.typeReference()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeResultMember(){let e=new V9(this.context,this.state);this.enterRule(e,312,r.RULE_typeResultMember);try{this.enterOuterAlt(e,1),this.state=2379,this.typeReference()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}referenceTyping(){let e=new ex(this.context,this.state);this.enterRule(e,314,r.RULE_referenceTyping);try{this.enterOuterAlt(e,1),this.state=2381,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyResultMember(){let e=new Z9(this.context,this.state);this.enterRule(e,316,r.RULE_emptyResultMember);try{this.enterOuterAlt(e,1),this.state=2383,this.emptyFeature_()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sequenceOperatorExpression(){let e=new G9(this.context,this.state);this.enterRule(e,318,r.RULE_sequenceOperatorExpression);try{this.enterOuterAlt(e,1),this.state=2385,this.ownedExpressionMember(),this.state=2386,this.match(r.COMMA),this.state=2387,this.sequenceExpressionListMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sequenceExpressionListMember(){let e=new tx(this.context,this.state);this.enterRule(e,320,r.RULE_sequenceExpressionListMember);try{this.enterOuterAlt(e,1),this.state=2389,this.sequenceExpressionList()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyArgumentMember(){let e=new W9(this.context,this.state);this.enterRule(e,322,r.RULE_bodyArgumentMember);try{this.enterOuterAlt(e,1),this.state=2391,this.bodyArgument()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyArgument(){let e=new rx(this.context,this.state);this.enterRule(e,324,r.RULE_bodyArgument);try{this.enterOuterAlt(e,1),this.state=2393,this.bodyArgumentValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyArgumentValue(){let e=new ix(this.context,this.state);this.enterRule(e,326,r.RULE_bodyArgumentValue);try{this.enterOuterAlt(e,1),this.state=2395,this.bodyExpression()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceArgumentMember(){let e=new K9(this.context,this.state);this.enterRule(e,328,r.RULE_functionReferenceArgumentMember);try{this.enterOuterAlt(e,1),this.state=2397,this.functionReferenceArgument()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceArgument(){let e=new nx(this.context,this.state);this.enterRule(e,330,r.RULE_functionReferenceArgument);try{this.enterOuterAlt(e,1),this.state=2399,this.functionReferenceArgumentValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceArgumentValue(){let e=new sx(this.context,this.state);this.enterRule(e,332,r.RULE_functionReferenceArgumentValue);try{this.enterOuterAlt(e,1),this.state=2401,this.functionReferenceExpression()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceExpression(){let e=new ox(this.context,this.state);this.enterRule(e,334,r.RULE_functionReferenceExpression);try{this.enterOuterAlt(e,1),this.state=2403,this.functionReferenceMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceMember(){let e=new ax(this.context,this.state);this.enterRule(e,336,r.RULE_functionReferenceMember);try{this.enterOuterAlt(e,1),this.state=2405,this.functionReference()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReference(){let e=new lx(this.context,this.state);this.enterRule(e,338,r.RULE_functionReference);try{this.enterOuterAlt(e,1),this.state=2407,this.referenceTyping()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureChainMember(){let e=new ha(this.context,this.state);this.enterRule(e,340,r.RULE_featureChainMember);let t;try{for(this.enterOuterAlt(e,1),this.state=2409,this.qualifiedName(),this.state=2414,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2410,this.match(r.DOT),this.state=2411,this.qualifiedName(),this.state=2416,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureChainMember(){let e=new J9(this.context,this.state);this.enterRule(e,342,r.RULE_ownedFeatureChainMember);try{switch(this.state=2419,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,200,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2417,this.featureChain();break;case 2:this.enterOuterAlt(e,2),this.state=2418,this.ownedFeatureChain();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureReferenceMember(){let e=new Q9(this.context,this.state);this.enterRule(e,344,r.RULE_featureReferenceMember);try{this.enterOuterAlt(e,1),this.state=2421,this.featureReference()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureReference(){let e=new ux(this.context,this.state);this.enterRule(e,346,r.RULE_featureReference);try{this.enterOuterAlt(e,1),this.state=2423,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}elementReferenceMember(){let e=new cx(this.context,this.state);this.enterRule(e,348,r.RULE_elementReferenceMember);try{this.enterOuterAlt(e,1),this.state=2425,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constructorResultMember(){let e=new Y9(this.context,this.state);this.enterRule(e,350,r.RULE_constructorResultMember);try{this.enterOuterAlt(e,1),this.state=2427,this.constructorResult()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constructorResult(){let e=new dx(this.context,this.state);this.enterRule(e,352,r.RULE_constructorResult);try{this.enterOuterAlt(e,1),this.state=2429,this.argumentList()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}instantiatedTypeMember(){let e=new X9(this.context,this.state);this.enterRule(e,354,r.RULE_instantiatedTypeMember);let t;try{for(this.enterOuterAlt(e,1),this.state=2431,this.qualifiedName(),this.state=2436,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2432,this.match(r.DOT),this.state=2433,this.qualifiedName(),this.state=2438,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}instantiatedTypeReference(){let e=new eC(this.context,this.state);this.enterRule(e,356,r.RULE_instantiatedTypeReference);try{this.enterOuterAlt(e,1),this.state=2439,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namedArgumentMember(){let e=new tC(this.context,this.state);this.enterRule(e,358,r.RULE_namedArgumentMember);try{this.enterOuterAlt(e,1),this.state=2441,this.namedArgument()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}parameterRedefinition(){let e=new rC(this.context,this.state);this.enterRule(e,360,r.RULE_parameterRedefinition);try{this.enterOuterAlt(e,1),this.state=2443,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expressionBodyMember(){let e=new iC(this.context,this.state);this.enterRule(e,362,r.RULE_expressionBodyMember);try{this.enterOuterAlt(e,1),this.state=2445,this.expressionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expressionBody(){let e=new hx(this.context,this.state);this.enterRule(e,364,r.RULE_expressionBody);try{this.enterOuterAlt(e,1),this.state=2447,this.match(r.LBRACE),this.state=2448,this.functionBodyPart(),this.state=2449,this.match(r.RBRACE)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}booleanValue(){let e=new nC(this.context,this.state);this.enterRule(e,366,r.RULE_booleanValue);let t;try{this.enterOuterAlt(e,1),this.state=2451,t=this.tokenStream.LA(1),t===64||t===156?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}realValue(){let e=new sC(this.context,this.state);this.enterRule(e,368,r.RULE_realValue);let t;try{switch(this.state=2459,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOT:case r.INTEGER:this.enterOuterAlt(e,1),this.state=2454,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===221&&(this.state=2453,this.match(r.INTEGER)),this.state=2456,this.match(r.DOT),this.state=2457,t=this.tokenStream.LA(1),t===221||t===222?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case r.REAL:this.enterOuterAlt(e,2),this.state=2458,this.match(r.REAL);break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interaction(){let e=new px(this.context,this.state);this.enterRule(e,370,r.RULE_interaction);try{this.enterOuterAlt(e,1),this.state=2461,this.typePrefix(),this.state=2462,this.match(r.INTERACTION),this.state=2463,this.classifierDeclaration(),this.state=2464,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flow(){let e=new fx(this.context,this.state);this.enterRule(e,372,r.RULE_flow);try{this.enterOuterAlt(e,1),this.state=2466,this.featurePrefix(),this.state=2467,this.match(r.FLOW),this.state=2468,this.flowDeclaration(),this.state=2469,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}successionFlow(){let e=new mx(this.context,this.state);this.enterRule(e,374,r.RULE_successionFlow);try{this.enterOuterAlt(e,1),this.state=2471,this.featurePrefix(),this.state=2472,this.match(r.SUCCESSION),this.state=2473,this.match(r.FLOW),this.state=2474,this.flowDeclaration(),this.state=2475,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowDeclaration(){let e=new pa(this.context,this.state);this.enterRule(e,376,r.RULE_flowDeclaration);let t;try{switch(this.state=2516,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,212,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2477,this.featureDeclaration(),this.state=2479,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2478,this.valuePart()),this.state=2483,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2481,this.match(r.OF),this.state=2482,this.payloadFeatureMember()),this.state=2490,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=2485,this.match(r.FROM),this.state=2486,this.flowEndMember(),this.state=2487,this.match(r.TO),this.state=2488,this.flowEndMember());break;case 2:this.enterOuterAlt(e,2),this.state=2493,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=2492,this.match(r.ALL)),this.state=2495,this.flowEndMember(),this.state=2496,this.match(r.TO),this.state=2497,this.flowEndMember();break;case 3:this.enterOuterAlt(e,3),this.state=2500,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=2499,this.usageDeclaration()),this.state=2503,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2502,this.valuePart()),this.state=2507,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2505,this.match(r.OF),this.state=2506,this.flowPayloadFeatureMember()),this.state=2514,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=2509,this.match(r.FROM),this.state=2510,this.flowEndMember(),this.state=2511,this.match(r.TO),this.state=2512,this.flowEndMember());break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}payloadFeatureMember(){let e=new gx(this.context,this.state);this.enterRule(e,378,r.RULE_payloadFeatureMember);try{this.enterOuterAlt(e,1),this.state=2518,this.payloadFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}payloadFeature(){let e=new Cu(this.context,this.state);this.enterRule(e,380,r.RULE_payloadFeature);let t;try{switch(this.state=2539,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,218,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2521,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2520,this.identification()),this.state=2523,this.valuePart();break;case 2:this.enterOuterAlt(e,2),this.state=2525,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2524,this.identification()),this.state=2527,this.payloadFeatureSpecializationPart(),this.state=2529,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2528,this.valuePart());break;case 3:this.enterOuterAlt(e,3),this.state=2531,this.ownedFeatureTyping(),this.state=2533,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===211&&(this.state=2532,this.ownedMultiplicity());break;case 4:this.enterOuterAlt(e,4),this.state=2535,this.ownedMultiplicity(),this.state=2537,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-193&-32)===0&&(1<<t-193&100663297)!==0&&(this.state=2536,this.ownedFeatureTyping());break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}payloadFeatureSpecializationPart(){let e=new Y1(this.context,this.state);this.enterRule(e,382,r.RULE_payloadFeatureSpecializationPart);let t;try{let i;switch(this.state=2561,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.CROSSES:case r.DEFINED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:this.enterOuterAlt(e,1);{this.state=2542,this.errorHandler.sync(this),i=1;do{if(i===1)this.state=2541,this.featureSpecialization();else throw new ne(this);this.state=2544,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,219,this.context)}while(i!==2&&i!==Ce.INVALID_ALT_NUMBER);for(this.state=2547,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===106||t===113||t===211)&&(this.state=2546,this.multiplicityPart()),this.state=2552,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204;)this.state=2549,this.featureSpecialization(),this.state=2554,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}break;case r.NONUNIQUE:case r.ORDERED:case r.LBRACK:this.enterOuterAlt(e,2);{this.state=2555,this.multiplicityPart(),this.state=2557,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=2556,this.featureSpecialization(),this.state=2559,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}flowEndMember(){let e=new X1(this.context,this.state);this.enterRule(e,384,r.RULE_flowEndMember);try{this.enterOuterAlt(e,1),this.state=2563,this.flowEnd()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowEnd(){let e=new xx(this.context,this.state);this.enterRule(e,386,r.RULE_flowEnd);let t;try{for(this.enterOuterAlt(e,1),this.state=2565,this.qualifiedName(),this.state=2570,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2566,this.match(r.DOT),this.state=2567,this.qualifiedName(),this.state=2572,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}flowFeatureMember(){let e=new oC(this.context,this.state);this.enterRule(e,388,r.RULE_flowFeatureMember);try{this.enterOuterAlt(e,1),this.state=2573,this.flowFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowFeature(){let e=new bx(this.context,this.state);this.enterRule(e,390,r.RULE_flowFeature);try{this.enterOuterAlt(e,1),this.state=2575,this.flowFeatureRedefinition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowFeatureRedefinition(){let e=new yx(this.context,this.state);this.enterRule(e,392,r.RULE_flowFeatureRedefinition);try{this.enterOuterAlt(e,1),this.state=2577,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}valuePart(){let e=new St(this.context,this.state);this.enterRule(e,394,r.RULE_valuePart);try{this.enterOuterAlt(e,1),this.state=2579,this.featureValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureValue(){let e=new vx(this.context,this.state);this.enterRule(e,396,r.RULE_featureValue);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2587,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.EQ:this.state=2581,this.match(r.EQ);break;case r.COLON_EQ:this.state=2582,this.match(r.COLON_EQ);break;case r.DEFAULT:this.state=2583,this.match(r.DEFAULT),this.state=2585,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===184||t===207)&&(this.state=2584,t=this.tokenStream.LA(1),t===184||t===207?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;default:throw new ne(this)}this.state=2589,this.ownedExpression(0)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}multiplicity(){let e=new Rx(this.context,this.state);this.enterRule(e,398,r.RULE_multiplicity);try{switch(this.state=2593,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,227,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2591,this.multiplicitySubset();break;case 2:this.enterOuterAlt(e,2),this.state=2592,this.multiplicityRange();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicitySubset(){let e=new Cx(this.context,this.state);this.enterRule(e,400,r.RULE_multiplicitySubset);let t;try{this.enterOuterAlt(e,1),this.state=2595,this.match(r.MULTIPLICITY),this.state=2597,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2596,this.identification()),this.state=2599,this.subsets(),this.state=2600,this.typeBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}multiplicityRange(){let e=new Ex(this.context,this.state);this.enterRule(e,402,r.RULE_multiplicityRange);let t;try{this.enterOuterAlt(e,1),this.state=2602,this.match(r.MULTIPLICITY),this.state=2604,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2603,this.identification()),this.state=2606,this.multiplicityBounds(),this.state=2607,this.typeBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedMultiplicity(){let e=new os(this.context,this.state);this.enterRule(e,404,r.RULE_ownedMultiplicity);try{this.enterOuterAlt(e,1),this.state=2609,this.ownedMultiplicityRange()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedMultiplicityRange(){let e=new Sx(this.context,this.state);this.enterRule(e,406,r.RULE_ownedMultiplicityRange);try{this.enterOuterAlt(e,1),this.state=2611,this.multiplicityBounds()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicityBounds(){let e=new ed(this.context,this.state);this.enterRule(e,408,r.RULE_multiplicityBounds);try{this.enterOuterAlt(e,1),this.state=2613,this.match(r.LBRACK),this.state=2617,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,230,this.context)===1&&(this.state=2614,this.multiplicityExpressionMember(),this.state=2615,this.match(r.DOT_DOT)),this.state=2619,this.multiplicityExpressionMember(),this.state=2620,this.match(r.RBRACK)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicityExpressionMember(){let e=new td(this.context,this.state);this.enterRule(e,410,r.RULE_multiplicityExpressionMember);try{switch(this.enterOuterAlt(e,1),this.state=2624,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.FALSE:case r.TRUE:case r.STAR:case r.DOUBLE_STRING:case r.INTEGER:case r.REAL:this.state=2622,this.literalExpression();break;case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=2623,this.featureReferenceExpression();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metaclass(){let e=new Px(this.context,this.state);this.enterRule(e,412,r.RULE_metaclass);try{this.enterOuterAlt(e,1),this.state=2626,this.typePrefix(),this.state=2627,this.match(r.METACLASS),this.state=2628,this.classifierDeclaration(),this.state=2629,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}prefixMetadataAnnotation(){let e=new rd(this.context,this.state);this.enterRule(e,414,r.RULE_prefixMetadataAnnotation);try{switch(this.state=2635,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,232,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2631,this.match(r.HASH),this.state=2632,this.prefixMetadataFeature();break;case 2:this.enterOuterAlt(e,2),this.state=2633,this.match(r.HASH),this.state=2634,this.prefixMetadataUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}prefixMetadataMember(){let e=new tr(this.context,this.state);this.enterRule(e,416,r.RULE_prefixMetadataMember);try{switch(this.state=2641,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,233,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2637,this.match(r.HASH),this.state=2638,this.prefixMetadataFeature();break;case 2:this.enterOuterAlt(e,2),this.state=2639,this.match(r.HASH),this.state=2640,this.prefixMetadataUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}prefixMetadataFeature(){let e=new id(this.context,this.state);this.enterRule(e,418,r.RULE_prefixMetadataFeature);try{this.enterOuterAlt(e,1),this.state=2643,this.ownedFeatureTyping()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataFeature(){let e=new Lx(this.context,this.state);this.enterRule(e,420,r.RULE_metadataFeature);let t;try{this.enterOuterAlt(e,1);{for(this.state=2648,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2645,this.prefixMetadataMember(),this.state=2650,this.errorHandler.sync(this),t=this.tokenStream.LA(1);if(this.state=2651,t=this.tokenStream.LA(1),t===102||t===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2652,this.metadataFeatureDeclaration(),this.state=2662,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===1)for(this.state=2653,this.match(r.ABOUT),this.state=2654,this.annotation(),this.state=2659,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2655,this.match(r.COMMA),this.state=2656,this.annotation(),this.state=2661,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2664,this.metadataBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataFeatureDeclaration(){let e=new Tx(this.context,this.state);this.enterRule(e,422,r.RULE_metadataFeatureDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2674,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,239,this.context)){case 1:switch(this.state=2667,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2666,this.identification()),this.state=2672,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=2669,this.match(r.COLON);break;case r.TYPED:this.state=2670,this.match(r.TYPED),this.state=2671,this.match(r.BY);break;default:throw new ne(this)}break}this.state=2676,this.ownedFeatureTyping()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataBody(){let e=new fa(this.context,this.state);this.enterRule(e,424,r.RULE_metadataBody);let t;try{switch(this.state=2698,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,243,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2678,this.match(r.SEMI);break;case 2:this.enterOuterAlt(e,2);{for(this.state=2679,this.match(r.LBRACE),this.state=2683,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1880162436)!==0||(t-33&-32)===0&&(1<<t-33&2917381)!==0||(t-65&-32)===0&&(1<<t-65&1904755717)!==0||(t-101&-32)===0&&(1<<t-101&1139818511)!==0||(t-138&-32)===0&&(1<<t-138&2624201)!==0||(t-176&-32)===0&&(1<<t-176&196609)!==0||(t-210&-32)===0&&(1<<t-210&9089)!==0;)this.state=2680,this.metadataBodyElement(),this.state=2685,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2686,this.match(r.RBRACE)}break;case 3:this.enterOuterAlt(e,3);{for(this.state=2687,this.match(r.LBRACE),this.state=2694,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1174932628)!==0||(t-32&-32)===0&&(1<<t-32&71369249)!==0||(t-70&-32)===0&&(1<<t-70&60854785)!==0||(t-102&-32)===0&&(1<<t-102&3002245377)!==0||(t-141&-32)===0&&(1<<t-141&857735171)!==0||(t-176&-32)===0&&(1<<t-176&196609)!==0||(t-210&-32)===0&&(1<<t-210&8961)!==0;){switch(this.state=2692,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,241,this.context)){case 1:this.state=2688,this.definitionMember();break;case 2:this.state=2689,this.metadataBodyUsageMember();break;case 3:this.state=2690,this.aliasMember();break;case 4:this.state=2691,this.importRule();break}this.state=2696,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}this.state=2697,this.match(r.RBRACE)}break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataBodyElement(){let e=new nd(this.context,this.state);this.enterRule(e,426,r.RULE_metadataBodyElement);try{switch(this.state=2704,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,244,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2700,this.nonFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=2701,this.metadataBodyFeatureMember();break;case 3:this.enterOuterAlt(e,3),this.state=2702,this.aliasMember();break;case 4:this.enterOuterAlt(e,4),this.state=2703,this.importRule();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataBodyFeatureMember(){let e=new wx(this.context,this.state);this.enterRule(e,428,r.RULE_metadataBodyFeatureMember);try{this.enterOuterAlt(e,1),this.state=2706,this.metadataBodyFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataBodyFeature(){let e=new kx(this.context,this.state);this.enterRule(e,430,r.RULE_metadataBodyFeature);let t;try{this.enterOuterAlt(e,1),this.state=2709,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===65&&(this.state=2708,this.match(r.FEATURE)),this.state=2712,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===125||t===176)&&(this.state=2711,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2714,this.ownedRedefinition(),this.state=2716,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=2715,this.featureSpecializationPart()),this.state=2719,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2718,this.valuePart()),this.state=2721,this.metadataBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}package_(){let e=new sd(this.context,this.state);this.enterRule(e,432,r.RULE_package);let t;try{this.enterOuterAlt(e,1);{for(this.state=2726,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2723,this.prefixMetadataMember(),this.state=2728,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2729,this.packageDeclaration(),this.state=2730,this.packageBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}libraryPackage(){let e=new od(this.context,this.state);this.enterRule(e,434,r.RULE_libraryPackage);let t;try{this.enterOuterAlt(e,1);{for(this.state=2733,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===141&&(this.state=2732,this.match(r.STANDARD)),this.state=2735,this.match(r.LIBRARY),this.state=2739,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2736,this.prefixMetadataMember(),this.state=2741,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2742,this.packageDeclaration(),this.state=2743,this.packageBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}packageDeclaration(){let e=new ad(this.context,this.state);this.enterRule(e,436,r.RULE_packageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=2745,this.match(r.PACKAGE),this.state=2747,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2746,this.identification())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}packageBody(){let e=new ld(this.context,this.state);this.enterRule(e,438,r.RULE_packageBody);let t;try{switch(this.state=2758,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=2749,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=2750,this.match(r.LBRACE),this.state=2754,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3364135109)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=2751,this.packageBodyElement(),this.state=2756,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2757,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}elementFilterMember(){let e=new Eu(this.context,this.state);this.enterRule(e,440,r.RULE_elementFilterMember);try{this.enterOuterAlt(e,1),this.state=2760,this.memberPrefix(),this.state=2761,this.match(r.FILTER),this.state=2762,this.ownedExpression(0),this.state=2763,this.match(r.SEMI)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}dependencyDeclaration(){let e=new Ax(this.context,this.state);this.enterRule(e,442,r.RULE_dependencyDeclaration);let t;try{this.enterOuterAlt(e,1);{for(this.state=2769,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,256,this.context)===1&&(this.state=2766,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2765,this.identification()),this.state=2768,this.match(r.FROM)),this.state=2771,this.qualifiedName(),this.state=2776,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2772,this.match(r.COMMA),this.state=2773,this.qualifiedName(),this.state=2778,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=2779,this.match(r.TO),this.state=2780,this.qualifiedName(),this.state=2785,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2781,this.match(r.COMMA),this.state=2782,this.qualifiedName(),this.state=2787,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}annotatingMember(){let e=new ud(this.context,this.state);this.enterRule(e,444,r.RULE_annotatingMember);try{this.enterOuterAlt(e,1),this.state=2788,this.annotatingElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}packageBodyElement(){let e=new ma(this.context,this.state);this.enterRule(e,446,r.RULE_packageBodyElement);try{switch(this.state=2794,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,259,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2790,this.packageMember();break;case 2:this.enterOuterAlt(e,2),this.state=2791,this.elementFilterMember();break;case 3:this.enterOuterAlt(e,3),this.state=2792,this.aliasMember();break;case 4:this.enterOuterAlt(e,4),this.state=2793,this.importRule();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}packageMember(){let e=new Mx(this.context,this.state);this.enterRule(e,448,r.RULE_packageMember);try{switch(this.enterOuterAlt(e,1),this.state=2796,this.memberPrefix(),this.state=2799,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,260,this.context)){case 1:this.state=2797,this.definitionElement();break;case 2:this.state=2798,this.usageElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}definitionElement(){let e=new Su(this.context,this.state);this.enterRule(e,450,r.RULE_definitionElement);try{switch(this.state=2831,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,261,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2801,this.package_();break;case 2:this.enterOuterAlt(e,2),this.state=2802,this.libraryPackage();break;case 3:this.enterOuterAlt(e,3),this.state=2803,this.annotatingElement();break;case 4:this.enterOuterAlt(e,4),this.state=2804,this.dependency();break;case 5:this.enterOuterAlt(e,5),this.state=2805,this.attributeDefinition();break;case 6:this.enterOuterAlt(e,6),this.state=2806,this.enumerationDefinition();break;case 7:this.enterOuterAlt(e,7),this.state=2807,this.occurrenceDefinition();break;case 8:this.enterOuterAlt(e,8),this.state=2808,this.individualDefinition();break;case 9:this.enterOuterAlt(e,9),this.state=2809,this.itemDefinition();break;case 10:this.enterOuterAlt(e,10),this.state=2810,this.partDefinition();break;case 11:this.enterOuterAlt(e,11),this.state=2811,this.connectionDefinition();break;case 12:this.enterOuterAlt(e,12),this.state=2812,this.flowDefinition();break;case 13:this.enterOuterAlt(e,13),this.state=2813,this.interfaceDefinition();break;case 14:this.enterOuterAlt(e,14),this.state=2814,this.portDefinition();break;case 15:this.enterOuterAlt(e,15),this.state=2815,this.actionDefinition();break;case 16:this.enterOuterAlt(e,16),this.state=2816,this.calculationDefinition();break;case 17:this.enterOuterAlt(e,17),this.state=2817,this.stateDefinition();break;case 18:this.enterOuterAlt(e,18),this.state=2818,this.constraintDefinition();break;case 19:this.enterOuterAlt(e,19),this.state=2819,this.requirementDefinition();break;case 20:this.enterOuterAlt(e,20),this.state=2820,this.concernDefinition();break;case 21:this.enterOuterAlt(e,21),this.state=2821,this.caseDefinition();break;case 22:this.enterOuterAlt(e,22),this.state=2822,this.analysisCaseDefinition();break;case 23:this.enterOuterAlt(e,23),this.state=2823,this.verificationCaseDefinition();break;case 24:this.enterOuterAlt(e,24),this.state=2824,this.useCaseDefinition();break;case 25:this.enterOuterAlt(e,25),this.state=2825,this.viewDefinition();break;case 26:this.enterOuterAlt(e,26),this.state=2826,this.viewpointDefinition();break;case 27:this.enterOuterAlt(e,27),this.state=2827,this.renderingDefinition();break;case 28:this.enterOuterAlt(e,28),this.state=2828,this.metadataDefinition();break;case 29:this.enterOuterAlt(e,29),this.state=2829,this.allocationDefinition();break;case 30:this.enterOuterAlt(e,30),this.state=2830,this.extendedDefinition();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usageElement(){let e=new cd(this.context,this.state);this.enterRule(e,452,r.RULE_usageElement);try{switch(this.state=2835,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,262,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2833,this.nonOccurrenceUsageElement();break;case 2:this.enterOuterAlt(e,2),this.state=2834,this.occurrenceUsageElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}basicDefinitionPrefix(){let e=new ga(this.context,this.state);this.enterRule(e,454,r.RULE_basicDefinitionPrefix);let t;try{this.enterOuterAlt(e,1),this.state=2837,t=this.tokenStream.LA(1),t===2||t===165?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionExtensionKeyword(){let e=new $r(this.context,this.state);this.enterRule(e,456,r.RULE_definitionExtensionKeyword);try{this.enterOuterAlt(e,1),this.state=2839,this.prefixMetadataMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}definitionPrefix(){let e=new dd(this.context,this.state);this.enterRule(e,458,r.RULE_definitionPrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=2842,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=2841,this.basicDefinitionPrefix()),this.state=2847,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2844,this.definitionExtensionKeyword(),this.state=2849,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definition(){let e=new Fr(this.context,this.state);this.enterRule(e,460,r.RULE_definition);try{this.enterOuterAlt(e,1),this.state=2850,this.definitionDeclaration(),this.state=2851,this.definitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}definitionDeclaration(){let e=new rr(this.context,this.state);this.enterRule(e,462,r.RULE_definitionDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=2854,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2853,this.identification()),this.state=2857,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===139||t===185)&&(this.state=2856,this.subclassificationPart())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionBody(){let e=new ro(this.context,this.state);this.enterRule(e,464,r.RULE_definitionBody);let t;try{switch(this.state=2868,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=2859,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=2860,this.match(r.LBRACE),this.state=2864,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901137093)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=2861,this.definitionBodyItem(),this.state=2866,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2867,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionBodyItem(){let e=new io(this.context,this.state);this.enterRule(e,466,r.RULE_definitionBodyItem);let t;try{switch(this.state=2880,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,270,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2870,this.importRule();break;case 2:this.enterOuterAlt(e,2),this.state=2871,this.memberPrefix(),this.state=2872,this.definitionBodyItemContent();break;case 3:this.enterOuterAlt(e,3),this.state=2875,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=2874,this.sourceSuccessionMember()),this.state=2877,this.memberPrefix(),this.state=2878,this.occurrenceUsageElement();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionBodyItemContent(){let e=new _x(this.context,this.state);this.enterRule(e,468,r.RULE_definitionBodyItemContent);let t;try{switch(this.state=2900,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,273,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2882,this.match(r.ALIAS),this.state=2887,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===206&&(this.state=2883,this.match(r.LT),this.state=2884,this.name(),this.state=2885,this.match(r.GT)),this.state=2890,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===218||t===219)&&(this.state=2889,this.name()),this.state=2892,this.match(r.FOR),this.state=2893,this.qualifiedName(),this.state=2894,this.relationshipBody();break;case 2:this.enterOuterAlt(e,2),this.state=2896,this.match(r.VARIANT),this.state=2897,this.variantUsageElement();break;case 3:this.enterOuterAlt(e,3),this.state=2898,this.definitionElement();break;case 4:this.enterOuterAlt(e,4),this.state=2899,this.nonOccurrenceUsageElement();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionMember(){let e=new xa(this.context,this.state);this.enterRule(e,470,r.RULE_definitionMember);try{this.enterOuterAlt(e,1),this.state=2902,this.memberPrefix(),this.state=2903,this.definitionElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}variantUsageMember(){let e=new hd(this.context,this.state);this.enterRule(e,472,r.RULE_variantUsageMember);try{this.enterOuterAlt(e,1),this.state=2905,this.memberPrefix(),this.state=2906,this.match(r.VARIANT),this.state=2907,this.variantUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonOccurrenceUsageMember(){let e=new Nx(this.context,this.state);this.enterRule(e,474,r.RULE_nonOccurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=2909,this.memberPrefix(),this.state=2910,this.nonOccurrenceUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceUsageMember(){let e=new aC(this.context,this.state);this.enterRule(e,476,r.RULE_occurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=2912,this.memberPrefix(),this.state=2913,this.occurrenceUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}structureUsageMember(){let e=new Ix(this.context,this.state);this.enterRule(e,478,r.RULE_structureUsageMember);try{this.enterOuterAlt(e,1),this.state=2915,this.memberPrefix(),this.state=2916,this.structureUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}behaviorUsageMember(){let e=new pd(this.context,this.state);this.enterRule(e,480,r.RULE_behaviorUsageMember);try{this.enterOuterAlt(e,1),this.state=2918,this.memberPrefix(),this.state=2919,this.behaviorUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}refPrefix(){let e=new ba(this.context,this.state);this.enterRule(e,482,r.RULE_refPrefix);let t;try{this.enterOuterAlt(e,1),this.state=2922,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===80||t===83||t===114)&&(this.state=2921,this.featureDirection()),this.state=2925,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===49&&(this.state=2924,this.match(r.DERIVED)),this.state=2928,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=2927,t=this.tokenStream.LA(1),t===2||t===165?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2931,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===40&&(this.state=2930,this.match(r.CONSTANT))}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}basicUsagePrefix(){let e=new no(this.context,this.state);this.enterRule(e,484,r.RULE_basicUsagePrefix);try{this.enterOuterAlt(e,1),this.state=2933,this.refPrefix(),this.state=2935,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,278,this.context)===1&&(this.state=2934,this.match(r.REF))}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}endUsagePrefix(){let e=new Pu(this.context,this.state);this.enterRule(e,486,r.RULE_endUsagePrefix);try{this.enterOuterAlt(e,1),this.state=2937,this.match(r.END),this.state=2938,this.ownedCrossFeatureMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usageExtensionKeyword(){let e=new Ke(this.context,this.state);this.enterRule(e,488,r.RULE_usageExtensionKeyword);try{this.enterOuterAlt(e,1),this.state=2940,this.prefixMetadataMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}unextendedUsagePrefix(){let e=new fd(this.context,this.state);this.enterRule(e,490,r.RULE_unextendedUsagePrefix);try{switch(this.state=2944,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.END:this.enterOuterAlt(e,1),this.state=2942,this.endUsagePrefix();break;case r.ABSTRACT:case r.ATTRIBUTE:case r.BIND:case r.BINDING:case r.CONSTANT:case r.DERIVED:case r.ENUM:case r.FIRST:case r.IN:case r.INOUT:case r.OUT:case r.REF:case r.SUCCESSION:case r.VARIATION:case r.HASH:this.enterOuterAlt(e,2),this.state=2943,this.basicUsagePrefix();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usagePrefix(){let e=new ya(this.context,this.state);this.enterRule(e,492,r.RULE_usagePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=2946,this.unextendedUsagePrefix(),this.state=2950,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2947,this.usageExtensionKeyword(),this.state=2952,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}usage(){let e=new Ht(this.context,this.state);this.enterRule(e,494,r.RULE_usage);let t;try{this.enterOuterAlt(e,1),this.state=2954,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=2953,this.usageDeclaration()),this.state=2956,this.usageCompletion()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}usageDeclaration(){let e=new Xe(this.context,this.state);this.enterRule(e,496,r.RULE_usageDeclaration);try{switch(this.state=2963,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LT:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=2958,this.identification(),this.state=2960,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,282,this.context)===1&&(this.state=2959,this.featureSpecializationPart());break;case r.CROSSES:case r.DEFINED:case r.NONUNIQUE:case r.ORDERED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.LBRACK:this.enterOuterAlt(e,2),this.state=2962,this.featureSpecializationPart();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usageCompletion(){let e=new Lu(this.context,this.state);this.enterRule(e,498,r.RULE_usageCompletion);let t;try{this.enterOuterAlt(e,1),this.state=2966,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2965,this.valuePart()),this.state=2968,this.usageBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}usageBody(){let e=new ki(this.context,this.state);this.enterRule(e,500,r.RULE_usageBody);try{this.enterOuterAlt(e,1),this.state=2970,this.definitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}defaultReferenceUsage(){let e=new Ux(this.context,this.state);this.enterRule(e,502,r.RULE_defaultReferenceUsage);try{this.enterOuterAlt(e,1),this.state=2972,this.refPrefix(),this.state=2973,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}referenceUsage(){let e=new Tu(this.context,this.state);this.enterRule(e,504,r.RULE_referenceUsage);try{this.enterOuterAlt(e,1);{switch(this.state=2977,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.END:this.state=2975,this.endUsagePrefix();break;case r.ABSTRACT:case r.CONSTANT:case r.DERIVED:case r.IN:case r.INOUT:case r.OUT:case r.REF:case r.VARIATION:this.state=2976,this.refPrefix();break;default:throw new ne(this)}this.state=2979,this.match(r.REF),this.state=2980,this.usage()}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}endFeatureUsage(){let e=new Ox(this.context,this.state);this.enterRule(e,506,r.RULE_endFeatureUsage);try{this.enterOuterAlt(e,1),this.state=2982,this.endUsagePrefix(),this.state=2983,this.featureDeclaration(),this.state=2984,this.usageCompletion()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}variantReference(){let e=new Dx(this.context,this.state);this.enterRule(e,508,r.RULE_variantReference);let t;try{this.enterOuterAlt(e,1);{for(this.state=2986,this.ownedReferenceSubsetting(),this.state=2990,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204;)this.state=2987,this.featureSpecialization(),this.state=2992,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2993,this.usageBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nonOccurrenceUsageElement(){let e=new wu(this.context,this.state);this.enterRule(e,510,r.RULE_nonOccurrenceUsageElement);try{switch(this.state=3003,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,287,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2995,this.referenceUsage();break;case 2:this.enterOuterAlt(e,2),this.state=2996,this.endFeatureUsage();break;case 3:this.enterOuterAlt(e,3),this.state=2997,this.attributeUsage();break;case 4:this.enterOuterAlt(e,4),this.state=2998,this.enumerationUsage();break;case 5:this.enterOuterAlt(e,5),this.state=2999,this.bindingConnectorAsUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3e3,this.successionAsUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3001,this.extendedUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3002,this.defaultReferenceUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceUsageElement(){let e=new ku(this.context,this.state);this.enterRule(e,512,r.RULE_occurrenceUsageElement);try{switch(this.state=3007,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,288,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3005,this.structureUsageElement();break;case 2:this.enterOuterAlt(e,2),this.state=3006,this.behaviorUsageElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}structureUsageElement(){let e=new Au(this.context,this.state);this.enterRule(e,514,r.RULE_structureUsageElement);try{switch(this.state=3024,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,289,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3009,this.occurrenceUsage();break;case 2:this.enterOuterAlt(e,2),this.state=3010,this.individualUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3011,this.portionUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3012,this.eventOccurrenceUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3013,this.itemUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3014,this.partUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3015,this.viewUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3016,this.renderingUsage();break;case 9:this.enterOuterAlt(e,9),this.state=3017,this.portUsage();break;case 10:this.enterOuterAlt(e,10),this.state=3018,this.connectionUsage();break;case 11:this.enterOuterAlt(e,11),this.state=3019,this.interfaceUsage();break;case 12:this.enterOuterAlt(e,12),this.state=3020,this.allocationUsage();break;case 13:this.enterOuterAlt(e,13),this.state=3021,this.message();break;case 14:this.enterOuterAlt(e,14),this.state=3022,this.flowUsage();break;case 15:this.enterOuterAlt(e,15),this.state=3023,this.successionFlowUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}behaviorUsageElement(){let e=new va(this.context,this.state);this.enterRule(e,516,r.RULE_behaviorUsageElement);try{switch(this.state=3042,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,290,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3026,this.actionUsage();break;case 2:this.enterOuterAlt(e,2),this.state=3027,this.calculationUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3028,this.stateUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3029,this.constraintUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3030,this.requirementUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3031,this.concernUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3032,this.caseUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3033,this.analysisCaseUsage();break;case 9:this.enterOuterAlt(e,9),this.state=3034,this.verificationCaseUsage();break;case 10:this.enterOuterAlt(e,10),this.state=3035,this.useCaseUsage();break;case 11:this.enterOuterAlt(e,11),this.state=3036,this.viewpointUsage();break;case 12:this.enterOuterAlt(e,12),this.state=3037,this.performActionUsage();break;case 13:this.enterOuterAlt(e,13),this.state=3038,this.exhibitStateUsage();break;case 14:this.enterOuterAlt(e,14),this.state=3039,this.includeUseCaseUsage();break;case 15:this.enterOuterAlt(e,15),this.state=3040,this.assertConstraintUsage();break;case 16:this.enterOuterAlt(e,16),this.state=3041,this.satisfyRequirementUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}variantUsageElement(){let e=new md(this.context,this.state);this.enterRule(e,518,r.RULE_variantUsageElement);try{switch(this.state=3065,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,291,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3044,this.variantReference();break;case 2:this.enterOuterAlt(e,2),this.state=3045,this.referenceUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3046,this.attributeUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3047,this.bindingConnectorAsUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3048,this.successionAsUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3049,this.occurrenceUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3050,this.individualUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3051,this.portionUsage();break;case 9:this.enterOuterAlt(e,9),this.state=3052,this.eventOccurrenceUsage();break;case 10:this.enterOuterAlt(e,10),this.state=3053,this.itemUsage();break;case 11:this.enterOuterAlt(e,11),this.state=3054,this.partUsage();break;case 12:this.enterOuterAlt(e,12),this.state=3055,this.viewUsage();break;case 13:this.enterOuterAlt(e,13),this.state=3056,this.renderingUsage();break;case 14:this.enterOuterAlt(e,14),this.state=3057,this.portUsage();break;case 15:this.enterOuterAlt(e,15),this.state=3058,this.connectionUsage();break;case 16:this.enterOuterAlt(e,16),this.state=3059,this.interfaceUsage();break;case 17:this.enterOuterAlt(e,17),this.state=3060,this.allocationUsage();break;case 18:this.enterOuterAlt(e,18),this.state=3061,this.message();break;case 19:this.enterOuterAlt(e,19),this.state=3062,this.flowUsage();break;case 20:this.enterOuterAlt(e,20),this.state=3063,this.successionFlowUsage();break;case 21:this.enterOuterAlt(e,21),this.state=3064,this.behaviorUsageElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subclassificationPart(){let e=new $x(this.context,this.state);this.enterRule(e,520,r.RULE_subclassificationPart);let t;try{for(this.enterOuterAlt(e,1),this.state=3067,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3068,this.ownedSubclassification(),this.state=3073,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=3069,this.match(r.COMMA),this.state=3070,this.ownedSubclassification(),this.state=3075,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}attributeDefinition(){let e=new Fx(this.context,this.state);this.enterRule(e,522,r.RULE_attributeDefinition);try{this.enterOuterAlt(e,1),this.state=3076,this.definitionPrefix(),this.state=3077,this.match(r.ATTRIBUTE),this.state=3078,this.match(r.DEF),this.state=3079,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}attributeUsage(){let e=new Mu(this.context,this.state);this.enterRule(e,524,r.RULE_attributeUsage);try{this.enterOuterAlt(e,1),this.state=3081,this.usagePrefix(),this.state=3082,this.match(r.ATTRIBUTE),this.state=3083,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}enumerationDefinition(){let e=new Hx(this.context,this.state);this.enterRule(e,526,r.RULE_enumerationDefinition);let t;try{this.enterOuterAlt(e,1);{for(this.state=3088,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3085,this.definitionExtensionKeyword(),this.state=3090,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3091,this.match(r.ENUM),this.state=3092,this.match(r.DEF),this.state=3093,this.definitionDeclaration(),this.state=3094,this.enumerationBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}enumerationBody(){let e=new zx(this.context,this.state);this.enterRule(e,528,r.RULE_enumerationBody);let t;try{switch(this.state=3106,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3096,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3097,this.match(r.LBRACE),this.state=3102,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t-30&-32)===0&&(1<<t-30&285413377)!==0||(t-93&-32)===0&&(1<<t-93&3759153669)!==0||(t-125&-32)===0&&(1<<t-125&8388681)!==0||(t-158&-32)===0&&(1<<t-158&1275461633)!==0||(t-192&-32)===0&&(1<<t-192&2353852417)!==0;){switch(this.state=3100,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COMMENT:case r.DOC:case r.LANGUAGE:case r.LOCALE:case r.METADATA:case r.REP:case r.HASH:case r.AT_SIGN:case r.REGULAR_COMMENT:this.state=3098,this.annotatingMember();break;case r.CROSSES:case r.DEFAULT:case r.DEFINED:case r.ENUM:case r.NONUNIQUE:case r.ORDERED:case r.PRIVATE:case r.PROTECTED:case r.PUBLIC:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_EQ:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.SEMI:case r.LT:case r.EQ:case r.LBRACK:case r.LBRACE:case r.IDENTIFIER:case r.STRING:this.state=3099,this.enumerationUsageMember();break;default:throw new ne(this)}this.state=3104,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}this.state=3105,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}enumerationUsageMember(){let e=new gd(this.context,this.state);this.enterRule(e,530,r.RULE_enumerationUsageMember);try{this.enterOuterAlt(e,1),this.state=3108,this.memberPrefix(),this.state=3109,this.enumeratedValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}enumeratedValue(){let e=new Bx(this.context,this.state);this.enterRule(e,532,r.RULE_enumeratedValue);let t;try{this.enterOuterAlt(e,1),this.state=3112,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===58&&(this.state=3111,this.match(r.ENUM)),this.state=3114,this.usage()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}enumerationUsage(){let e=new xd(this.context,this.state);this.enterRule(e,534,r.RULE_enumerationUsage);try{this.enterOuterAlt(e,1),this.state=3116,this.usagePrefix(),this.state=3117,this.match(r.ENUM),this.state=3118,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceDefinitionPrefix(){let e=new Mt(this.context,this.state);this.enterRule(e,536,r.RULE_occurrenceDefinitionPrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=3121,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=3120,this.basicDefinitionPrefix()),this.state=3125,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3123,this.match(r.INDIVIDUAL),this.state=3124,this.emptyMultiplicityMember()),this.state=3130,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3127,this.definitionExtensionKeyword(),this.state=3132,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}occurrenceDefinition(){let e=new jx(this.context,this.state);this.enterRule(e,538,r.RULE_occurrenceDefinition);try{this.enterOuterAlt(e,1),this.state=3133,this.occurrenceDefinitionPrefix(),this.state=3134,this.match(r.OCCURRENCE),this.state=3135,this.match(r.DEF),this.state=3136,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}individualDefinition(){let e=new qx(this.context,this.state);this.enterRule(e,540,r.RULE_individualDefinition);let t;try{this.enterOuterAlt(e,1);{for(this.state=3139,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=3138,this.basicDefinitionPrefix()),this.state=3141,this.match(r.INDIVIDUAL),this.state=3145,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3142,this.definitionExtensionKeyword(),this.state=3147,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3148,this.match(r.DEF),this.state=3149,this.definition(),this.state=3150,this.emptyMultiplicityMember()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}emptyMultiplicityMember(){let e=new bd(this.context,this.state);this.enterRule(e,542,r.RULE_emptyMultiplicityMember);try{this.enterOuterAlt(e,1),this.state=3152,this.emptyMultiplicity_()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceUsagePrefix(){let e=new Fe(this.context,this.state);this.enterRule(e,544,r.RULE_occurrenceUsagePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=3154,this.basicUsagePrefix(),this.state=3156,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3155,this.match(r.INDIVIDUAL)),this.state=3159,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===137||t===153)&&(this.state=3158,this.portionKind()),this.state=3164,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3161,this.usageExtensionKeyword(),this.state=3166,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}occurrenceUsage(){let e=new yd(this.context,this.state);this.enterRule(e,546,r.RULE_occurrenceUsage);try{this.enterOuterAlt(e,1),this.state=3167,this.occurrenceUsagePrefix(),this.state=3168,this.match(r.OCCURRENCE),this.state=3169,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}individualUsage(){let e=new vd(this.context,this.state);this.enterRule(e,548,r.RULE_individualUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=3171,this.basicUsagePrefix(),this.state=3172,this.match(r.INDIVIDUAL),this.state=3176,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3173,this.usageExtensionKeyword(),this.state=3178,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3179,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}portionUsage(){let e=new Rd(this.context,this.state);this.enterRule(e,550,r.RULE_portionUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=3181,this.basicUsagePrefix(),this.state=3183,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3182,this.match(r.INDIVIDUAL)),this.state=3185,this.portionKind(),this.state=3189,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3186,this.usageExtensionKeyword(),this.state=3191,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3192,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}portionKind(){let e=new _u(this.context,this.state);this.enterRule(e,552,r.RULE_portionKind);let t;try{this.enterOuterAlt(e,1),this.state=3194,t=this.tokenStream.LA(1),t===137||t===153?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}eventOccurrenceUsage(){let e=new Cd(this.context,this.state);this.enterRule(e,554,r.RULE_eventOccurrenceUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3196,this.occurrenceUsagePrefix(),this.state=3197,this.match(r.EVENT),this.state=3206,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=3198,this.ownedReferenceSubsetting(),this.state=3200,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3199,this.featureSpecializationPart());break;case r.OCCURRENCE:this.state=3202,this.match(r.OCCURRENCE),this.state=3204,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3203,this.usageDeclaration());break;default:throw new ne(this)}this.state=3208,this.usageCompletion()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}sourceSuccessionMember(){let e=new so(this.context,this.state);this.enterRule(e,556,r.RULE_sourceSuccessionMember);try{this.enterOuterAlt(e,1),this.state=3210,this.match(r.THEN),this.state=3211,this.sourceSuccession()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sourceSuccession(){let e=new Vx(this.context,this.state);this.enterRule(e,558,r.RULE_sourceSuccession);try{this.enterOuterAlt(e,1),this.state=3213,this.sourceEndMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sourceEndMember(){let e=new Ed(this.context,this.state);this.enterRule(e,560,r.RULE_sourceEndMember);try{this.enterOuterAlt(e,1),this.state=3215,this.sourceEnd()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sourceEnd(){let e=new Zx(this.context,this.state);this.enterRule(e,562,r.RULE_sourceEnd);try{this.enterOuterAlt(e,1),this.state=3218,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,312,this.context)===1&&(this.state=3217,this.ownedMultiplicity())}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}itemDefinition(){let e=new Gx(this.context,this.state);this.enterRule(e,564,r.RULE_itemDefinition);try{this.enterOuterAlt(e,1),this.state=3220,this.occurrenceDefinitionPrefix(),this.state=3221,this.match(r.ITEM),this.state=3222,this.match(r.DEF),this.state=3223,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}itemUsage(){let e=new Sd(this.context,this.state);this.enterRule(e,566,r.RULE_itemUsage);try{this.enterOuterAlt(e,1),this.state=3225,this.occurrenceUsagePrefix(),this.state=3226,this.match(r.ITEM),this.state=3227,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}partDefinition(){let e=new Wx(this.context,this.state);this.enterRule(e,568,r.RULE_partDefinition);try{this.enterOuterAlt(e,1),this.state=3229,this.occurrenceDefinitionPrefix(),this.state=3230,this.match(r.PART),this.state=3231,this.match(r.DEF),this.state=3232,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}partUsage(){let e=new Pd(this.context,this.state);this.enterRule(e,570,r.RULE_partUsage);try{this.enterOuterAlt(e,1),this.state=3234,this.occurrenceUsagePrefix(),this.state=3235,this.match(r.PART),this.state=3236,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}portDefinition(){let e=new Kx(this.context,this.state);this.enterRule(e,572,r.RULE_portDefinition);try{this.enterOuterAlt(e,1),this.state=3238,this.definitionPrefix(),this.state=3239,this.match(r.PORT),this.state=3240,this.match(r.DEF),this.state=3241,this.definition(),this.state=3242,this.conjugatedPortDefinitionMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}conjugatedPortDefinitionMember(){let e=new Jx(this.context,this.state);this.enterRule(e,574,r.RULE_conjugatedPortDefinitionMember);try{this.enterOuterAlt(e,1),this.state=3244,this.conjugatedPortDefinition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}conjugatedPortDefinition(){let e=new Qx(this.context,this.state);this.enterRule(e,576,r.RULE_conjugatedPortDefinition);try{this.enterOuterAlt(e,1),this.state=3246,this.portConjugation()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}portUsage(){let e=new Ld(this.context,this.state);this.enterRule(e,578,r.RULE_portUsage);try{this.enterOuterAlt(e,1),this.state=3248,this.occurrenceUsagePrefix(),this.state=3249,this.match(r.PORT),this.state=3250,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}conjugatedPortTyping(){let e=new Yx(this.context,this.state);this.enterRule(e,580,r.RULE_conjugatedPortTyping);try{this.enterOuterAlt(e,1),this.state=3252,this.match(r.TILDE),this.state=3253,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connectionDefinition(){let e=new Xx(this.context,this.state);this.enterRule(e,582,r.RULE_connectionDefinition);try{this.enterOuterAlt(e,1),this.state=3255,this.occurrenceDefinitionPrefix(),this.state=3256,this.match(r.CONNECTION),this.state=3257,this.match(r.DEF),this.state=3258,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connectionUsage(){let e=new Td(this.context,this.state);this.enterRule(e,584,r.RULE_connectionUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3260,this.occurrenceUsagePrefix(),this.state=3274,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.CONNECTION:this.state=3261,this.match(r.CONNECTION),this.state=3263,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3262,this.usageDeclaration()),this.state=3266,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3265,this.valuePart()),this.state=3270,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===36&&(this.state=3268,this.match(r.CONNECT),this.state=3269,this.connectorPart());break;case r.CONNECT:this.state=3272,this.match(r.CONNECT),this.state=3273,this.connectorPart();break;default:throw new ne(this)}this.state=3276,this.usageBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}connectorPart(){let e=new wd(this.context,this.state);this.enterRule(e,586,r.RULE_connectorPart);try{switch(this.state=3280,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.LBRACK:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=3278,this.binaryConnectorPart();break;case r.LPAREN:this.enterOuterAlt(e,2),this.state=3279,this.naryConnectorPart();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}binaryConnectorPart(){let e=new eb(this.context,this.state);this.enterRule(e,588,r.RULE_binaryConnectorPart);try{this.enterOuterAlt(e,1),this.state=3282,this.connectorEndMember(),this.state=3283,this.match(r.TO),this.state=3284,this.connectorEndMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}naryConnectorPart(){let e=new tb(this.context,this.state);this.enterRule(e,590,r.RULE_naryConnectorPart);let t;try{this.enterOuterAlt(e,1);{for(this.state=3286,this.match(r.LPAREN),this.state=3287,this.connectorEndMember(),this.state=3288,this.match(r.COMMA),this.state=3289,this.connectorEndMember(),this.state=3294,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=3290,this.match(r.COMMA),this.state=3291,this.connectorEndMember(),this.state=3296,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3297,this.match(r.RPAREN)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}bindingConnectorAsUsage(){let e=new Nu(this.context,this.state);this.enterRule(e,592,r.RULE_bindingConnectorAsUsage);let t;try{this.enterOuterAlt(e,1),this.state=3299,this.usagePrefix(),this.state=3304,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===22&&(this.state=3300,this.match(r.BINDING),this.state=3302,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3301,this.usageDeclaration())),this.state=3306,this.match(r.BIND),this.state=3307,this.connectorEndMember(),this.state=3308,this.match(r.EQ),this.state=3309,this.connectorEndMember(),this.state=3310,this.usageBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}successionAsUsage(){let e=new Iu(this.context,this.state);this.enterRule(e,594,r.RULE_successionAsUsage);let t;try{this.enterOuterAlt(e,1),this.state=3312,this.usagePrefix(),this.state=3317,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===150&&(this.state=3313,this.match(r.SUCCESSION),this.state=3315,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3314,this.usageDeclaration())),this.state=3319,this.match(r.FIRST),this.state=3320,this.connectorEndMember(),this.state=3321,this.match(r.THEN),this.state=3322,this.connectorEndMember(),this.state=3323,this.usageBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceDefinition(){let e=new rb(this.context,this.state);this.enterRule(e,596,r.RULE_interfaceDefinition);try{this.enterOuterAlt(e,1),this.state=3325,this.occurrenceDefinitionPrefix(),this.state=3326,this.match(r.INTERFACE),this.state=3327,this.match(r.DEF),this.state=3328,this.definitionDeclaration(),this.state=3329,this.interfaceBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceBody(){let e=new kd(this.context,this.state);this.enterRule(e,598,r.RULE_interfaceBody);let t;try{switch(this.state=3340,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3331,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3332,this.match(r.LBRACE),this.state=3336,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490930993)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&2993926401)!==0||(t-135&-32)===0&&(1<<t-135&3892740293)!==0||(t-169&-32)===0&&(1<<t-169&8388611)!==0||t===210||t===223;)this.state=3333,this.interfaceBodyItem(),this.state=3338,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3339,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceBodyItem(){let e=new Ad(this.context,this.state);this.enterRule(e,600,r.RULE_interfaceBodyItem);let t;try{switch(this.state=3351,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,326,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3342,this.definitionMember();break;case 2:this.enterOuterAlt(e,2),this.state=3343,this.variantUsageMember();break;case 3:this.enterOuterAlt(e,3),this.state=3344,this.interfaceNonOccurrenceUsageMember();break;case 4:this.enterOuterAlt(e,4),this.state=3346,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3345,this.sourceSuccessionMember()),this.state=3348,this.interfaceOccurrenceUsageMember();break;case 5:this.enterOuterAlt(e,5),this.state=3349,this.aliasMember();break;case 6:this.enterOuterAlt(e,6),this.state=3350,this.importRule();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceNonOccurrenceUsageMember(){let e=new ib(this.context,this.state);this.enterRule(e,602,r.RULE_interfaceNonOccurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=3353,this.memberPrefix(),this.state=3354,this.interfaceNonOccurrenceUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceNonOccurrenceUsageElement(){let e=new nb(this.context,this.state);this.enterRule(e,604,r.RULE_interfaceNonOccurrenceUsageElement);try{switch(this.state=3361,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,327,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3356,this.referenceUsage();break;case 2:this.enterOuterAlt(e,2),this.state=3357,this.attributeUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3358,this.enumerationUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3359,this.bindingConnectorAsUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3360,this.successionAsUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceOccurrenceUsageMember(){let e=new sb(this.context,this.state);this.enterRule(e,606,r.RULE_interfaceOccurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=3363,this.memberPrefix(),this.state=3364,this.interfaceOccurrenceUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceOccurrenceUsageElement(){let e=new ob(this.context,this.state);this.enterRule(e,608,r.RULE_interfaceOccurrenceUsageElement);try{switch(this.state=3369,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,328,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3366,this.defaultInterfaceEnd();break;case 2:this.enterOuterAlt(e,2),this.state=3367,this.structureUsageElement();break;case 3:this.enterOuterAlt(e,3),this.state=3368,this.behaviorUsageElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}defaultInterfaceEnd(){let e=new ab(this.context,this.state);this.enterRule(e,610,r.RULE_defaultInterfaceEnd);try{this.enterOuterAlt(e,1),this.state=3371,this.match(r.END),this.state=3372,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceUsage(){let e=new Md(this.context,this.state);this.enterRule(e,612,r.RULE_interfaceUsage);try{this.enterOuterAlt(e,1),this.state=3374,this.occurrenceUsagePrefix(),this.state=3375,this.match(r.INTERFACE),this.state=3376,this.interfaceUsageDeclaration(),this.state=3377,this.interfaceBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceUsageDeclaration(){let e=new lb(this.context,this.state);this.enterRule(e,614,r.RULE_interfaceUsageDeclaration);let t;try{switch(this.state=3390,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,332,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3380,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3379,this.usageDeclaration()),this.state=3383,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3382,this.valuePart()),this.state=3387,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===36&&(this.state=3385,this.match(r.CONNECT),this.state=3386,this.interfacePart());break;case 2:this.enterOuterAlt(e,2),this.state=3389,this.interfacePart();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfacePart(){let e=new ub(this.context,this.state);this.enterRule(e,616,r.RULE_interfacePart);try{switch(this.state=3394,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.LBRACK:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=3392,this.binaryInterfacePart();break;case r.LPAREN:this.enterOuterAlt(e,2),this.state=3393,this.naryInterfacePart();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}binaryInterfacePart(){let e=new cb(this.context,this.state);this.enterRule(e,618,r.RULE_binaryInterfacePart);try{this.enterOuterAlt(e,1),this.state=3396,this.interfaceEndMember(),this.state=3397,this.match(r.TO),this.state=3398,this.interfaceEndMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}naryInterfacePart(){let e=new db(this.context,this.state);this.enterRule(e,620,r.RULE_naryInterfacePart);let t;try{this.enterOuterAlt(e,1);{for(this.state=3400,this.match(r.LPAREN),this.state=3401,this.interfaceEndMember(),this.state=3402,this.match(r.COMMA),this.state=3403,this.interfaceEndMember(),this.state=3408,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=3404,this.match(r.COMMA),this.state=3405,this.interfaceEndMember(),this.state=3410,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3411,this.match(r.RPAREN)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceEndMember(){let e=new Ra(this.context,this.state);this.enterRule(e,622,r.RULE_interfaceEndMember);try{this.enterOuterAlt(e,1),this.state=3413,this.interfaceEnd()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceEnd(){let e=new hb(this.context,this.state);this.enterRule(e,624,r.RULE_interfaceEnd);let t;try{this.enterOuterAlt(e,1),this.state=3416,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===211&&(this.state=3415,this.ownedCrossMultiplicityMember()),this.state=3421,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,336,this.context)===1&&(this.state=3418,this.name(),this.state=3419,t=this.tokenStream.LA(1),t===128||t===175?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=3423,this.ownedReferenceSubsetting()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}allocationDefinition(){let e=new pb(this.context,this.state);this.enterRule(e,626,r.RULE_allocationDefinition);try{this.enterOuterAlt(e,1),this.state=3425,this.occurrenceDefinitionPrefix(),this.state=3426,this.match(r.ALLOCATION),this.state=3427,this.match(r.DEF),this.state=3428,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}allocationUsage(){let e=new _d(this.context,this.state);this.enterRule(e,628,r.RULE_allocationUsage);try{this.enterOuterAlt(e,1),this.state=3430,this.occurrenceUsagePrefix(),this.state=3431,this.allocationUsageDeclaration(),this.state=3432,this.usageBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}allocationUsageDeclaration(){let e=new fb(this.context,this.state);this.enterRule(e,630,r.RULE_allocationUsageDeclaration);let t;try{switch(this.state=3444,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.ALLOCATION:this.enterOuterAlt(e,1),this.state=3434,this.match(r.ALLOCATION),this.state=3436,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3435,this.usageDeclaration()),this.state=3440,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===9&&(this.state=3438,this.match(r.ALLOCATE),this.state=3439,this.connectorPart());break;case r.ALLOCATE:this.enterOuterAlt(e,2),this.state=3442,this.match(r.ALLOCATE),this.state=3443,this.connectorPart();break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}flowDefinition(){let e=new mb(this.context,this.state);this.enterRule(e,632,r.RULE_flowDefinition);try{this.enterOuterAlt(e,1),this.state=3446,this.occurrenceDefinitionPrefix(),this.state=3447,this.match(r.FLOW),this.state=3448,this.match(r.DEF),this.state=3449,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}message(){let e=new Nd(this.context,this.state);this.enterRule(e,634,r.RULE_message);try{this.enterOuterAlt(e,1),this.state=3451,this.occurrenceUsagePrefix(),this.state=3452,this.match(r.MESSAGE),this.state=3453,this.messageDeclaration(),this.state=3454,this.definitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}messageDeclaration(){let e=new gb(this.context,this.state);this.enterRule(e,636,r.RULE_messageDeclaration);let t;try{switch(this.state=3477,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,344,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3457,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3456,this.usageDeclaration()),this.state=3460,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3459,this.valuePart()),this.state=3464,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=3462,this.match(r.OF),this.state=3463,this.flowPayloadFeatureMember()),this.state=3471,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=3466,this.match(r.FROM),this.state=3467,this.messageEventMember(),this.state=3468,this.match(r.TO),this.state=3469,this.messageEventMember());break;case 2:this.enterOuterAlt(e,2),this.state=3473,this.messageEventMember(),this.state=3474,this.match(r.TO),this.state=3475,this.messageEventMember();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}messageEventMember(){let e=new Id(this.context,this.state);this.enterRule(e,638,r.RULE_messageEventMember);try{this.enterOuterAlt(e,1),this.state=3479,this.messageEvent()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}messageEvent(){let e=new xb(this.context,this.state);this.enterRule(e,640,r.RULE_messageEvent);try{this.enterOuterAlt(e,1),this.state=3481,this.ownedReferenceSubsetting()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowUsage(){let e=new Ud(this.context,this.state);this.enterRule(e,642,r.RULE_flowUsage);try{this.enterOuterAlt(e,1),this.state=3483,this.occurrenceUsagePrefix(),this.state=3484,this.match(r.FLOW),this.state=3485,this.flowDeclaration(),this.state=3486,this.definitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}successionFlowUsage(){let e=new Od(this.context,this.state);this.enterRule(e,644,r.RULE_successionFlowUsage);try{this.enterOuterAlt(e,1),this.state=3488,this.occurrenceUsagePrefix(),this.state=3489,this.match(r.SUCCESSION),this.state=3490,this.match(r.FLOW),this.state=3491,this.flowDeclaration(),this.state=3492,this.definitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowPayloadFeatureMember(){let e=new Dd(this.context,this.state);this.enterRule(e,646,r.RULE_flowPayloadFeatureMember);try{this.enterOuterAlt(e,1),this.state=3494,this.flowPayloadFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowPayloadFeature(){let e=new bb(this.context,this.state);this.enterRule(e,648,r.RULE_flowPayloadFeature);try{this.enterOuterAlt(e,1),this.state=3496,this.payloadFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowEndSubsetting(){let e=new lC(this.context,this.state);this.enterRule(e,650,r.RULE_flowEndSubsetting);try{switch(this.state=3500,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,345,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3498,this.qualifiedName();break;case 2:this.enterOuterAlt(e,2),this.state=3499,this.featureChainPrefix();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureChainPrefix(){let e=new yb(this.context,this.state);this.enterRule(e,652,r.RULE_featureChainPrefix);try{let t;this.enterOuterAlt(e,1);{this.state=3505,this.errorHandler.sync(this),t=1;do{if(t===1)this.state=3502,this.ownedFeatureChaining(),this.state=3503,this.match(r.DOT);else throw new ne(this);this.state=3507,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,346,this.context)}while(t!==2&&t!==Ce.INVALID_ALT_NUMBER);this.state=3509,this.ownedFeatureChaining(),this.state=3510,this.match(r.DOT)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionDefinition(){let e=new vb(this.context,this.state);this.enterRule(e,654,r.RULE_actionDefinition);try{this.enterOuterAlt(e,1),this.state=3512,this.occurrenceDefinitionPrefix(),this.state=3513,this.match(r.ACTION),this.state=3514,this.match(r.DEF),this.state=3515,this.definitionDeclaration(),this.state=3516,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionBody(){let e=new Bt(this.context,this.state);this.enterRule(e,656,r.RULE_actionBody);let t;try{switch(this.state=3527,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3518,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3519,this.match(r.LBRACE),this.state=3523,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3520,this.actionBodyItem(),this.state=3525,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3526,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionBodyItem(){let e=new fr(this.context,this.state);this.enterRule(e,658,r.RULE_actionBodyItem);let t;try{let i;switch(this.state=3548,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,352,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3529,this.nonBehaviorBodyItem();break;case 2:for(this.enterOuterAlt(e,2),this.state=3530,this.initialNodeMember(),this.state=3534,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,349,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=3531,this.actionTargetSuccessionMember()),this.state=3536,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,349,this.context);break;case 3:for(this.enterOuterAlt(e,3),this.state=3538,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3537,this.sourceSuccessionMember()),this.state=3540,this.actionBehaviorMember(),this.state=3544,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,351,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=3541,this.actionTargetSuccessionMember()),this.state=3546,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,351,this.context);break;case 4:this.enterOuterAlt(e,4),this.state=3547,this.guardedSuccessionMember();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nonBehaviorBodyItem(){let e=new $d(this.context,this.state);this.enterRule(e,660,r.RULE_nonBehaviorBodyItem);let t;try{switch(this.state=3559,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,354,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3550,this.importRule();break;case 2:this.enterOuterAlt(e,2),this.state=3551,this.aliasMember();break;case 3:this.enterOuterAlt(e,3),this.state=3552,this.definitionMember();break;case 4:this.enterOuterAlt(e,4),this.state=3553,this.variantUsageMember();break;case 5:this.enterOuterAlt(e,5),this.state=3554,this.nonOccurrenceUsageMember();break;case 6:this.enterOuterAlt(e,6),this.state=3556,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3555,this.sourceSuccessionMember()),this.state=3558,this.structureUsageMember();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionBehaviorMember(){let e=new Rb(this.context,this.state);this.enterRule(e,662,r.RULE_actionBehaviorMember);try{switch(this.state=3563,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,355,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3561,this.behaviorUsageMember();break;case 2:this.enterOuterAlt(e,2),this.state=3562,this.actionNodeMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}initialNodeMember(){let e=new Cb(this.context,this.state);this.enterRule(e,664,r.RULE_initialNodeMember);try{this.enterOuterAlt(e,1),this.state=3565,this.memberPrefix(),this.state=3566,this.match(r.FIRST),this.state=3567,this.qualifiedName(),this.state=3568,this.relationshipBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionNodeMember(){let e=new Eb(this.context,this.state);this.enterRule(e,666,r.RULE_actionNodeMember);try{this.enterOuterAlt(e,1),this.state=3570,this.memberPrefix(),this.state=3571,this.actionNode()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionTargetSuccessionMember(){let e=new Fd(this.context,this.state);this.enterRule(e,668,r.RULE_actionTargetSuccessionMember);try{this.enterOuterAlt(e,1),this.state=3573,this.memberPrefix(),this.state=3574,this.actionTargetSuccession()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardedSuccessionMember(){let e=new Sb(this.context,this.state);this.enterRule(e,670,r.RULE_guardedSuccessionMember);try{this.enterOuterAlt(e,1),this.state=3576,this.memberPrefix(),this.state=3577,this.guardedSuccession()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionUsage(){let e=new Pb(this.context,this.state);this.enterRule(e,672,r.RULE_actionUsage);try{this.enterOuterAlt(e,1),this.state=3579,this.occurrenceUsagePrefix(),this.state=3580,this.match(r.ACTION),this.state=3581,this.actionUsageDeclaration(),this.state=3582,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionUsageDeclaration(){let e=new Ca(this.context,this.state);this.enterRule(e,674,r.RULE_actionUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3585,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3584,this.usageDeclaration()),this.state=3588,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3587,this.valuePart())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}performActionUsage(){let e=new Lb(this.context,this.state);this.enterRule(e,676,r.RULE_performActionUsage);try{this.enterOuterAlt(e,1),this.state=3590,this.occurrenceUsagePrefix(),this.state=3591,this.match(r.PERFORM),this.state=3592,this.performActionUsageDeclaration(),this.state=3593,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}performActionUsageDeclaration(){let e=new Uu(this.context,this.state);this.enterRule(e,678,r.RULE_performActionUsageDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3603,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=3595,this.ownedReferenceSubsetting(),this.state=3597,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3596,this.featureSpecializationPart());break;case r.ACTION:this.state=3599,this.match(r.ACTION),this.state=3601,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3600,this.usageDeclaration());break;default:throw new ne(this)}this.state=3606,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3605,this.valuePart())}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionNode(){let e=new Tb(this.context,this.state);this.enterRule(e,680,r.RULE_actionNode);try{switch(this.state=3616,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,362,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3608,this.controlNode();break;case 2:this.enterOuterAlt(e,2),this.state=3609,this.sendNode();break;case 3:this.enterOuterAlt(e,3),this.state=3610,this.acceptNode();break;case 4:this.enterOuterAlt(e,4),this.state=3611,this.assignmentNode();break;case 5:this.enterOuterAlt(e,5),this.state=3612,this.terminateNode();break;case 6:this.enterOuterAlt(e,6),this.state=3613,this.ifNode();break;case 7:this.enterOuterAlt(e,7),this.state=3614,this.whileLoopNode();break;case 8:this.enterOuterAlt(e,8),this.state=3615,this.forLoopNode();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionNodeUsageDeclaration(){let e=new as(this.context,this.state);this.enterRule(e,682,r.RULE_actionNodeUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3618,this.match(r.ACTION),this.state=3620,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3619,this.usageDeclaration())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionNodePrefix(){let e=new Ou(this.context,this.state);this.enterRule(e,684,r.RULE_actionNodePrefix);let t;try{this.enterOuterAlt(e,1),this.state=3622,this.occurrenceUsagePrefix(),this.state=3624,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3623,this.actionNodeUsageDeclaration())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}controlNode(){let e=new wb(this.context,this.state);this.enterRule(e,686,r.RULE_controlNode);try{switch(this.state=3630,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,365,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3626,this.mergeNode();break;case 2:this.enterOuterAlt(e,2),this.state=3627,this.decisionNode();break;case 3:this.enterOuterAlt(e,3),this.state=3628,this.joinNode();break;case 4:this.enterOuterAlt(e,4),this.state=3629,this.forkNode();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}controlNodePrefix(){let e=new Ea(this.context,this.state);this.enterRule(e,688,r.RULE_controlNodePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=3632,this.refPrefix(),this.state=3634,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3633,this.match(r.INDIVIDUAL)),this.state=3637,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===137||t===153)&&(this.state=3636,this.portionKind()),this.state=3642,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3639,this.usageExtensionKeyword(),this.state=3644,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}mergeNode(){let e=new kb(this.context,this.state);this.enterRule(e,690,r.RULE_mergeNode);let t;try{this.enterOuterAlt(e,1),this.state=3645,this.controlNodePrefix(),this.state=3646,this.match(r.MERGE),this.state=3648,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3647,this.usageDeclaration()),this.state=3650,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}decisionNode(){let e=new Ab(this.context,this.state);this.enterRule(e,692,r.RULE_decisionNode);let t;try{this.enterOuterAlt(e,1),this.state=3652,this.controlNodePrefix(),this.state=3653,this.match(r.DECIDE),this.state=3655,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3654,this.usageDeclaration()),this.state=3657,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}joinNode(){let e=new Mb(this.context,this.state);this.enterRule(e,694,r.RULE_joinNode);let t;try{this.enterOuterAlt(e,1),this.state=3659,this.controlNodePrefix(),this.state=3660,this.match(r.JOIN),this.state=3662,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3661,this.usageDeclaration()),this.state=3664,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}forkNode(){let e=new _b(this.context,this.state);this.enterRule(e,696,r.RULE_forkNode);let t;try{this.enterOuterAlt(e,1),this.state=3666,this.controlNodePrefix(),this.state=3667,this.match(r.FORK),this.state=3669,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3668,this.usageDeclaration()),this.state=3671,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}acceptNode(){let e=new Nb(this.context,this.state);this.enterRule(e,698,r.RULE_acceptNode);try{this.enterOuterAlt(e,1),this.state=3673,this.occurrenceUsagePrefix(),this.state=3674,this.acceptNodeDeclaration(),this.state=3675,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}acceptNodeDeclaration(){let e=new Du(this.context,this.state);this.enterRule(e,700,r.RULE_acceptNodeDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3678,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3677,this.actionNodeUsageDeclaration()),this.state=3680,this.match(r.ACCEPT),this.state=3681,this.acceptParameterPart()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}acceptParameterPart(){let e=new Hd(this.context,this.state);this.enterRule(e,702,r.RULE_acceptParameterPart);let t;try{this.enterOuterAlt(e,1),this.state=3683,this.payloadParameterMember(),this.state=3686,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===168&&(this.state=3684,this.match(r.VIA),this.state=3685,this.nodeParameterMember())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}payloadParameterMember(){let e=new Ib(this.context,this.state);this.enterRule(e,704,r.RULE_payloadParameterMember);try{this.enterOuterAlt(e,1),this.state=3688,this.payloadParameter()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}payloadParameter(){let e=new Ub(this.context,this.state);this.enterRule(e,706,r.RULE_payloadParameter);let t;try{switch(this.state=3698,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,377,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3690,this.payloadFeature();break;case 2:this.enterOuterAlt(e,2),this.state=3692,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=3691,this.identification()),this.state=3695,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3694,this.payloadFeatureSpecializationPart()),this.state=3697,this.triggerValuePart();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}triggerValuePart(){let e=new Ob(this.context,this.state);this.enterRule(e,708,r.RULE_triggerValuePart);try{this.enterOuterAlt(e,1),this.state=3700,this.triggerFeatureValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}triggerFeatureValue(){let e=new Db(this.context,this.state);this.enterRule(e,710,r.RULE_triggerFeatureValue);try{this.enterOuterAlt(e,1),this.state=3702,this.triggerExpression()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}triggerExpression(){let e=new $b(this.context,this.state);this.enterRule(e,712,r.RULE_triggerExpression);let t;try{switch(this.state=3708,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.AFTER:case r.AT:this.enterOuterAlt(e,1),this.state=3704,t=this.tokenStream.LA(1),t===6||t===18?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3705,this.argumentMember();break;case r.WHEN:this.enterOuterAlt(e,2),this.state=3706,this.match(r.WHEN),this.state=3707,this.argumentExpressionMember();break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}sendNode(){let e=new Fb(this.context,this.state);this.enterRule(e,714,r.RULE_sendNode);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3710,this.occurrenceUsagePrefix(),this.state=3713,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.ACTION:this.state=3711,this.actionNodeUsageDeclaration();break;case r.CROSSES:case r.DEFAULT:case r.DEFINED:case r.NONUNIQUE:case r.ORDERED:case r.REDEFINES:case r.REFERENCES:case r.SEND:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_EQ:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.LT:case r.EQ:case r.LBRACK:case r.IDENTIFIER:case r.STRING:this.state=3712,this.actionUsageDeclaration();break;default:throw new ne(this)}switch(this.state=3715,this.match(r.SEND),this.state=3723,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.ALL:case r.FALSE:case r.IF:case r.NEW:case r.NOT:case r.NULL:case r.TRUE:case r.AT_AT:case r.DOLLAR:case r.LPAREN:case r.STAR:case r.PLUS:case r.MINUS:case r.AT_SIGN:case r.LBRACE:case r.TILDE:case r.IDENTIFIER:case r.STRING:case r.DOUBLE_STRING:case r.INTEGER:case r.REAL:this.state=3716,this.nodeParameterMember(),this.state=3718,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===154||t===168)&&(this.state=3717,this.senderReceiverPart());break;case r.TO:case r.VIA:this.state=3720,this.emptyParameterMember(),this.state=3721,this.senderReceiverPart();break;default:throw new ne(this)}this.state=3725,this.actionBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}sendNodeDeclaration(){let e=new zd(this.context,this.state);this.enterRule(e,716,r.RULE_sendNodeDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3728,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3727,this.actionNodeUsageDeclaration()),this.state=3730,this.match(r.SEND),this.state=3731,this.nodeParameterMember(),this.state=3733,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===154||t===168)&&(this.state=3732,this.senderReceiverPart())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}senderReceiverPart(){let e=new Bd(this.context,this.state);this.enterRule(e,718,r.RULE_senderReceiverPart);let t;try{switch(this.state=3745,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.VIA:this.enterOuterAlt(e,1),this.state=3735,this.match(r.VIA),this.state=3736,this.nodeParameterMember(),this.state=3739,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===154&&(this.state=3737,this.match(r.TO),this.state=3738,this.nodeParameterMember());break;case r.TO:this.enterOuterAlt(e,2),this.state=3741,this.emptyParameterMember(),this.state=3742,this.match(r.TO),this.state=3743,this.nodeParameterMember();break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nodeParameterMember(){let e=new an(this.context,this.state);this.enterRule(e,720,r.RULE_nodeParameterMember);try{this.enterOuterAlt(e,1),this.state=3747,this.nodeParameter()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nodeParameter(){let e=new Hb(this.context,this.state);this.enterRule(e,722,r.RULE_nodeParameter);try{this.enterOuterAlt(e,1),this.state=3749,this.featureBinding()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureBinding(){let e=new zb(this.context,this.state);this.enterRule(e,724,r.RULE_featureBinding);try{this.enterOuterAlt(e,1),this.state=3751,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyParameterMember(){let e=new kn(this.context,this.state);this.enterRule(e,726,r.RULE_emptyParameterMember);try{this.enterOuterAlt(e,1),this.state=3753,this.emptyUsage_()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentNode(){let e=new Bb(this.context,this.state);this.enterRule(e,728,r.RULE_assignmentNode);try{this.enterOuterAlt(e,1),this.state=3755,this.occurrenceUsagePrefix(),this.state=3756,this.assignmentNodeDeclaration(),this.state=3757,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentNodeDeclaration(){let e=new $u(this.context,this.state);this.enterRule(e,730,r.RULE_assignmentNodeDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3760,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3759,this.actionNodeUsageDeclaration()),this.state=3762,this.match(r.ASSIGN),this.state=3763,this.assignmentTargetMember(),this.state=3764,this.featureChainMember(),this.state=3765,this.match(r.COLON_EQ),this.state=3766,this.nodeParameterMember()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}assignmentTargetMember(){let e=new jb(this.context,this.state);this.enterRule(e,732,r.RULE_assignmentTargetMember);try{this.enterOuterAlt(e,1),this.state=3768,this.assignmentTargetParameter()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentTargetParameter(){let e=new qb(this.context,this.state);this.enterRule(e,734,r.RULE_assignmentTargetParameter);try{this.enterOuterAlt(e,1),this.state=3773,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,387,this.context)===1&&(this.state=3770,this.assignmentTargetBinding(),this.state=3771,this.match(r.DOT))}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentTargetBinding(){let e=new Vb(this.context,this.state);this.enterRule(e,736,r.RULE_assignmentTargetBinding);try{this.enterOuterAlt(e,1),this.state=3775,this.nonFeatureChainPrimaryExpression()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}terminateNode(){let e=new Zb(this.context,this.state);this.enterRule(e,738,r.RULE_terminateNode);let t;try{this.enterOuterAlt(e,1),this.state=3777,this.occurrenceUsagePrefix(),this.state=3779,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3778,this.actionNodeUsageDeclaration()),this.state=3781,this.match(r.TERMINATE),this.state=3783,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,389,this.context)===1&&(this.state=3782,this.nodeParameterMember()),this.state=3785,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ifNode(){let e=new jd(this.context,this.state);this.enterRule(e,740,r.RULE_ifNode);try{switch(this.enterOuterAlt(e,1),this.state=3787,this.actionNodePrefix(),this.state=3788,this.match(r.IF),this.state=3789,this.expressionParameterMember(),this.state=3790,this.actionBodyParameterMember(),this.state=3796,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,391,this.context)){case 1:switch(this.state=3791,this.match(r.ELSE),this.state=3794,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,390,this.context)){case 1:this.state=3792,this.actionBodyParameterMember();break;case 2:this.state=3793,this.ifNodeParameterMember();break}break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expressionParameterMember(){let e=new Fu(this.context,this.state);this.enterRule(e,742,r.RULE_expressionParameterMember);try{this.enterOuterAlt(e,1),this.state=3798,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionBodyParameterMember(){let e=new Sa(this.context,this.state);this.enterRule(e,744,r.RULE_actionBodyParameterMember);try{this.enterOuterAlt(e,1),this.state=3800,this.actionBodyParameter()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionBodyParameter(){let e=new Gb(this.context,this.state);this.enterRule(e,746,r.RULE_actionBodyParameter);let t;try{this.enterOuterAlt(e,1);{for(this.state=3806,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3802,this.match(r.ACTION),this.state=3804,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3803,this.usageDeclaration())),this.state=3808,this.match(r.LBRACE),this.state=3812,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3809,this.actionBodyItem(),this.state=3814,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3815,this.match(r.RBRACE)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ifNodeParameterMember(){let e=new Wb(this.context,this.state);this.enterRule(e,748,r.RULE_ifNodeParameterMember);try{this.enterOuterAlt(e,1),this.state=3817,this.ifNode()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}whileLoopNode(){let e=new Kb(this.context,this.state);this.enterRule(e,750,r.RULE_whileLoopNode);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3819,this.actionNodePrefix(),this.state=3824,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.WHILE:this.state=3820,this.match(r.WHILE),this.state=3821,this.expressionParameterMember();break;case r.LOOP:this.state=3822,this.match(r.LOOP),this.state=3823,this.emptyParameterMember();break;default:throw new ne(this)}this.state=3826,this.actionBodyParameterMember(),this.state=3831,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===161&&(this.state=3827,this.match(r.UNTIL),this.state=3828,this.expressionParameterMember(),this.state=3829,this.match(r.SEMI))}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}forLoopNode(){let e=new Jb(this.context,this.state);this.enterRule(e,752,r.RULE_forLoopNode);try{this.enterOuterAlt(e,1),this.state=3833,this.actionNodePrefix(),this.state=3834,this.match(r.FOR),this.state=3835,this.forVariableDeclarationMember(),this.state=3836,this.match(r.IN),this.state=3837,this.nodeParameterMember(),this.state=3838,this.actionBodyParameterMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}forVariableDeclarationMember(){let e=new Qb(this.context,this.state);this.enterRule(e,754,r.RULE_forVariableDeclarationMember);let t;try{this.enterOuterAlt(e,1),this.state=3841,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3840,this.usageDeclaration())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}forVariableDeclaration(){let e=new uC(this.context,this.state);this.enterRule(e,756,r.RULE_forVariableDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3844,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3843,this.usageDeclaration())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionTargetSuccession(){let e=new Yb(this.context,this.state);this.enterRule(e,758,r.RULE_actionTargetSuccession);try{this.enterOuterAlt(e,1);{switch(this.state=3849,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.THEN:case r.LBRACK:this.state=3846,this.targetSuccession();break;case r.IF:this.state=3847,this.guardedTargetSuccession();break;case r.ELSE:this.state=3848,this.defaultTargetSuccession();break;default:throw new ne(this)}this.state=3851,this.usageBody()}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}targetSuccession(){let e=new Xb(this.context,this.state);this.enterRule(e,760,r.RULE_targetSuccession);try{this.enterOuterAlt(e,1),this.state=3853,this.sourceEndMember(),this.state=3854,this.match(r.THEN),this.state=3855,this.connectorEndMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardedTargetSuccession(){let e=new qd(this.context,this.state);this.enterRule(e,762,r.RULE_guardedTargetSuccession);try{this.enterOuterAlt(e,1),this.state=3857,this.guardExpressionMember(),this.state=3858,this.match(r.THEN),this.state=3859,this.transitionSuccessionMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}defaultTargetSuccession(){let e=new e4(this.context,this.state);this.enterRule(e,764,r.RULE_defaultTargetSuccession);try{this.enterOuterAlt(e,1),this.state=3861,this.match(r.ELSE),this.state=3862,this.transitionSuccessionMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardedSuccession(){let e=new t4(this.context,this.state);this.enterRule(e,766,r.RULE_guardedSuccession);let t;try{this.enterOuterAlt(e,1),this.state=3868,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===150&&(this.state=3864,this.match(r.SUCCESSION),this.state=3866,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3865,this.usageDeclaration())),this.state=3870,this.match(r.FIRST),this.state=3871,this.featureChainMember(),this.state=3872,this.guardExpressionMember(),this.state=3873,this.match(r.THEN),this.state=3874,this.transitionSuccessionMember(),this.state=3875,this.usageBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}stateDefinition(){let e=new r4(this.context,this.state);this.enterRule(e,768,r.RULE_stateDefinition);try{this.enterOuterAlt(e,1),this.state=3877,this.occurrenceDefinitionPrefix(),this.state=3878,this.match(r.STATE),this.state=3879,this.match(r.DEF),this.state=3880,this.definitionDeclaration(),this.state=3881,this.stateDefBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateDefBody(){let e=new i4(this.context,this.state);this.enterRule(e,770,r.RULE_stateDefBody);let t;try{switch(this.state=3895,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3883,this.match(r.SEMI);break;case r.PARALLEL:case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3885,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===116&&(this.state=3884,this.match(r.PARALLEL)),this.state=3887,this.match(r.LBRACE),this.state=3891,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&1063503665)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3902185669)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3888,this.stateBodyItem(),this.state=3893,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3894,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}stateBodyItem(){let e=new Pa(this.context,this.state);this.enterRule(e,772,r.RULE_stateBodyItem);let t;try{let i;switch(this.state=3918,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,408,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3897,this.nonBehaviorBodyItem();break;case 2:for(this.enterOuterAlt(e,2),this.state=3899,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3898,this.sourceSuccessionMember()),this.state=3901,this.behaviorUsageMember(),this.state=3905,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,406,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=3902,this.targetTransitionUsageMember()),this.state=3907,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,406,this.context);break;case 3:this.enterOuterAlt(e,3),this.state=3908,this.transitionUsageMember();break;case 4:for(this.enterOuterAlt(e,4),this.state=3909,this.entryActionMember(),this.state=3913,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,407,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=3910,this.entryTransitionMember()),this.state=3915,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,407,this.context);break;case 5:this.enterOuterAlt(e,5),this.state=3916,this.doActionMember();break;case 6:this.enterOuterAlt(e,6),this.state=3917,this.exitActionMember();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}entryActionMember(){let e=new n4(this.context,this.state);this.enterRule(e,774,r.RULE_entryActionMember);try{this.enterOuterAlt(e,1),this.state=3920,this.memberPrefix(),this.state=3921,this.match(r.ENTRY),this.state=3922,this.stateActionUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}doActionMember(){let e=new s4(this.context,this.state);this.enterRule(e,776,r.RULE_doActionMember);try{this.enterOuterAlt(e,1),this.state=3924,this.memberPrefix(),this.state=3925,this.match(r.DO),this.state=3926,this.stateActionUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}exitActionMember(){let e=new o4(this.context,this.state);this.enterRule(e,778,r.RULE_exitActionMember);try{this.enterOuterAlt(e,1),this.state=3928,this.memberPrefix(),this.state=3929,this.match(r.EXIT),this.state=3930,this.stateActionUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}entryTransitionMember(){let e=new Vd(this.context,this.state);this.enterRule(e,780,r.RULE_entryTransitionMember);try{this.enterOuterAlt(e,1);{switch(this.state=3932,this.memberPrefix(),this.state=3936,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.IF:this.state=3933,this.guardedTargetSuccession();break;case r.THEN:this.state=3934,this.match(r.THEN),this.state=3935,this.transitionSuccessionMember();break;default:throw new ne(this)}this.state=3938,this.match(r.SEMI)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateActionUsage(){let e=new Hu(this.context,this.state);this.enterRule(e,782,r.RULE_stateActionUsage);try{switch(this.state=3947,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,410,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3940,this.emptyActionUsage_(),this.state=3941,this.match(r.SEMI);break;case 2:this.enterOuterAlt(e,2),this.state=3943,this.statePerformActionUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3944,this.stateAcceptActionUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3945,this.stateSendActionUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3946,this.stateAssignmentActionUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}statePerformActionUsage(){let e=new a4(this.context,this.state);this.enterRule(e,784,r.RULE_statePerformActionUsage);try{this.enterOuterAlt(e,1),this.state=3949,this.performActionUsageDeclaration(),this.state=3950,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateAcceptActionUsage(){let e=new l4(this.context,this.state);this.enterRule(e,786,r.RULE_stateAcceptActionUsage);try{this.enterOuterAlt(e,1),this.state=3952,this.acceptNodeDeclaration(),this.state=3953,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateSendActionUsage(){let e=new u4(this.context,this.state);this.enterRule(e,788,r.RULE_stateSendActionUsage);try{this.enterOuterAlt(e,1),this.state=3955,this.sendNodeDeclaration(),this.state=3956,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateAssignmentActionUsage(){let e=new c4(this.context,this.state);this.enterRule(e,790,r.RULE_stateAssignmentActionUsage);try{this.enterOuterAlt(e,1),this.state=3958,this.assignmentNodeDeclaration(),this.state=3959,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}transitionUsageMember(){let e=new d4(this.context,this.state);this.enterRule(e,792,r.RULE_transitionUsageMember);try{this.enterOuterAlt(e,1),this.state=3961,this.memberPrefix(),this.state=3962,this.transitionUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}targetTransitionUsageMember(){let e=new Zd(this.context,this.state);this.enterRule(e,794,r.RULE_targetTransitionUsageMember);try{this.enterOuterAlt(e,1),this.state=3964,this.memberPrefix(),this.state=3965,this.targetTransitionUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateUsage(){let e=new h4(this.context,this.state);this.enterRule(e,796,r.RULE_stateUsage);try{this.enterOuterAlt(e,1),this.state=3967,this.occurrenceUsagePrefix(),this.state=3968,this.match(r.STATE),this.state=3969,this.actionUsageDeclaration(),this.state=3970,this.stateUsageBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateUsageBody(){let e=new Gd(this.context,this.state);this.enterRule(e,798,r.RULE_stateUsageBody);let t;try{switch(this.state=3984,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3972,this.match(r.SEMI);break;case r.PARALLEL:case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3974,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===116&&(this.state=3973,this.match(r.PARALLEL)),this.state=3976,this.match(r.LBRACE),this.state=3980,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&1063503665)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3902185669)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3977,this.stateBodyItem(),this.state=3982,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3983,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}exhibitStateUsage(){let e=new p4(this.context,this.state);this.enterRule(e,800,r.RULE_exhibitStateUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3986,this.occurrenceUsagePrefix(),this.state=3987,this.match(r.EXHIBIT),this.state=3996,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=3988,this.ownedReferenceSubsetting(),this.state=3990,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3989,this.featureSpecializationPart());break;case r.STATE:this.state=3992,this.match(r.STATE),this.state=3994,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3993,this.usageDeclaration());break;default:throw new ne(this)}this.state=3999,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3998,this.valuePart()),this.state=4001,this.stateUsageBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionUsage(){let e=new f4(this.context,this.state);this.enterRule(e,802,r.RULE_transitionUsage);let t;try{this.enterOuterAlt(e,1),this.state=4003,this.match(r.TRANSITION),this.state=4008,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,419,this.context)===1&&(this.state=4005,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4004,this.usageDeclaration()),this.state=4007,this.match(r.FIRST)),this.state=4010,this.featureChainMember(),this.state=4011,this.emptyParameterMember(),this.state=4015,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===3&&(this.state=4012,this.emptyParameterMember(),this.state=4013,this.triggerActionMember()),this.state=4018,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===77&&(this.state=4017,this.guardExpressionMember()),this.state=4021,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4020,this.effectBehaviorMember()),this.state=4023,this.match(r.THEN),this.state=4024,this.transitionSuccessionMember(),this.state=4025,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}targetTransitionUsage(){let e=new m4(this.context,this.state);this.enterRule(e,804,r.RULE_targetTransitionUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4027,this.emptyParameterMember(),this.state=4052,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.TRANSITION:this.state=4028,this.match(r.TRANSITION),this.state=4032,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===3&&(this.state=4029,this.emptyParameterMember(),this.state=4030,this.triggerActionMember()),this.state=4035,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===77&&(this.state=4034,this.guardExpressionMember()),this.state=4038,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4037,this.effectBehaviorMember());break;case r.ACCEPT:this.state=4040,this.emptyParameterMember(),this.state=4041,this.triggerActionMember(),this.state=4043,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===77&&(this.state=4042,this.guardExpressionMember()),this.state=4046,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4045,this.effectBehaviorMember());break;case r.IF:this.state=4048,this.guardExpressionMember(),this.state=4050,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4049,this.effectBehaviorMember());break;case r.THEN:break;default:break}this.state=4054,this.match(r.THEN),this.state=4055,this.transitionSuccessionMember(),this.state=4056,this.actionBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}triggerActionMember(){let e=new Wd(this.context,this.state);this.enterRule(e,806,r.RULE_triggerActionMember);try{this.enterOuterAlt(e,1),this.state=4058,this.match(r.ACCEPT),this.state=4059,this.triggerAction()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}triggerAction(){let e=new g4(this.context,this.state);this.enterRule(e,808,r.RULE_triggerAction);try{this.enterOuterAlt(e,1),this.state=4061,this.acceptParameterPart()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardExpressionMember(){let e=new La(this.context,this.state);this.enterRule(e,810,r.RULE_guardExpressionMember);try{this.enterOuterAlt(e,1),this.state=4063,this.match(r.IF),this.state=4064,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}effectBehaviorMember(){let e=new Kd(this.context,this.state);this.enterRule(e,812,r.RULE_effectBehaviorMember);try{this.enterOuterAlt(e,1),this.state=4066,this.match(r.DO),this.state=4067,this.effectBehaviorUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}effectBehaviorUsage(){let e=new x4(this.context,this.state);this.enterRule(e,814,r.RULE_effectBehaviorUsage);try{switch(this.state=4074,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,430,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4069,this.emptyActionUsage_();break;case 2:this.enterOuterAlt(e,2),this.state=4070,this.transitionPerformActionUsage();break;case 3:this.enterOuterAlt(e,3),this.state=4071,this.transitionAcceptActionUsage();break;case 4:this.enterOuterAlt(e,4),this.state=4072,this.transitionSendActionUsage();break;case 5:this.enterOuterAlt(e,5),this.state=4073,this.transitionAssignmentActionUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}transitionPerformActionUsage(){let e=new b4(this.context,this.state);this.enterRule(e,816,r.RULE_transitionPerformActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4076,this.performActionUsageDeclaration(),this.state=4085,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4077,this.match(r.LBRACE),this.state=4081,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4078,this.actionBodyItem(),this.state=4083,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4084,this.match(r.RBRACE)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionAcceptActionUsage(){let e=new y4(this.context,this.state);this.enterRule(e,818,r.RULE_transitionAcceptActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4087,this.acceptNodeDeclaration(),this.state=4096,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4088,this.match(r.LBRACE),this.state=4092,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4089,this.actionBodyItem(),this.state=4094,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4095,this.match(r.RBRACE)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionSendActionUsage(){let e=new v4(this.context,this.state);this.enterRule(e,820,r.RULE_transitionSendActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4098,this.sendNodeDeclaration(),this.state=4107,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4099,this.match(r.LBRACE),this.state=4103,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4100,this.actionBodyItem(),this.state=4105,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4106,this.match(r.RBRACE)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionAssignmentActionUsage(){let e=new R4(this.context,this.state);this.enterRule(e,822,r.RULE_transitionAssignmentActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4109,this.assignmentNodeDeclaration(),this.state=4118,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4110,this.match(r.LBRACE),this.state=4114,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4111,this.actionBodyItem(),this.state=4116,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4117,this.match(r.RBRACE)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionSuccessionMember(){let e=new ls(this.context,this.state);this.enterRule(e,824,r.RULE_transitionSuccessionMember);try{this.enterOuterAlt(e,1),this.state=4120,this.transitionSuccession()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}transitionSuccession(){let e=new C4(this.context,this.state);this.enterRule(e,826,r.RULE_transitionSuccession);try{this.enterOuterAlt(e,1),this.state=4122,this.emptyEndMember(),this.state=4123,this.connectorEndMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyEndMember(){let e=new E4(this.context,this.state);this.enterRule(e,828,r.RULE_emptyEndMember);try{this.enterOuterAlt(e,1),this.state=4125,this.emptyFeature_()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationDefinition(){let e=new S4(this.context,this.state);this.enterRule(e,830,r.RULE_calculationDefinition);try{this.enterOuterAlt(e,1),this.state=4127,this.occurrenceDefinitionPrefix(),this.state=4128,this.match(r.CALC),this.state=4129,this.match(r.DEF),this.state=4130,this.definitionDeclaration(),this.state=4131,this.calculationBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationUsage(){let e=new P4(this.context,this.state);this.enterRule(e,832,r.RULE_calculationUsage);try{this.enterOuterAlt(e,1),this.state=4133,this.occurrenceUsagePrefix(),this.state=4134,this.match(r.CALC),this.state=4135,this.actionUsageDeclaration(),this.state=4136,this.calculationBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationBody(){let e=new An(this.context,this.state);this.enterRule(e,834,r.RULE_calculationBody);try{switch(this.state=4143,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4138,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2),this.state=4139,this.match(r.LBRACE),this.state=4140,this.calculationBodyPart(),this.state=4141,this.match(r.RBRACE);break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationBodyPart(){let e=new L4(this.context,this.state);this.enterRule(e,836,r.RULE_calculationBodyPart);let t;try{let i;this.enterOuterAlt(e,1);{for(this.state=4148,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,440,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=4145,this.calculationBodyItem()),this.state=4150,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,440,this.context);this.state=4152,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&917517)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=4151,this.resultExpressionMember())}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}calculationBodyItem(){let e=new Jd(this.context,this.state);this.enterRule(e,838,r.RULE_calculationBodyItem);try{switch(this.state=4156,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,442,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4154,this.actionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4155,this.returnParameterMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}returnParameterMember(){let e=new Qd(this.context,this.state);this.enterRule(e,840,r.RULE_returnParameterMember);try{this.enterOuterAlt(e,1),this.state=4158,this.memberPrefix(),this.state=4159,this.match(r.RETURN),this.state=4160,this.usageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constraintDefinition(){let e=new T4(this.context,this.state);this.enterRule(e,842,r.RULE_constraintDefinition);try{this.enterOuterAlt(e,1),this.state=4162,this.occurrenceDefinitionPrefix(),this.state=4163,this.match(r.CONSTRAINT),this.state=4164,this.match(r.DEF),this.state=4165,this.definitionDeclaration(),this.state=4166,this.calculationBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constraintUsage(){let e=new w4(this.context,this.state);this.enterRule(e,844,r.RULE_constraintUsage);try{this.enterOuterAlt(e,1),this.state=4168,this.occurrenceUsagePrefix(),this.state=4169,this.match(r.CONSTRAINT),this.state=4170,this.constraintUsageDeclaration(),this.state=4171,this.calculationBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assertConstraintUsage(){let e=new k4(this.context,this.state);this.enterRule(e,846,r.RULE_assertConstraintUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4173,this.occurrenceUsagePrefix(),this.state=4174,this.match(r.ASSERT),this.state=4176,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===107&&(this.state=4175,this.match(r.NOT)),this.state=4184,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=4178,this.ownedReferenceSubsetting(),this.state=4180,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4179,this.featureSpecializationPart());break;case r.CONSTRAINT:this.state=4182,this.match(r.CONSTRAINT),this.state=4183,this.constraintUsageDeclaration();break;default:throw new ne(this)}this.state=4186,this.calculationBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}constraintUsageDeclaration(){let e=new Hr(this.context,this.state);this.enterRule(e,848,r.RULE_constraintUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=4189,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4188,this.usageDeclaration()),this.state=4192,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4191,this.valuePart())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementDefinition(){let e=new A4(this.context,this.state);this.enterRule(e,850,r.RULE_requirementDefinition);try{this.enterOuterAlt(e,1),this.state=4194,this.occurrenceDefinitionPrefix(),this.state=4195,this.match(r.REQUIREMENT),this.state=4196,this.match(r.DEF),this.state=4197,this.definitionDeclaration(),this.state=4198,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementBody(){let e=new di(this.context,this.state);this.enterRule(e,852,r.RULE_requirementBody);let t;try{switch(this.state=4209,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4200,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4201,this.match(r.LBRACE),this.state=4205,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181372084)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-69&-32)===0&&(1<<t-69&1195473939)!==0||(t-102&-32)===0&&(1<<t-102&4143167761)!==0||(t-135&-32)===0&&(1<<t-135&3901139173)!==0||(t-167&-32)===0&&(1<<t-167&36045581)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4202,this.requirementBodyItem(),this.state=4207,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4208,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementBodyItem(){let e=new Yd(this.context,this.state);this.enterRule(e,854,r.RULE_requirementBodyItem);try{switch(this.state=4218,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,450,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4211,this.definitionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4212,this.subjectMember();break;case 3:this.enterOuterAlt(e,3),this.state=4213,this.requirementConstraintMember();break;case 4:this.enterOuterAlt(e,4),this.state=4214,this.framedConcernMember();break;case 5:this.enterOuterAlt(e,5),this.state=4215,this.requirementVerificationMember();break;case 6:this.enterOuterAlt(e,6),this.state=4216,this.actorMember();break;case 7:this.enterOuterAlt(e,7),this.state=4217,this.stakeholderMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subjectMember(){let e=new Xd(this.context,this.state);this.enterRule(e,856,r.RULE_subjectMember);try{this.enterOuterAlt(e,1),this.state=4220,this.memberPrefix(),this.state=4221,this.subjectUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subjectUsage(){let e=new M4(this.context,this.state);this.enterRule(e,858,r.RULE_subjectUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4223,this.match(r.SUBJECT),this.state=4227,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4224,this.usageExtensionKeyword(),this.state=4229,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4230,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementConstraintMember(){let e=new _4(this.context,this.state);this.enterRule(e,860,r.RULE_requirementConstraintMember);try{this.enterOuterAlt(e,1),this.state=4232,this.memberPrefix(),this.state=4233,this.requirementKind(),this.state=4234,this.requirementConstraintUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementKind(){let e=new N4(this.context,this.state);this.enterRule(e,862,r.RULE_requirementKind);let t;try{this.enterOuterAlt(e,1),this.state=4236,t=this.tokenStream.LA(1),t===17||t===132?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementConstraintUsage(){let e=new I4(this.context,this.state);this.enterRule(e,864,r.RULE_requirementConstraintUsage);let t;try{switch(this.state=4261,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=4238,this.ownedReferenceSubsetting(),this.state=4240,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4239,this.featureSpecializationPart()),this.state=4242,this.requirementBody();break;case r.CONSTRAINT:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4256,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,455,this.context)){case 1:{for(this.state=4247,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4244,this.usageExtensionKeyword(),this.state=4249,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4250,this.match(r.CONSTRAINT)}break;case 2:{this.state=4252,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4251,this.usageExtensionKeyword(),this.state=4254,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4258,this.constraintUsageDeclaration(),this.state=4259,this.calculationBody()}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}framedConcernMember(){let e=new U4(this.context,this.state);this.enterRule(e,866,r.RULE_framedConcernMember);try{this.enterOuterAlt(e,1),this.state=4263,this.memberPrefix(),this.state=4264,this.match(r.FRAME),this.state=4265,this.framedConcernUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}framedConcernUsage(){let e=new O4(this.context,this.state);this.enterRule(e,868,r.RULE_framedConcernUsage);let t;try{switch(this.state=4290,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=4267,this.ownedReferenceSubsetting(),this.state=4269,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4268,this.featureSpecializationPart()),this.state=4271,this.calculationBody();break;case r.CONCERN:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4285,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,460,this.context)){case 1:{for(this.state=4276,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4273,this.usageExtensionKeyword(),this.state=4278,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4279,this.match(r.CONCERN)}break;case 2:{this.state=4281,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4280,this.usageExtensionKeyword(),this.state=4283,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4287,this.calculationUsageDeclaration(),this.state=4288,this.calculationBody()}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actorMember(){let e=new eh(this.context,this.state);this.enterRule(e,870,r.RULE_actorMember);try{this.enterOuterAlt(e,1),this.state=4292,this.memberPrefix(),this.state=4293,this.actorUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actorUsage(){let e=new D4(this.context,this.state);this.enterRule(e,872,r.RULE_actorUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4295,this.match(r.ACTOR),this.state=4299,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4296,this.usageExtensionKeyword(),this.state=4301,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4302,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}stakeholderMember(){let e=new $4(this.context,this.state);this.enterRule(e,874,r.RULE_stakeholderMember);try{this.enterOuterAlt(e,1),this.state=4304,this.memberPrefix(),this.state=4305,this.stakeholderUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stakeholderUsage(){let e=new F4(this.context,this.state);this.enterRule(e,876,r.RULE_stakeholderUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4307,this.match(r.STAKEHOLDER),this.state=4311,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4308,this.usageExtensionKeyword(),this.state=4313,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4314,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementUsage(){let e=new H4(this.context,this.state);this.enterRule(e,878,r.RULE_requirementUsage);try{this.enterOuterAlt(e,1),this.state=4316,this.occurrenceUsagePrefix(),this.state=4317,this.match(r.REQUIREMENT),this.state=4318,this.constraintUsageDeclaration(),this.state=4319,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfyRequirementUsage(){let e=new z4(this.context,this.state);this.enterRule(e,880,r.RULE_satisfyRequirementUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4321,this.occurrenceUsagePrefix(),this.state=4326,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===14&&(this.state=4322,this.match(r.ASSERT),this.state=4324,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===107&&(this.state=4323,this.match(r.NOT))),this.state=4328,this.match(r.SATISFY),this.state=4337,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=4329,this.ownedReferenceSubsetting(),this.state=4331,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4330,this.featureSpecializationPart());break;case r.REQUIREMENT:this.state=4333,this.match(r.REQUIREMENT),this.state=4335,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4334,this.usageDeclaration());break;default:throw new ne(this)}this.state=4340,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4339,this.valuePart()),this.state=4344,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===24&&(this.state=4342,this.match(r.BY),this.state=4343,this.satisfactionSubjectMember()),this.state=4346,this.requirementBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}satisfactionSubjectMember(){let e=new B4(this.context,this.state);this.enterRule(e,882,r.RULE_satisfactionSubjectMember);try{this.enterOuterAlt(e,1),this.state=4348,this.satisfactionParameter()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfactionParameter(){let e=new j4(this.context,this.state);this.enterRule(e,884,r.RULE_satisfactionParameter);try{this.enterOuterAlt(e,1),this.state=4350,this.satisfactionFeatureValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfactionFeatureValue(){let e=new q4(this.context,this.state);this.enterRule(e,886,r.RULE_satisfactionFeatureValue);try{this.enterOuterAlt(e,1),this.state=4352,this.satisfactionReferenceExpression()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfactionReferenceExpression(){let e=new V4(this.context,this.state);this.enterRule(e,888,r.RULE_satisfactionReferenceExpression);try{this.enterOuterAlt(e,1),this.state=4354,this.featureChainMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}concernDefinition(){let e=new Z4(this.context,this.state);this.enterRule(e,890,r.RULE_concernDefinition);try{this.enterOuterAlt(e,1),this.state=4356,this.occurrenceDefinitionPrefix(),this.state=4357,this.match(r.CONCERN),this.state=4358,this.match(r.DEF),this.state=4359,this.definitionDeclaration(),this.state=4360,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}concernUsage(){let e=new G4(this.context,this.state);this.enterRule(e,892,r.RULE_concernUsage);try{this.enterOuterAlt(e,1),this.state=4362,this.occurrenceUsagePrefix(),this.state=4363,this.match(r.CONCERN),this.state=4364,this.constraintUsageDeclaration(),this.state=4365,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}caseDefinition(){let e=new W4(this.context,this.state);this.enterRule(e,894,r.RULE_caseDefinition);try{this.enterOuterAlt(e,1),this.state=4367,this.occurrenceDefinitionPrefix(),this.state=4368,this.match(r.CASE),this.state=4369,this.match(r.DEF),this.state=4370,this.definitionDeclaration(),this.state=4371,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}caseUsage(){let e=new K4(this.context,this.state);this.enterRule(e,896,r.RULE_caseUsage);try{this.enterOuterAlt(e,1),this.state=4373,this.occurrenceUsagePrefix(),this.state=4374,this.match(r.CASE),this.state=4375,this.constraintUsageDeclaration(),this.state=4376,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}caseBody(){let e=new Ai(this.context,this.state);this.enterRule(e,898,r.RULE_caseBody);let t;try{let i;switch(this.state=4390,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4378,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4379,this.match(r.LBRACE),this.state=4383,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,471,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=4380,this.caseBodyItem()),this.state=4385,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,471,this.context);this.state=4387,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&917517)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=4386,this.resultExpressionMember()),this.state=4389,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}caseBodyItem(){let e=new th(this.context,this.state);this.enterRule(e,900,r.RULE_caseBodyItem);try{switch(this.state=4397,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,474,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4392,this.actionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4393,this.returnParameterMember();break;case 3:this.enterOuterAlt(e,3),this.state=4394,this.subjectMember();break;case 4:this.enterOuterAlt(e,4),this.state=4395,this.actorMember();break;case 5:this.enterOuterAlt(e,5),this.state=4396,this.objectiveMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}objectiveMember(){let e=new J4(this.context,this.state);this.enterRule(e,902,r.RULE_objectiveMember);try{this.enterOuterAlt(e,1),this.state=4399,this.memberPrefix(),this.state=4400,this.match(r.OBJECTIVE),this.state=4401,this.objectiveRequirementUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}objectiveRequirementUsage(){let e=new Q4(this.context,this.state);this.enterRule(e,904,r.RULE_objectiveRequirementUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4406,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4403,this.usageExtensionKeyword(),this.state=4408,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4409,this.constraintUsageDeclaration(),this.state=4410,this.requirementBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}analysisCaseDefinition(){let e=new Y4(this.context,this.state);this.enterRule(e,906,r.RULE_analysisCaseDefinition);try{this.enterOuterAlt(e,1),this.state=4412,this.occurrenceDefinitionPrefix(),this.state=4413,this.match(r.ANALYSIS),this.state=4414,this.match(r.DEF),this.state=4415,this.definitionDeclaration(),this.state=4416,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}analysisCaseUsage(){let e=new X4(this.context,this.state);this.enterRule(e,908,r.RULE_analysisCaseUsage);try{this.enterOuterAlt(e,1),this.state=4418,this.occurrenceUsagePrefix(),this.state=4419,this.match(r.ANALYSIS),this.state=4420,this.constraintUsageDeclaration(),this.state=4421,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}verificationCaseDefinition(){let e=new ey(this.context,this.state);this.enterRule(e,910,r.RULE_verificationCaseDefinition);try{this.enterOuterAlt(e,1),this.state=4423,this.occurrenceDefinitionPrefix(),this.state=4424,this.match(r.VERIFICATION),this.state=4425,this.match(r.DEF),this.state=4426,this.definitionDeclaration(),this.state=4427,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}verificationCaseUsage(){let e=new ty(this.context,this.state);this.enterRule(e,912,r.RULE_verificationCaseUsage);try{this.enterOuterAlt(e,1),this.state=4429,this.occurrenceUsagePrefix(),this.state=4430,this.match(r.VERIFICATION),this.state=4431,this.constraintUsageDeclaration(),this.state=4432,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementVerificationMember(){let e=new ry(this.context,this.state);this.enterRule(e,914,r.RULE_requirementVerificationMember);try{this.enterOuterAlt(e,1),this.state=4434,this.memberPrefix(),this.state=4435,this.match(r.VERIFY),this.state=4436,this.requirementVerificationUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementVerificationUsage(){let e=new iy(this.context,this.state);this.enterRule(e,916,r.RULE_requirementVerificationUsage);let t;try{switch(this.state=4464,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1);{for(this.state=4438,this.ownedReferenceSubsetting(),this.state=4442,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204;)this.state=4439,this.featureSpecialization(),this.state=4444,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4445,this.requirementBody()}break;case r.REQUIREMENT:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4459,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,479,this.context)){case 1:{for(this.state=4450,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4447,this.usageExtensionKeyword(),this.state=4452,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4453,this.match(r.REQUIREMENT)}break;case 2:{this.state=4455,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4454,this.usageExtensionKeyword(),this.state=4457,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4461,this.constraintUsageDeclaration(),this.state=4462,this.requirementBody()}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}useCaseDefinition(){let e=new ny(this.context,this.state);this.enterRule(e,918,r.RULE_useCaseDefinition);try{this.enterOuterAlt(e,1),this.state=4466,this.occurrenceDefinitionPrefix(),this.state=4467,this.match(r.USE),this.state=4468,this.match(r.CASE),this.state=4469,this.match(r.DEF),this.state=4470,this.definitionDeclaration(),this.state=4471,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}useCaseUsage(){let e=new sy(this.context,this.state);this.enterRule(e,920,r.RULE_useCaseUsage);try{this.enterOuterAlt(e,1),this.state=4473,this.occurrenceUsagePrefix(),this.state=4474,this.match(r.USE),this.state=4475,this.match(r.CASE),this.state=4476,this.constraintUsageDeclaration(),this.state=4477,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}includeUseCaseUsage(){let e=new oy(this.context,this.state);this.enterRule(e,922,r.RULE_includeUseCaseUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4479,this.occurrenceUsagePrefix(),this.state=4480,this.match(r.INCLUDE),this.state=4490,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=4481,this.ownedReferenceSubsetting(),this.state=4483,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4482,this.featureSpecializationPart());break;case r.USE:this.state=4485,this.match(r.USE),this.state=4486,this.match(r.CASE),this.state=4488,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4487,this.usageDeclaration());break;default:throw new ne(this)}this.state=4493,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4492,this.valuePart()),this.state=4495,this.caseBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewDefinition(){let e=new ay(this.context,this.state);this.enterRule(e,924,r.RULE_viewDefinition);try{this.enterOuterAlt(e,1),this.state=4497,this.occurrenceDefinitionPrefix(),this.state=4498,this.match(r.VIEW),this.state=4499,this.match(r.DEF),this.state=4500,this.definitionDeclaration(),this.state=4501,this.viewDefinitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewDefinitionBody(){let e=new ly(this.context,this.state);this.enterRule(e,926,r.RULE_viewDefinitionBody);let t;try{switch(this.state=4512,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4503,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4504,this.match(r.LBRACE),this.state=4508,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3203643665)!==0||(t-135&-32)===0&&(1<<t-135&3901137093)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4505,this.viewDefinitionBodyItem(),this.state=4510,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4511,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewDefinitionBodyItem(){let e=new rh(this.context,this.state);this.enterRule(e,928,r.RULE_viewDefinitionBodyItem);try{switch(this.state=4517,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,487,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4514,this.definitionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4515,this.elementFilterMember();break;case 3:this.enterOuterAlt(e,3),this.state=4516,this.viewRenderingMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewRenderingMember(){let e=new ih(this.context,this.state);this.enterRule(e,930,r.RULE_viewRenderingMember);try{this.enterOuterAlt(e,1),this.state=4519,this.memberPrefix(),this.state=4520,this.match(r.RENDER),this.state=4521,this.viewRenderingUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewRenderingUsage(){let e=new uy(this.context,this.state);this.enterRule(e,932,r.RULE_viewRenderingUsage);let t;try{switch(this.state=4544,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=4523,this.ownedReferenceSubsetting(),this.state=4525,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4524,this.featureSpecializationPart()),this.state=4527,this.usageBody();break;case r.RENDERING:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4541,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,491,this.context)){case 1:{for(this.state=4532,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4529,this.usageExtensionKeyword(),this.state=4534,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4535,this.match(r.RENDERING)}break;case 2:{this.state=4537,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4536,this.usageExtensionKeyword(),this.state=4539,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4543,this.usage()}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewUsage(){let e=new nh(this.context,this.state);this.enterRule(e,934,r.RULE_viewUsage);let t;try{this.enterOuterAlt(e,1),this.state=4546,this.occurrenceUsagePrefix(),this.state=4547,this.match(r.VIEW),this.state=4549,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4548,this.usageDeclaration()),this.state=4552,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4551,this.valuePart()),this.state=4554,this.viewBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewBody(){let e=new cy(this.context,this.state);this.enterRule(e,936,r.RULE_viewBody);let t;try{switch(this.state=4565,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4556,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4557,this.match(r.LBRACE),this.state=4561,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&1564722993)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3203643665)!==0||(t-135&-32)===0&&(1<<t-135&3901137093)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4558,this.viewBodyItem(),this.state=4563,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4564,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewBodyItem(){let e=new sh(this.context,this.state);this.enterRule(e,938,r.RULE_viewBodyItem);try{switch(this.state=4571,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,497,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4567,this.definitionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4568,this.elementFilterMember();break;case 3:this.enterOuterAlt(e,3),this.state=4569,this.viewRenderingMember();break;case 4:this.enterOuterAlt(e,4),this.state=4570,this.expose();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expose(){let e=new dy(this.context,this.state);this.enterRule(e,940,r.RULE_expose);try{this.enterOuterAlt(e,1);{switch(this.state=4573,this.match(r.EXPOSE),this.state=4576,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,498,this.context)){case 1:this.state=4574,this.membershipExpose();break;case 2:this.state=4575,this.namespaceExpose();break}this.state=4578,this.relationshipBody()}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}membershipExpose(){let e=new hy(this.context,this.state);this.enterRule(e,942,r.RULE_membershipExpose);try{this.enterOuterAlt(e,1),this.state=4580,this.membershipImport()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namespaceExpose(){let e=new py(this.context,this.state);this.enterRule(e,944,r.RULE_namespaceExpose);try{this.enterOuterAlt(e,1),this.state=4582,this.namespaceImport()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewpointDefinition(){let e=new fy(this.context,this.state);this.enterRule(e,946,r.RULE_viewpointDefinition);try{this.enterOuterAlt(e,1),this.state=4584,this.occurrenceDefinitionPrefix(),this.state=4585,this.match(r.VIEWPOINT),this.state=4586,this.match(r.DEF),this.state=4587,this.definitionDeclaration(),this.state=4588,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewpointUsage(){let e=new my(this.context,this.state);this.enterRule(e,948,r.RULE_viewpointUsage);try{this.enterOuterAlt(e,1),this.state=4590,this.occurrenceUsagePrefix(),this.state=4591,this.match(r.VIEWPOINT),this.state=4592,this.constraintUsageDeclaration(),this.state=4593,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}renderingDefinition(){let e=new gy(this.context,this.state);this.enterRule(e,950,r.RULE_renderingDefinition);try{this.enterOuterAlt(e,1),this.state=4595,this.occurrenceDefinitionPrefix(),this.state=4596,this.match(r.RENDERING),this.state=4597,this.match(r.DEF),this.state=4598,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}renderingUsage(){let e=new oh(this.context,this.state);this.enterRule(e,952,r.RULE_renderingUsage);try{this.enterOuterAlt(e,1),this.state=4600,this.occurrenceUsagePrefix(),this.state=4601,this.match(r.RENDERING),this.state=4602,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataDefinition(){let e=new xy(this.context,this.state);this.enterRule(e,954,r.RULE_metadataDefinition);let t;try{this.enterOuterAlt(e,1);{for(this.state=4605,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===2&&(this.state=4604,this.match(r.ABSTRACT)),this.state=4610,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4607,this.definitionExtensionKeyword(),this.state=4612,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4613,this.match(r.METADATA),this.state=4614,this.match(r.DEF),this.state=4615,this.definition()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}prefixMetadataUsage(){let e=new ah(this.context,this.state);this.enterRule(e,956,r.RULE_prefixMetadataUsage);try{this.enterOuterAlt(e,1),this.state=4617,this.ownedFeatureTyping()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataUsage(){let e=new cC(this.context,this.state);this.enterRule(e,958,r.RULE_metadataUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4622,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4619,this.usageExtensionKeyword(),this.state=4624,this.errorHandler.sync(this),t=this.tokenStream.LA(1);if(this.state=4625,t=this.tokenStream.LA(1),t===102||t===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=4626,this.metadataUsageDeclaration(),this.state=4636,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===1)for(this.state=4627,this.match(r.ABOUT),this.state=4628,this.annotation(),this.state=4633,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=4629,this.match(r.COMMA),this.state=4630,this.annotation(),this.state=4635,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4638,this.metadataBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataUsageDeclaration(){let e=new by(this.context,this.state);this.enterRule(e,960,r.RULE_metadataUsageDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4648,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,506,this.context)){case 1:switch(this.state=4641,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=4640,this.identification()),this.state=4646,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=4643,this.match(r.COLON);break;case r.TYPED:this.state=4644,this.match(r.TYPED),this.state=4645,this.match(r.BY);break;default:throw new ne(this)}break}this.state=4650,this.ownedFeatureTyping()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataBodyUsageMember(){let e=new lh(this.context,this.state);this.enterRule(e,962,r.RULE_metadataBodyUsageMember);try{this.enterOuterAlt(e,1),this.state=4652,this.metadataBodyUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataBodyUsage(){let e=new yy(this.context,this.state);this.enterRule(e,964,r.RULE_metadataBodyUsage);let t;try{this.enterOuterAlt(e,1),this.state=4655,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===127&&(this.state=4654,this.match(r.REF)),this.state=4658,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===125||t===176)&&(this.state=4657,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=4660,this.ownedRedefinition(),this.state=4662,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4661,this.featureSpecializationPart()),this.state=4665,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4664,this.valuePart()),this.state=4667,this.metadataBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}extendedDefinition(){let e=new vy(this.context,this.state);this.enterRule(e,966,r.RULE_extendedDefinition);let t;try{this.enterOuterAlt(e,1);{this.state=4670,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=4669,this.basicDefinitionPrefix()),this.state=4673,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4672,this.definitionExtensionKeyword(),this.state=4675,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192);this.state=4677,this.match(r.DEF),this.state=4678,this.definition()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}extendedUsage(){let e=new Ry(this.context,this.state);this.enterRule(e,968,r.RULE_extendedUsage);let t;try{this.enterOuterAlt(e,1);{this.state=4680,this.unextendedUsagePrefix(),this.state=4682,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4681,this.usageExtensionKeyword(),this.state=4684,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192);this.state=4686,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}filterPackageImportDeclaration(){let e=new Cy(this.context,this.state);this.enterRule(e,970,r.RULE_filterPackageImportDeclaration);try{switch(this.state=4690,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,514,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4688,this.membershipImport();break;case 2:this.enterOuterAlt(e,2),this.state=4689,this.namespaceImportDirect();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namespaceImportDirect(){let e=new Ey(this.context,this.state);this.enterRule(e,972,r.RULE_namespaceImportDirect);let t;try{this.enterOuterAlt(e,1),this.state=4692,this.qualifiedName(),this.state=4693,this.match(r.COLON_COLON),this.state=4694,this.match(r.STAR),this.state=4697,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===183&&(this.state=4695,this.match(r.COLON_COLON),this.state=4696,this.match(r.STAR_STAR))}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}calculationUsageDeclaration(){let e=new Sy(this.context,this.state);this.enterRule(e,974,r.RULE_calculationUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=4700,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4699,this.usageDeclaration()),this.state=4703,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4702,this.valuePart())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}emptyActionUsage_(){let e=new uh(this.context,this.state);this.enterRule(e,976,r.RULE_emptyActionUsage_);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyFeature_(){let e=new ch(this.context,this.state);this.enterRule(e,978,r.RULE_emptyFeature_);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyMultiplicity_(){let e=new Py(this.context,this.state);this.enterRule(e,980,r.RULE_emptyMultiplicity_);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyUsage_(){let e=new Ly(this.context,this.state);this.enterRule(e,982,r.RULE_emptyUsage_);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}filterPackageImport(){let e=new Ty(this.context,this.state);this.enterRule(e,984,r.RULE_filterPackageImport);try{this.enterOuterAlt(e,1),this.state=4713,this.match(r.IDENTIFIER)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonFeatureChainPrimaryExpression(){let e=new wy(this.context,this.state);this.enterRule(e,986,r.RULE_nonFeatureChainPrimaryExpression);try{this.enterOuterAlt(e,1),this.state=4715,this.match(r.IDENTIFIER)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}portConjugation(){let e=new ky(this.context,this.state);this.enterRule(e,988,r.RULE_portConjugation);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sempred(e,t,i){return t===0?this.ownedExpression_sempred(e,i):!0}ownedExpression_sempred(e,t){switch(t){case 0:return this.precpred(this.context,27);case 1:return this.precpred(this.context,26);case 2:return this.precpred(this.context,25);case 3:return this.precpred(this.context,24);case 4:return this.precpred(this.context,23);case 5:return this.precpred(this.context,22);case 6:return this.precpred(this.context,21);case 7:return this.precpred(this.context,20);case 8:return this.precpred(this.context,19);case 9:return this.precpred(this.context,18);case 10:return this.precpred(this.context,17);case 11:return this.precpred(this.context,16);case 12:return this.precpred(this.context,15);case 13:return this.precpred(this.context,12);case 14:return this.precpred(this.context,11);case 15:return this.precpred(this.context,10);case 16:return this.precpred(this.context,9);case 17:return this.precpred(this.context,8);case 18:return this.precpred(this.context,7);case 19:return this.precpred(this.context,6);case 20:return this.precpred(this.context,5);case 21:return this.precpred(this.context,4);case 22:return this.precpred(this.context,3)}return!0}static _serializedATN=[4,1,225,4720,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367,7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373,7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378,7,378,2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383,2,384,7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389,7,389,2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394,2,395,7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400,2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405,2,406,7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411,7,411,2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,2,417,7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422,7,422,2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427,2,428,7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433,7,433,2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438,2,439,7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444,7,444,2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450,7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455,2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461,7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466,7,466,2,467,7,467,2,468,7,468,2,469,7,469,2,470,7,470,2,471,7,471,2,472,7,472,2,473,7,473,2,474,7,474,2,475,7,475,2,476,7,476,2,477,7,477,2,478,7,478,2,479,7,479,2,480,7,480,2,481,7,481,2,482,7,482,2,483,7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487,7,487,2,488,7,488,2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493,7,493,2,494,7,494,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1006,8,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1062,8,0,1,0,1,0,1,0,1,0,1,0,3,0,1069,8,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1085,8,0,5,0,1087,8,0,10,0,12,0,1090,9,0,1,1,1,1,1,2,1,2,1,2,5,2,1097,8,2,10,2,12,2,1100,9,2,1,3,1,3,1,3,1,3,1,3,1,3,3,3,1108,8,3,1,3,1,3,1,3,1,3,3,3,1114,8,3,1,3,3,3,1117,8,3,1,4,1,4,1,4,3,4,1122,8,4,1,5,1,5,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,10,1,10,1,10,3,10,1144,8,10,1,10,1,10,1,11,1,11,1,11,5,11,1151,8,11,10,11,12,11,1154,9,11,1,12,1,12,1,12,5,12,1159,8,12,10,12,12,12,1162,9,12,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,3,14,1173,8,14,1,15,1,15,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,1201,8,23,1,24,1,24,1,24,5,24,1206,8,24,10,24,12,24,1209,9,24,1,24,1,24,1,24,5,24,1214,8,24,10,24,12,24,1217,9,24,1,24,3,24,1220,8,24,1,25,1,25,3,25,1224,8,25,1,26,1,26,3,26,1228,8,26,1,27,5,27,1231,8,27,10,27,12,27,1234,9,27,1,27,1,27,3,27,1238,8,27,1,27,3,27,1241,8,27,1,27,1,27,1,27,5,27,1246,8,27,10,27,12,27,1249,9,27,1,27,1,27,1,27,1,27,5,27,1255,8,27,10,27,12,27,1258,9,27,1,27,1,27,1,27,5,27,1263,8,27,10,27,12,27,1266,9,27,1,27,1,27,1,27,1,27,3,27,1272,8,27,1,28,1,28,1,29,1,29,1,30,1,30,1,30,1,30,3,30,1282,8,30,1,31,1,31,3,31,1286,8,31,1,31,1,31,1,31,1,31,5,31,1292,8,31,10,31,12,31,1295,9,31,3,31,1297,8,31,3,31,1299,8,31,1,31,1,31,3,31,1303,8,31,1,31,1,31,1,32,1,32,3,32,1309,8,32,1,32,1,32,3,32,1313,8,32,1,32,1,32,1,33,1,33,3,33,1319,8,33,3,33,1321,8,33,1,33,1,33,1,33,1,33,1,34,5,34,1328,8,34,10,34,12,34,1331,9,34,1,34,1,34,1,35,5,35,1336,8,35,10,35,12,35,1339,9,35,1,35,1,35,1,35,1,36,1,36,3,36,1346,8,36,1,37,1,37,1,37,5,37,1351,8,37,10,37,12,37,1354,9,37,1,37,3,37,1357,8,37,1,38,1,38,1,38,3,38,1362,8,38,1,39,3,39,1365,8,39,1,40,1,40,1,41,1,41,3,41,1371,8,41,1,42,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1385,8,44,1,44,3,44,1388,8,44,1,44,1,44,1,44,1,44,1,45,1,45,3,45,1396,8,45,1,45,1,45,1,45,5,45,1401,8,45,10,45,12,45,1404,9,45,1,45,1,45,1,46,3,46,1409,8,46,1,46,1,46,3,46,1413,8,46,1,46,1,46,1,46,1,47,1,47,3,47,1420,8,47,1,48,1,48,1,48,3,48,1425,8,48,1,49,1,49,1,49,1,49,1,49,3,49,1432,8,49,1,49,3,49,1435,8,49,1,50,1,50,4,50,1439,8,50,11,50,12,50,1440,1,50,1,50,4,50,1445,8,50,11,50,12,50,1446,3,50,1449,8,50,1,51,1,51,1,51,1,51,1,52,1,52,3,52,1457,8,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1485,8,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,3,54,1497,8,54,1,55,1,55,1,55,1,55,1,55,1,56,3,56,1505,8,56,1,56,5,56,1508,8,56,10,56,12,56,1511,9,56,1,57,3,57,1514,8,57,1,57,3,57,1517,8,57,1,57,3,57,1520,8,57,1,57,1,57,4,57,1524,8,57,11,57,12,57,1525,1,57,5,57,1529,8,57,10,57,12,57,1532,9,57,1,58,1,58,1,58,1,58,5,58,1538,8,58,10,58,12,58,1541,9,58,1,59,1,59,1,59,1,60,1,60,1,60,1,60,3,60,1550,8,60,1,61,1,61,1,61,1,61,1,61,5,61,1557,8,61,10,61,12,61,1560,9,61,1,62,1,62,1,62,1,62,5,62,1566,8,62,10,62,12,62,1569,9,62,1,63,1,63,1,63,1,63,5,63,1575,8,63,10,63,12,63,1578,9,63,1,64,1,64,1,64,1,64,5,64,1584,8,64,10,64,12,64,1587,9,64,1,65,1,65,1,65,5,65,1592,8,65,10,65,12,65,1595,9,65,1,65,3,65,1598,8,65,1,66,1,66,1,66,1,66,3,66,1604,8,66,1,67,1,67,3,67,1608,8,67,3,67,1610,8,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,69,1,69,1,69,5,69,1623,8,69,10,69,12,69,1626,9,69,1,70,1,70,1,70,5,70,1631,8,70,10,70,12,70,1634,9,70,1,71,1,71,3,71,1638,8,71,3,71,1640,8,71,1,71,1,71,1,71,1,71,5,71,1646,8,71,10,71,12,71,1649,9,71,1,71,1,71,1,71,1,71,5,71,1655,8,71,10,71,12,71,1658,9,71,1,71,1,71,1,72,1,72,1,72,5,72,1665,8,72,10,72,12,72,1668,9,72,1,73,1,73,3,73,1672,8,73,3,73,1674,8,73,1,73,1,73,1,73,1,73,5,73,1680,8,73,10,73,12,73,1683,9,73,1,73,1,73,1,73,1,73,5,73,1689,8,73,10,73,12,73,1692,9,73,1,73,1,73,1,74,1,74,1,74,5,74,1699,8,74,10,74,12,74,1702,9,74,1,75,1,75,1,75,5,75,1707,8,75,10,75,12,75,1710,9,75,1,76,1,76,1,76,5,76,1715,8,76,10,76,12,76,1718,9,76,1,77,1,77,1,77,5,77,1723,8,77,10,77,12,77,1726,9,77,1,78,1,78,3,78,1730,8,78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,82,3,82,1745,8,82,1,82,3,82,1748,8,82,1,82,3,82,1751,8,82,1,82,1,82,3,82,1755,8,82,1,82,5,82,1758,8,82,10,82,12,82,1761,9,82,1,83,1,83,1,83,1,83,5,83,1767,8,83,10,83,12,83,1770,9,83,1,84,1,84,3,84,1774,8,84,3,84,1776,8,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,86,1,86,1,86,3,86,1789,8,86,1,86,3,86,1792,8,86,1,86,1,86,3,86,1796,8,86,1,86,1,86,3,86,1800,8,86,1,86,3,86,1803,8,86,1,86,1,86,1,87,3,87,1808,8,87,1,87,1,87,1,88,3,88,1813,8,88,1,88,3,88,1816,8,88,1,88,3,88,1819,8,88,1,88,3,88,1822,8,88,1,88,3,88,1825,8,88,1,89,1,89,1,89,1,89,3,89,1831,8,89,1,89,5,89,1834,8,89,10,89,12,89,1837,9,89,1,90,1,90,1,91,1,91,1,91,1,91,1,91,3,91,1846,8,91,3,91,1848,8,91,1,92,1,92,1,93,3,93,1853,8,93,1,93,1,93,1,93,3,93,1858,8,93,1,93,1,93,3,93,1862,8,93,1,93,5,93,1865,8,93,10,93,12,93,1868,9,93,1,94,1,94,1,94,1,94,3,94,1874,8,94,1,94,3,94,1877,8,94,1,95,1,95,1,95,1,95,3,95,1883,8,95,1,96,1,96,1,96,1,96,5,96,1889,8,96,10,96,12,96,1892,9,96,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,5,98,1903,8,98,10,98,12,98,1906,9,98,1,99,4,99,1909,8,99,11,99,12,99,1910,1,99,3,99,1914,8,99,1,99,5,99,1917,8,99,10,99,12,99,1920,9,99,1,99,1,99,5,99,1924,8,99,10,99,12,99,1927,9,99,3,99,1929,8,99,1,100,1,100,1,100,3,100,1934,8,100,1,100,1,100,3,100,1938,8,100,3,100,1940,8,100,1,100,1,100,3,100,1944,8,100,1,100,1,100,3,100,1948,8,100,3,100,1950,8,100,3,100,1952,8,100,1,101,1,101,1,101,1,101,1,101,3,101,1959,8,101,1,102,1,102,1,102,5,102,1964,8,102,10,102,12,102,1967,9,102,1,103,1,103,1,103,1,103,1,103,3,103,1974,8,103,1,103,1,103,1,104,1,104,1,104,5,104,1981,8,104,10,104,12,104,1984,9,104,1,105,1,105,1,105,1,106,1,106,1,106,1,107,1,107,1,107,1,108,1,108,1,108,5,108,1998,8,108,10,108,12,108,2001,9,108,1,109,1,109,1,109,1,110,1,110,3,110,2008,8,110,3,110,2010,8,110,1,110,1,110,1,110,1,110,1,110,3,110,2017,8,110,1,110,1,110,1,110,1,110,1,110,3,110,2024,8,110,1,111,1,111,1,111,5,111,2029,8,111,10,111,12,111,2032,9,111,1,112,1,112,3,112,2036,8,112,3,112,2038,8,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,5,113,2049,8,113,10,113,12,113,2052,9,113,1,114,1,114,1,114,5,114,2057,8,114,10,114,12,114,2060,9,114,1,115,1,115,1,115,5,115,2065,8,115,10,115,12,115,2068,9,115,1,116,1,116,3,116,2072,8,116,3,116,2074,8,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,5,117,2085,8,117,10,117,12,117,2088,9,117,1,118,1,118,1,118,1,118,4,118,2094,8,118,11,118,12,118,2095,3,118,2098,8,118,1,119,1,119,1,119,4,119,2103,8,119,11,119,12,119,2104,1,120,1,120,1,121,1,121,3,121,2111,8,121,3,121,2113,8,121,1,121,1,121,1,121,1,121,5,121,2119,8,121,10,121,12,121,2122,9,121,1,121,1,121,1,121,1,121,5,121,2128,8,121,10,121,12,121,2131,9,121,1,121,1,121,1,122,1,122,1,122,5,122,2138,8,122,10,122,12,122,2141,9,122,1,123,1,123,3,123,2145,8,123,1,123,3,123,2148,8,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,3,130,2186,8,130,1,130,3,130,2189,8,130,1,130,3,130,2192,8,130,1,130,1,130,1,131,1,131,3,131,2198,8,131,1,132,3,132,2201,8,132,1,132,1,132,1,132,3,132,2206,8,132,3,132,2208,8,132,1,132,1,132,1,132,1,132,1,133,3,133,2215,8,133,1,133,1,133,1,133,1,133,1,133,1,133,5,133,2223,8,133,10,133,12,133,2226,9,133,1,133,1,133,1,134,1,134,1,135,3,135,2233,8,135,1,135,1,135,1,135,3,135,2238,8,135,1,135,1,135,1,136,1,136,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,3,139,2257,8,139,1,139,3,139,2260,8,139,1,139,3,139,2263,8,139,1,139,1,139,1,139,1,139,3,139,2269,8,139,3,139,2271,8,139,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,3,141,2284,8,141,1,141,3,141,2287,8,141,1,141,3,141,2290,8,141,1,141,1,141,1,141,1,141,3,141,2296,8,141,3,141,2298,8,141,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,3,143,2309,8,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,3,145,2323,8,145,1,146,1,146,5,146,2327,8,146,10,146,12,146,2330,9,146,1,146,3,146,2333,8,146,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,149,1,149,1,149,1,149,3,149,2346,8,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,3,151,2359,8,151,1,151,1,151,1,152,1,152,1,152,3,152,2366,8,152,1,152,1,152,3,152,2370,8,152,1,152,1,152,1,153,1,153,1,154,1,154,1,155,1,155,1,156,1,156,1,157,1,157,1,158,1,158,1,159,1,159,1,159,1,159,1,160,1,160,1,161,1,161,1,162,1,162,1,163,1,163,1,164,1,164,1,165,1,165,1,166,1,166,1,167,1,167,1,168,1,168,1,169,1,169,1,170,1,170,1,170,5,170,2413,8,170,10,170,12,170,2416,9,170,1,171,1,171,3,171,2420,8,171,1,172,1,172,1,173,1,173,1,174,1,174,1,175,1,175,1,176,1,176,1,177,1,177,1,177,5,177,2435,8,177,10,177,12,177,2438,9,177,1,178,1,178,1,179,1,179,1,180,1,180,1,181,1,181,1,182,1,182,1,182,1,182,1,183,1,183,1,184,3,184,2455,8,184,1,184,1,184,1,184,3,184,2460,8,184,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,3,188,2480,8,188,1,188,1,188,3,188,2484,8,188,1,188,1,188,1,188,1,188,1,188,3,188,2491,8,188,1,188,3,188,2494,8,188,1,188,1,188,1,188,1,188,1,188,3,188,2501,8,188,1,188,3,188,2504,8,188,1,188,1,188,3,188,2508,8,188,1,188,1,188,1,188,1,188,1,188,3,188,2515,8,188,3,188,2517,8,188,1,189,1,189,1,190,3,190,2522,8,190,1,190,1,190,3,190,2526,8,190,1,190,1,190,3,190,2530,8,190,1,190,1,190,3,190,2534,8,190,1,190,1,190,3,190,2538,8,190,3,190,2540,8,190,1,191,4,191,2543,8,191,11,191,12,191,2544,1,191,3,191,2548,8,191,1,191,5,191,2551,8,191,10,191,12,191,2554,9,191,1,191,1,191,4,191,2558,8,191,11,191,12,191,2559,3,191,2562,8,191,1,192,1,192,1,193,1,193,1,193,5,193,2569,8,193,10,193,12,193,2572,9,193,1,194,1,194,1,195,1,195,1,196,1,196,1,197,1,197,1,198,1,198,1,198,1,198,3,198,2586,8,198,3,198,2588,8,198,1,198,1,198,1,199,1,199,3,199,2594,8,199,1,200,1,200,3,200,2598,8,200,1,200,1,200,1,200,1,201,1,201,3,201,2605,8,201,1,201,1,201,1,201,1,202,1,202,1,203,1,203,1,204,1,204,1,204,1,204,3,204,2618,8,204,1,204,1,204,1,204,1,205,1,205,3,205,2625,8,205,1,206,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,3,207,2636,8,207,1,208,1,208,1,208,1,208,3,208,2642,8,208,1,209,1,209,1,210,5,210,2647,8,210,10,210,12,210,2650,9,210,1,210,1,210,1,210,1,210,1,210,1,210,5,210,2658,8,210,10,210,12,210,2661,9,210,3,210,2663,8,210,1,210,1,210,1,211,3,211,2668,8,211,1,211,1,211,1,211,3,211,2673,8,211,3,211,2675,8,211,1,211,1,211,1,212,1,212,1,212,5,212,2682,8,212,10,212,12,212,2685,9,212,1,212,1,212,1,212,1,212,1,212,1,212,5,212,2693,8,212,10,212,12,212,2696,9,212,1,212,3,212,2699,8,212,1,213,1,213,1,213,1,213,3,213,2705,8,213,1,214,1,214,1,215,3,215,2710,8,215,1,215,3,215,2713,8,215,1,215,1,215,3,215,2717,8,215,1,215,3,215,2720,8,215,1,215,1,215,1,216,5,216,2725,8,216,10,216,12,216,2728,9,216,1,216,1,216,1,216,1,217,3,217,2734,8,217,1,217,1,217,5,217,2738,8,217,10,217,12,217,2741,9,217,1,217,1,217,1,217,1,218,1,218,3,218,2748,8,218,1,219,1,219,1,219,5,219,2753,8,219,10,219,12,219,2756,9,219,1,219,3,219,2759,8,219,1,220,1,220,1,220,1,220,1,220,1,221,3,221,2767,8,221,1,221,3,221,2770,8,221,1,221,1,221,1,221,5,221,2775,8,221,10,221,12,221,2778,9,221,1,221,1,221,1,221,1,221,5,221,2784,8,221,10,221,12,221,2787,9,221,1,222,1,222,1,223,1,223,1,223,1,223,3,223,2795,8,223,1,224,1,224,1,224,3,224,2800,8,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,3,225,2832,8,225,1,226,1,226,3,226,2836,8,226,1,227,1,227,1,228,1,228,1,229,3,229,2843,8,229,1,229,5,229,2846,8,229,10,229,12,229,2849,9,229,1,230,1,230,1,230,1,231,3,231,2855,8,231,1,231,3,231,2858,8,231,1,232,1,232,1,232,5,232,2863,8,232,10,232,12,232,2866,9,232,1,232,3,232,2869,8,232,1,233,1,233,1,233,1,233,1,233,3,233,2876,8,233,1,233,1,233,1,233,3,233,2881,8,233,1,234,1,234,1,234,1,234,1,234,3,234,2888,8,234,1,234,3,234,2891,8,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,3,234,2901,8,234,1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,237,1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,239,1,240,1,240,1,240,1,241,3,241,2923,8,241,1,241,3,241,2926,8,241,1,241,3,241,2929,8,241,1,241,3,241,2932,8,241,1,242,1,242,3,242,2936,8,242,1,243,1,243,1,243,1,244,1,244,1,245,1,245,3,245,2945,8,245,1,246,1,246,5,246,2949,8,246,10,246,12,246,2952,9,246,1,247,3,247,2955,8,247,1,247,1,247,1,248,1,248,3,248,2961,8,248,1,248,3,248,2964,8,248,1,249,3,249,2967,8,249,1,249,1,249,1,250,1,250,1,251,1,251,1,251,1,252,1,252,3,252,2978,8,252,1,252,1,252,1,252,1,253,1,253,1,253,1,253,1,254,1,254,5,254,2989,8,254,10,254,12,254,2992,9,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,3,255,3004,8,255,1,256,1,256,3,256,3008,8,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,3,257,3025,8,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,3,258,3043,8,258,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,3,259,3066,8,259,1,260,1,260,1,260,1,260,5,260,3072,8,260,10,260,12,260,3075,9,260,1,261,1,261,1,261,1,261,1,261,1,262,1,262,1,262,1,262,1,263,5,263,3087,8,263,10,263,12,263,3090,9,263,1,263,1,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264,5,264,3101,8,264,10,264,12,264,3104,9,264,1,264,3,264,3107,8,264,1,265,1,265,1,265,1,266,3,266,3113,8,266,1,266,1,266,1,267,1,267,1,267,1,267,1,268,3,268,3122,8,268,1,268,1,268,3,268,3126,8,268,1,268,5,268,3129,8,268,10,268,12,268,3132,9,268,1,269,1,269,1,269,1,269,1,269,1,270,3,270,3140,8,270,1,270,1,270,5,270,3144,8,270,10,270,12,270,3147,9,270,1,270,1,270,1,270,1,270,1,271,1,271,1,272,1,272,3,272,3157,8,272,1,272,3,272,3160,8,272,1,272,5,272,3163,8,272,10,272,12,272,3166,9,272,1,273,1,273,1,273,1,273,1,274,1,274,1,274,5,274,3175,8,274,10,274,12,274,3178,9,274,1,274,1,274,1,275,1,275,3,275,3184,8,275,1,275,1,275,5,275,3188,8,275,10,275,12,275,3191,9,275,1,275,1,275,1,276,1,276,1,277,1,277,1,277,1,277,3,277,3201,8,277,1,277,1,277,3,277,3205,8,277,3,277,3207,8,277,1,277,1,277,1,278,1,278,1,278,1,279,1,279,1,280,1,280,1,281,3,281,3219,8,281,1,282,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286,1,286,1,287,1,287,1,288,1,288,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,291,1,291,1,291,1,291,1,291,1,292,1,292,1,292,3,292,3264,8,292,1,292,3,292,3267,8,292,1,292,1,292,3,292,3271,8,292,1,292,1,292,3,292,3275,8,292,1,292,1,292,1,293,1,293,3,293,3281,8,293,1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295,5,295,3293,8,295,10,295,12,295,3296,9,295,1,295,1,295,1,296,1,296,1,296,3,296,3303,8,296,3,296,3305,8,296,1,296,1,296,1,296,1,296,1,296,1,296,1,297,1,297,1,297,3,297,3316,8,297,3,297,3318,8,297,1,297,1,297,1,297,1,297,1,297,1,297,1,298,1,298,1,298,1,298,1,298,1,298,1,299,1,299,1,299,5,299,3335,8,299,10,299,12,299,3338,9,299,1,299,3,299,3341,8,299,1,300,1,300,1,300,1,300,3,300,3347,8,300,1,300,1,300,1,300,3,300,3352,8,300,1,301,1,301,1,301,1,302,1,302,1,302,1,302,1,302,3,302,3362,8,302,1,303,1,303,1,303,1,304,1,304,1,304,3,304,3370,8,304,1,305,1,305,1,305,1,306,1,306,1,306,1,306,1,306,1,307,3,307,3381,8,307,1,307,3,307,3384,8,307,1,307,1,307,3,307,3388,8,307,1,307,3,307,3391,8,307,1,308,1,308,3,308,3395,8,308,1,309,1,309,1,309,1,309,1,310,1,310,1,310,1,310,1,310,1,310,5,310,3407,8,310,10,310,12,310,3410,9,310,1,310,1,310,1,311,1,311,1,312,3,312,3417,8,312,1,312,1,312,1,312,3,312,3422,8,312,1,312,1,312,1,313,1,313,1,313,1,313,1,313,1,314,1,314,1,314,1,314,1,315,1,315,3,315,3437,8,315,1,315,1,315,3,315,3441,8,315,1,315,1,315,3,315,3445,8,315,1,316,1,316,1,316,1,316,1,316,1,317,1,317,1,317,1,317,1,317,1,318,3,318,3458,8,318,1,318,3,318,3461,8,318,1,318,1,318,3,318,3465,8,318,1,318,1,318,1,318,1,318,1,318,3,318,3472,8,318,1,318,1,318,1,318,1,318,3,318,3478,8,318,1,319,1,319,1,320,1,320,1,321,1,321,1,321,1,321,1,321,1,322,1,322,1,322,1,322,1,322,1,322,1,323,1,323,1,324,1,324,1,325,1,325,3,325,3501,8,325,1,326,1,326,1,326,4,326,3506,8,326,11,326,12,326,3507,1,326,1,326,1,326,1,327,1,327,1,327,1,327,1,327,1,327,1,328,1,328,1,328,5,328,3522,8,328,10,328,12,328,3525,9,328,1,328,3,328,3528,8,328,1,329,1,329,1,329,5,329,3533,8,329,10,329,12,329,3536,9,329,1,329,3,329,3539,8,329,1,329,1,329,5,329,3543,8,329,10,329,12,329,3546,9,329,1,329,3,329,3549,8,329,1,330,1,330,1,330,1,330,1,330,1,330,3,330,3557,8,330,1,330,3,330,3560,8,330,1,331,1,331,3,331,3564,8,331,1,332,1,332,1,332,1,332,1,332,1,333,1,333,1,333,1,334,1,334,1,334,1,335,1,335,1,335,1,336,1,336,1,336,1,336,1,336,1,337,3,337,3586,8,337,1,337,3,337,3589,8,337,1,338,1,338,1,338,1,338,1,338,1,339,1,339,3,339,3598,8,339,1,339,1,339,3,339,3602,8,339,3,339,3604,8,339,1,339,3,339,3607,8,339,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,3,340,3617,8,340,1,341,1,341,3,341,3621,8,341,1,342,1,342,3,342,3625,8,342,1,343,1,343,1,343,1,343,3,343,3631,8,343,1,344,1,344,3,344,3635,8,344,1,344,3,344,3638,8,344,1,344,5,344,3641,8,344,10,344,12,344,3644,9,344,1,345,1,345,1,345,3,345,3649,8,345,1,345,1,345,1,346,1,346,1,346,3,346,3656,8,346,1,346,1,346,1,347,1,347,1,347,3,347,3663,8,347,1,347,1,347,1,348,1,348,1,348,3,348,3670,8,348,1,348,1,348,1,349,1,349,1,349,1,349,1,350,3,350,3679,8,350,1,350,1,350,1,350,1,351,1,351,1,351,3,351,3687,8,351,1,352,1,352,1,353,1,353,3,353,3693,8,353,1,353,3,353,3696,8,353,1,353,3,353,3699,8,353,1,354,1,354,1,355,1,355,1,356,1,356,1,356,1,356,3,356,3709,8,356,1,357,1,357,1,357,3,357,3714,8,357,1,357,1,357,1,357,3,357,3719,8,357,1,357,1,357,1,357,3,357,3724,8,357,1,357,1,357,1,358,3,358,3729,8,358,1,358,1,358,1,358,3,358,3734,8,358,1,359,1,359,1,359,1,359,3,359,3740,8,359,1,359,1,359,1,359,1,359,3,359,3746,8,359,1,360,1,360,1,361,1,361,1,362,1,362,1,363,1,363,1,364,1,364,1,364,1,364,1,365,3,365,3761,8,365,1,365,1,365,1,365,1,365,1,365,1,365,1,366,1,366,1,367,1,367,1,367,3,367,3774,8,367,1,368,1,368,1,369,1,369,3,369,3780,8,369,1,369,1,369,3,369,3784,8,369,1,369,1,369,1,370,1,370,1,370,1,370,1,370,1,370,1,370,3,370,3795,8,370,3,370,3797,8,370,1,371,1,371,1,372,1,372,1,373,1,373,3,373,3805,8,373,3,373,3807,8,373,1,373,1,373,5,373,3811,8,373,10,373,12,373,3814,9,373,1,373,1,373,1,374,1,374,1,375,1,375,1,375,1,375,1,375,3,375,3825,8,375,1,375,1,375,1,375,1,375,1,375,3,375,3832,8,375,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,377,3,377,3842,8,377,1,378,3,378,3845,8,378,1,379,1,379,1,379,3,379,3850,8,379,1,379,1,379,1,380,1,380,1,380,1,380,1,381,1,381,1,381,1,381,1,382,1,382,1,382,1,383,1,383,3,383,3867,8,383,3,383,3869,8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,384,1,384,1,384,1,384,1,384,1,384,1,385,1,385,3,385,3886,8,385,1,385,1,385,5,385,3890,8,385,10,385,12,385,3893,9,385,1,385,3,385,3896,8,385,1,386,1,386,3,386,3900,8,386,1,386,1,386,5,386,3904,8,386,10,386,12,386,3907,9,386,1,386,1,386,1,386,5,386,3912,8,386,10,386,12,386,3915,9,386,1,386,1,386,3,386,3919,8,386,1,387,1,387,1,387,1,387,1,388,1,388,1,388,1,388,1,389,1,389,1,389,1,389,1,390,1,390,1,390,1,390,3,390,3937,8,390,1,390,1,390,1,391,1,391,1,391,1,391,1,391,1,391,1,391,3,391,3948,8,391,1,392,1,392,1,392,1,393,1,393,1,393,1,394,1,394,1,394,1,395,1,395,1,395,1,396,1,396,1,396,1,397,1,397,1,397,1,398,1,398,1,398,1,398,1,398,1,399,1,399,3,399,3975,8,399,1,399,1,399,5,399,3979,8,399,10,399,12,399,3982,9,399,1,399,3,399,3985,8,399,1,400,1,400,1,400,1,400,3,400,3991,8,400,1,400,1,400,3,400,3995,8,400,3,400,3997,8,400,1,400,3,400,4e3,8,400,1,400,1,400,1,401,1,401,3,401,4006,8,401,1,401,3,401,4009,8,401,1,401,1,401,1,401,1,401,1,401,3,401,4016,8,401,1,401,3,401,4019,8,401,1,401,3,401,4022,8,401,1,401,1,401,1,401,1,401,1,402,1,402,1,402,1,402,1,402,3,402,4033,8,402,1,402,3,402,4036,8,402,1,402,3,402,4039,8,402,1,402,1,402,1,402,3,402,4044,8,402,1,402,3,402,4047,8,402,1,402,1,402,3,402,4051,8,402,3,402,4053,8,402,1,402,1,402,1,402,1,402,1,403,1,403,1,403,1,404,1,404,1,405,1,405,1,405,1,406,1,406,1,406,1,407,1,407,1,407,1,407,1,407,3,407,4075,8,407,1,408,1,408,1,408,5,408,4080,8,408,10,408,12,408,4083,9,408,1,408,3,408,4086,8,408,1,409,1,409,1,409,5,409,4091,8,409,10,409,12,409,4094,9,409,1,409,3,409,4097,8,409,1,410,1,410,1,410,5,410,4102,8,410,10,410,12,410,4105,9,410,1,410,3,410,4108,8,410,1,411,1,411,1,411,5,411,4113,8,411,10,411,12,411,4116,9,411,1,411,3,411,4119,8,411,1,412,1,412,1,413,1,413,1,413,1,414,1,414,1,415,1,415,1,415,1,415,1,415,1,415,1,416,1,416,1,416,1,416,1,416,1,417,1,417,1,417,1,417,1,417,3,417,4144,8,417,1,418,5,418,4147,8,418,10,418,12,418,4150,9,418,1,418,3,418,4153,8,418,1,419,1,419,3,419,4157,8,419,1,420,1,420,1,420,1,420,1,421,1,421,1,421,1,421,1,421,1,421,1,422,1,422,1,422,1,422,1,422,1,423,1,423,1,423,3,423,4177,8,423,1,423,1,423,3,423,4181,8,423,1,423,1,423,3,423,4185,8,423,1,423,1,423,1,424,3,424,4190,8,424,1,424,3,424,4193,8,424,1,425,1,425,1,425,1,425,1,425,1,425,1,426,1,426,1,426,5,426,4204,8,426,10,426,12,426,4207,9,426,1,426,3,426,4210,8,426,1,427,1,427,1,427,1,427,1,427,1,427,1,427,3,427,4219,8,427,1,428,1,428,1,428,1,429,1,429,5,429,4226,8,429,10,429,12,429,4229,9,429,1,429,1,429,1,430,1,430,1,430,1,430,1,431,1,431,1,432,1,432,3,432,4241,8,432,1,432,1,432,1,432,5,432,4246,8,432,10,432,12,432,4249,9,432,1,432,1,432,4,432,4253,8,432,11,432,12,432,4254,3,432,4257,8,432,1,432,1,432,1,432,3,432,4262,8,432,1,433,1,433,1,433,1,433,1,434,1,434,3,434,4270,8,434,1,434,1,434,1,434,5,434,4275,8,434,10,434,12,434,4278,9,434,1,434,1,434,4,434,4282,8,434,11,434,12,434,4283,3,434,4286,8,434,1,434,1,434,1,434,3,434,4291,8,434,1,435,1,435,1,435,1,436,1,436,5,436,4298,8,436,10,436,12,436,4301,9,436,1,436,1,436,1,437,1,437,1,437,1,438,1,438,5,438,4310,8,438,10,438,12,438,4313,9,438,1,438,1,438,1,439,1,439,1,439,1,439,1,439,1,440,1,440,1,440,3,440,4325,8,440,3,440,4327,8,440,1,440,1,440,1,440,3,440,4332,8,440,1,440,1,440,3,440,4336,8,440,3,440,4338,8,440,1,440,3,440,4341,8,440,1,440,1,440,3,440,4345,8,440,1,440,1,440,1,441,1,441,1,442,1,442,1,443,1,443,1,444,1,444,1,445,1,445,1,445,1,445,1,445,1,445,1,446,1,446,1,446,1,446,1,446,1,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448,1,448,1,448,1,448,1,449,1,449,1,449,5,449,4382,8,449,10,449,12,449,4385,9,449,1,449,3,449,4388,8,449,1,449,3,449,4391,8,449,1,450,1,450,1,450,1,450,1,450,3,450,4398,8,450,1,451,1,451,1,451,1,451,1,452,5,452,4405,8,452,10,452,12,452,4408,9,452,1,452,1,452,1,452,1,453,1,453,1,453,1,453,1,453,1,453,1,454,1,454,1,454,1,454,1,454,1,455,1,455,1,455,1,455,1,455,1,455,1,456,1,456,1,456,1,456,1,456,1,457,1,457,1,457,1,457,1,458,1,458,5,458,4441,8,458,10,458,12,458,4444,9,458,1,458,1,458,1,458,5,458,4449,8,458,10,458,12,458,4452,9,458,1,458,1,458,4,458,4456,8,458,11,458,12,458,4457,3,458,4460,8,458,1,458,1,458,1,458,3,458,4465,8,458,1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,460,1,460,1,460,1,460,1,460,1,460,1,461,1,461,1,461,1,461,3,461,4484,8,461,1,461,1,461,1,461,3,461,4489,8,461,3,461,4491,8,461,1,461,3,461,4494,8,461,1,461,1,461,1,462,1,462,1,462,1,462,1,462,1,462,1,463,1,463,1,463,5,463,4507,8,463,10,463,12,463,4510,9,463,1,463,3,463,4513,8,463,1,464,1,464,1,464,3,464,4518,8,464,1,465,1,465,1,465,1,465,1,466,1,466,3,466,4526,8,466,1,466,1,466,1,466,5,466,4531,8,466,10,466,12,466,4534,9,466,1,466,1,466,4,466,4538,8,466,11,466,12,466,4539,3,466,4542,8,466,1,466,3,466,4545,8,466,1,467,1,467,1,467,3,467,4550,8,467,1,467,3,467,4553,8,467,1,467,1,467,1,468,1,468,1,468,5,468,4560,8,468,10,468,12,468,4563,9,468,1,468,3,468,4566,8,468,1,469,1,469,1,469,1,469,3,469,4572,8,469,1,470,1,470,1,470,3,470,4577,8,470,1,470,1,470,1,471,1,471,1,472,1,472,1,473,1,473,1,473,1,473,1,473,1,473,1,474,1,474,1,474,1,474,1,474,1,475,1,475,1,475,1,475,1,475,1,476,1,476,1,476,1,476,1,477,3,477,4606,8,477,1,477,5,477,4609,8,477,10,477,12,477,4612,9,477,1,477,1,477,1,477,1,477,1,478,1,478,1,479,5,479,4621,8,479,10,479,12,479,4624,9,479,1,479,1,479,1,479,1,479,1,479,1,479,5,479,4632,8,479,10,479,12,479,4635,9,479,3,479,4637,8,479,1,479,1,479,1,480,3,480,4642,8,480,1,480,1,480,1,480,3,480,4647,8,480,3,480,4649,8,480,1,480,1,480,1,481,1,481,1,482,3,482,4656,8,482,1,482,3,482,4659,8,482,1,482,1,482,3,482,4663,8,482,1,482,3,482,4666,8,482,1,482,1,482,1,483,3,483,4671,8,483,1,483,4,483,4674,8,483,11,483,12,483,4675,1,483,1,483,1,483,1,484,1,484,4,484,4683,8,484,11,484,12,484,4684,1,484,1,484,1,485,1,485,3,485,4691,8,485,1,486,1,486,1,486,1,486,1,486,3,486,4698,8,486,1,487,3,487,4701,8,487,1,487,3,487,4704,8,487,1,488,1,488,1,489,1,489,1,490,1,490,1,491,1,491,1,492,1,492,1,493,1,493,1,494,1,494,1,494,0,1,0,495,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,0,27,4,0,107,107,199,199,201,201,217,217,2,0,191,191,210,210,3,0,174,174,177,178,187,187,4,0,186,186,189,189,206,206,208,208,2,0,199,199,201,201,3,0,194,194,198,198,203,203,2,0,179,179,213,213,3,0,76,76,90,90,210,210,2,0,64,64,156,156,1,0,218,219,1,0,122,124,2,0,139,139,185,185,2,0,34,34,217,217,2,0,31,31,120,120,2,0,39,39,163,163,3,0,80,80,83,83,114,114,2,0,148,148,185,185,2,0,128,128,175,175,2,0,42,42,188,188,2,0,125,125,176,176,1,0,221,222,2,0,184,184,207,207,2,0,102,102,210,210,2,0,2,2,165,165,2,0,137,137,153,153,2,0,6,6,18,18,2,0,17,17,132,132,4968,0,1005,1,0,0,0,2,1091,1,0,0,0,4,1093,1,0,0,0,6,1116,1,0,0,0,8,1121,1,0,0,0,10,1123,1,0,0,0,12,1125,1,0,0,0,14,1129,1,0,0,0,16,1132,1,0,0,0,18,1136,1,0,0,0,20,1140,1,0,0,0,22,1147,1,0,0,0,24,1155,1,0,0,0,26,1163,1,0,0,0,28,1172,1,0,0,0,30,1174,1,0,0,0,32,1176,1,0,0,0,34,1178,1,0,0,0,36,1180,1,0,0,0,38,1182,1,0,0,0,40,1184,1,0,0,0,42,1186,1,0,0,0,44,1188,1,0,0,0,46,1200,1,0,0,0,48,1219,1,0,0,0,50,1223,1,0,0,0,52,1227,1,0,0,0,54,1271,1,0,0,0,56,1273,1,0,0,0,58,1275,1,0,0,0,60,1281,1,0,0,0,62,1298,1,0,0,0,64,1306,1,0,0,0,66,1320,1,0,0,0,68,1329,1,0,0,0,70,1337,1,0,0,0,72,1343,1,0,0,0,74,1356,1,0,0,0,76,1361,1,0,0,0,78,1364,1,0,0,0,80,1366,1,0,0,0,82,1370,1,0,0,0,84,1372,1,0,0,0,86,1375,1,0,0,0,88,1378,1,0,0,0,90,1395,1,0,0,0,92,1408,1,0,0,0,94,1419,1,0,0,0,96,1421,1,0,0,0,98,1434,1,0,0,0,100,1448,1,0,0,0,102,1450,1,0,0,0,104,1456,1,0,0,0,106,1484,1,0,0,0,108,1496,1,0,0,0,110,1498,1,0,0,0,112,1504,1,0,0,0,114,1513,1,0,0,0,116,1533,1,0,0,0,118,1542,1,0,0,0,120,1549,1,0,0,0,122,1551,1,0,0,0,124,1561,1,0,0,0,126,1570,1,0,0,0,128,1579,1,0,0,0,130,1597,1,0,0,0,132,1603,1,0,0,0,134,1609,1,0,0,0,136,1617,1,0,0,0,138,1619,1,0,0,0,140,1627,1,0,0,0,142,1639,1,0,0,0,144,1661,1,0,0,0,146,1673,1,0,0,0,148,1695,1,0,0,0,150,1703,1,0,0,0,152,1711,1,0,0,0,154,1719,1,0,0,0,156,1729,1,0,0,0,158,1731,1,0,0,0,160,1735,1,0,0,0,162,1738,1,0,0,0,164,1744,1,0,0,0,166,1762,1,0,0,0,168,1775,1,0,0,0,170,1783,1,0,0,0,172,1799,1,0,0,0,174,1807,1,0,0,0,176,1812,1,0,0,0,178,1830,1,0,0,0,180,1838,1,0,0,0,182,1847,1,0,0,0,184,1849,1,0,0,0,186,1852,1,0,0,0,188,1876,1,0,0,0,190,1882,1,0,0,0,192,1884,1,0,0,0,194,1893,1,0,0,0,196,1897,1,0,0,0,198,1928,1,0,0,0,200,1951,1,0,0,0,202,1958,1,0,0,0,204,1960,1,0,0,0,206,1973,1,0,0,0,208,1977,1,0,0,0,210,1985,1,0,0,0,212,1988,1,0,0,0,214,1991,1,0,0,0,216,1994,1,0,0,0,218,2002,1,0,0,0,220,2023,1,0,0,0,222,2025,1,0,0,0,224,2037,1,0,0,0,226,2045,1,0,0,0,228,2053,1,0,0,0,230,2061,1,0,0,0,232,2073,1,0,0,0,234,2081,1,0,0,0,236,2097,1,0,0,0,238,2099,1,0,0,0,240,2106,1,0,0,0,242,2112,1,0,0,0,244,2134,1,0,0,0,246,2142,1,0,0,0,248,2154,1,0,0,0,250,2156,1,0,0,0,252,2161,1,0,0,0,254,2166,1,0,0,0,256,2171,1,0,0,0,258,2176,1,0,0,0,260,2182,1,0,0,0,262,2197,1,0,0,0,264,2207,1,0,0,0,266,2214,1,0,0,0,268,2229,1,0,0,0,270,2232,1,0,0,0,272,2241,1,0,0,0,274,2243,1,0,0,0,276,2245,1,0,0,0,278,2270,1,0,0,0,280,2272,1,0,0,0,282,2297,1,0,0,0,284,2299,1,0,0,0,286,2304,1,0,0,0,288,2312,1,0,0,0,290,2322,1,0,0,0,292,2328,1,0,0,0,294,2334,1,0,0,0,296,2338,1,0,0,0,298,2341,1,0,0,0,300,2349,1,0,0,0,302,2354,1,0,0,0,304,2362,1,0,0,0,306,2373,1,0,0,0,308,2375,1,0,0,0,310,2377,1,0,0,0,312,2379,1,0,0,0,314,2381,1,0,0,0,316,2383,1,0,0,0,318,2385,1,0,0,0,320,2389,1,0,0,0,322,2391,1,0,0,0,324,2393,1,0,0,0,326,2395,1,0,0,0,328,2397,1,0,0,0,330,2399,1,0,0,0,332,2401,1,0,0,0,334,2403,1,0,0,0,336,2405,1,0,0,0,338,2407,1,0,0,0,340,2409,1,0,0,0,342,2419,1,0,0,0,344,2421,1,0,0,0,346,2423,1,0,0,0,348,2425,1,0,0,0,350,2427,1,0,0,0,352,2429,1,0,0,0,354,2431,1,0,0,0,356,2439,1,0,0,0,358,2441,1,0,0,0,360,2443,1,0,0,0,362,2445,1,0,0,0,364,2447,1,0,0,0,366,2451,1,0,0,0,368,2459,1,0,0,0,370,2461,1,0,0,0,372,2466,1,0,0,0,374,2471,1,0,0,0,376,2516,1,0,0,0,378,2518,1,0,0,0,380,2539,1,0,0,0,382,2561,1,0,0,0,384,2563,1,0,0,0,386,2565,1,0,0,0,388,2573,1,0,0,0,390,2575,1,0,0,0,392,2577,1,0,0,0,394,2579,1,0,0,0,396,2587,1,0,0,0,398,2593,1,0,0,0,400,2595,1,0,0,0,402,2602,1,0,0,0,404,2609,1,0,0,0,406,2611,1,0,0,0,408,2613,1,0,0,0,410,2624,1,0,0,0,412,2626,1,0,0,0,414,2635,1,0,0,0,416,2641,1,0,0,0,418,2643,1,0,0,0,420,2648,1,0,0,0,422,2674,1,0,0,0,424,2698,1,0,0,0,426,2704,1,0,0,0,428,2706,1,0,0,0,430,2709,1,0,0,0,432,2726,1,0,0,0,434,2733,1,0,0,0,436,2745,1,0,0,0,438,2758,1,0,0,0,440,2760,1,0,0,0,442,2769,1,0,0,0,444,2788,1,0,0,0,446,2794,1,0,0,0,448,2796,1,0,0,0,450,2831,1,0,0,0,452,2835,1,0,0,0,454,2837,1,0,0,0,456,2839,1,0,0,0,458,2842,1,0,0,0,460,2850,1,0,0,0,462,2854,1,0,0,0,464,2868,1,0,0,0,466,2880,1,0,0,0,468,2900,1,0,0,0,470,2902,1,0,0,0,472,2905,1,0,0,0,474,2909,1,0,0,0,476,2912,1,0,0,0,478,2915,1,0,0,0,480,2918,1,0,0,0,482,2922,1,0,0,0,484,2933,1,0,0,0,486,2937,1,0,0,0,488,2940,1,0,0,0,490,2944,1,0,0,0,492,2946,1,0,0,0,494,2954,1,0,0,0,496,2963,1,0,0,0,498,2966,1,0,0,0,500,2970,1,0,0,0,502,2972,1,0,0,0,504,2977,1,0,0,0,506,2982,1,0,0,0,508,2986,1,0,0,0,510,3003,1,0,0,0,512,3007,1,0,0,0,514,3024,1,0,0,0,516,3042,1,0,0,0,518,3065,1,0,0,0,520,3067,1,0,0,0,522,3076,1,0,0,0,524,3081,1,0,0,0,526,3088,1,0,0,0,528,3106,1,0,0,0,530,3108,1,0,0,0,532,3112,1,0,0,0,534,3116,1,0,0,0,536,3121,1,0,0,0,538,3133,1,0,0,0,540,3139,1,0,0,0,542,3152,1,0,0,0,544,3154,1,0,0,0,546,3167,1,0,0,0,548,3171,1,0,0,0,550,3181,1,0,0,0,552,3194,1,0,0,0,554,3196,1,0,0,0,556,3210,1,0,0,0,558,3213,1,0,0,0,560,3215,1,0,0,0,562,3218,1,0,0,0,564,3220,1,0,0,0,566,3225,1,0,0,0,568,3229,1,0,0,0,570,3234,1,0,0,0,572,3238,1,0,0,0,574,3244,1,0,0,0,576,3246,1,0,0,0,578,3248,1,0,0,0,580,3252,1,0,0,0,582,3255,1,0,0,0,584,3260,1,0,0,0,586,3280,1,0,0,0,588,3282,1,0,0,0,590,3286,1,0,0,0,592,3299,1,0,0,0,594,3312,1,0,0,0,596,3325,1,0,0,0,598,3340,1,0,0,0,600,3351,1,0,0,0,602,3353,1,0,0,0,604,3361,1,0,0,0,606,3363,1,0,0,0,608,3369,1,0,0,0,610,3371,1,0,0,0,612,3374,1,0,0,0,614,3390,1,0,0,0,616,3394,1,0,0,0,618,3396,1,0,0,0,620,3400,1,0,0,0,622,3413,1,0,0,0,624,3416,1,0,0,0,626,3425,1,0,0,0,628,3430,1,0,0,0,630,3444,1,0,0,0,632,3446,1,0,0,0,634,3451,1,0,0,0,636,3477,1,0,0,0,638,3479,1,0,0,0,640,3481,1,0,0,0,642,3483,1,0,0,0,644,3488,1,0,0,0,646,3494,1,0,0,0,648,3496,1,0,0,0,650,3500,1,0,0,0,652,3505,1,0,0,0,654,3512,1,0,0,0,656,3527,1,0,0,0,658,3548,1,0,0,0,660,3559,1,0,0,0,662,3563,1,0,0,0,664,3565,1,0,0,0,666,3570,1,0,0,0,668,3573,1,0,0,0,670,3576,1,0,0,0,672,3579,1,0,0,0,674,3585,1,0,0,0,676,3590,1,0,0,0,678,3603,1,0,0,0,680,3616,1,0,0,0,682,3618,1,0,0,0,684,3622,1,0,0,0,686,3630,1,0,0,0,688,3632,1,0,0,0,690,3645,1,0,0,0,692,3652,1,0,0,0,694,3659,1,0,0,0,696,3666,1,0,0,0,698,3673,1,0,0,0,700,3678,1,0,0,0,702,3683,1,0,0,0,704,3688,1,0,0,0,706,3698,1,0,0,0,708,3700,1,0,0,0,710,3702,1,0,0,0,712,3708,1,0,0,0,714,3710,1,0,0,0,716,3728,1,0,0,0,718,3745,1,0,0,0,720,3747,1,0,0,0,722,3749,1,0,0,0,724,3751,1,0,0,0,726,3753,1,0,0,0,728,3755,1,0,0,0,730,3760,1,0,0,0,732,3768,1,0,0,0,734,3773,1,0,0,0,736,3775,1,0,0,0,738,3777,1,0,0,0,740,3787,1,0,0,0,742,3798,1,0,0,0,744,3800,1,0,0,0,746,3806,1,0,0,0,748,3817,1,0,0,0,750,3819,1,0,0,0,752,3833,1,0,0,0,754,3841,1,0,0,0,756,3844,1,0,0,0,758,3849,1,0,0,0,760,3853,1,0,0,0,762,3857,1,0,0,0,764,3861,1,0,0,0,766,3868,1,0,0,0,768,3877,1,0,0,0,770,3895,1,0,0,0,772,3918,1,0,0,0,774,3920,1,0,0,0,776,3924,1,0,0,0,778,3928,1,0,0,0,780,3932,1,0,0,0,782,3947,1,0,0,0,784,3949,1,0,0,0,786,3952,1,0,0,0,788,3955,1,0,0,0,790,3958,1,0,0,0,792,3961,1,0,0,0,794,3964,1,0,0,0,796,3967,1,0,0,0,798,3984,1,0,0,0,800,3986,1,0,0,0,802,4003,1,0,0,0,804,4027,1,0,0,0,806,4058,1,0,0,0,808,4061,1,0,0,0,810,4063,1,0,0,0,812,4066,1,0,0,0,814,4074,1,0,0,0,816,4076,1,0,0,0,818,4087,1,0,0,0,820,4098,1,0,0,0,822,4109,1,0,0,0,824,4120,1,0,0,0,826,4122,1,0,0,0,828,4125,1,0,0,0,830,4127,1,0,0,0,832,4133,1,0,0,0,834,4143,1,0,0,0,836,4148,1,0,0,0,838,4156,1,0,0,0,840,4158,1,0,0,0,842,4162,1,0,0,0,844,4168,1,0,0,0,846,4173,1,0,0,0,848,4189,1,0,0,0,850,4194,1,0,0,0,852,4209,1,0,0,0,854,4218,1,0,0,0,856,4220,1,0,0,0,858,4223,1,0,0,0,860,4232,1,0,0,0,862,4236,1,0,0,0,864,4261,1,0,0,0,866,4263,1,0,0,0,868,4290,1,0,0,0,870,4292,1,0,0,0,872,4295,1,0,0,0,874,4304,1,0,0,0,876,4307,1,0,0,0,878,4316,1,0,0,0,880,4321,1,0,0,0,882,4348,1,0,0,0,884,4350,1,0,0,0,886,4352,1,0,0,0,888,4354,1,0,0,0,890,4356,1,0,0,0,892,4362,1,0,0,0,894,4367,1,0,0,0,896,4373,1,0,0,0,898,4390,1,0,0,0,900,4397,1,0,0,0,902,4399,1,0,0,0,904,4406,1,0,0,0,906,4412,1,0,0,0,908,4418,1,0,0,0,910,4423,1,0,0,0,912,4429,1,0,0,0,914,4434,1,0,0,0,916,4464,1,0,0,0,918,4466,1,0,0,0,920,4473,1,0,0,0,922,4479,1,0,0,0,924,4497,1,0,0,0,926,4512,1,0,0,0,928,4517,1,0,0,0,930,4519,1,0,0,0,932,4544,1,0,0,0,934,4546,1,0,0,0,936,4565,1,0,0,0,938,4571,1,0,0,0,940,4573,1,0,0,0,942,4580,1,0,0,0,944,4582,1,0,0,0,946,4584,1,0,0,0,948,4590,1,0,0,0,950,4595,1,0,0,0,952,4600,1,0,0,0,954,4605,1,0,0,0,956,4617,1,0,0,0,958,4622,1,0,0,0,960,4648,1,0,0,0,962,4652,1,0,0,0,964,4655,1,0,0,0,966,4670,1,0,0,0,968,4680,1,0,0,0,970,4690,1,0,0,0,972,4692,1,0,0,0,974,4700,1,0,0,0,976,4705,1,0,0,0,978,4707,1,0,0,0,980,4709,1,0,0,0,982,4711,1,0,0,0,984,4713,1,0,0,0,986,4715,1,0,0,0,988,4717,1,0,0,0,990,991,6,0,-1,0,991,992,5,77,0,0,992,993,3,0,0,0,993,994,5,209,0,0,994,995,3,0,0,0,995,996,5,55,0,0,996,997,3,0,0,28,997,1006,1,0,0,0,998,999,7,0,0,0,999,1006,3,0,0,14,1e3,1001,7,1,0,0,1001,1006,3,2,1,0,1002,1003,5,8,0,0,1003,1006,3,2,1,0,1004,1006,3,6,3,0,1005,990,1,0,0,0,1005,998,1,0,0,0,1005,1e3,1,0,0,0,1005,1002,1,0,0,0,1005,1004,1,0,0,0,1006,1088,1,0,0,0,1007,1008,10,27,0,0,1008,1009,5,190,0,0,1009,1087,3,0,0,28,1010,1011,10,26,0,0,1011,1012,5,78,0,0,1012,1087,3,0,0,27,1013,1014,10,25,0,0,1014,1015,5,112,0,0,1015,1087,3,0,0,26,1016,1017,10,24,0,0,1017,1018,5,12,0,0,1018,1087,3,0,0,25,1019,1020,10,23,0,0,1020,1021,5,173,0,0,1021,1087,3,0,0,24,1022,1023,10,22,0,0,1023,1024,5,215,0,0,1024,1087,3,0,0,23,1025,1026,10,21,0,0,1026,1027,5,195,0,0,1027,1087,3,0,0,22,1028,1029,10,20,0,0,1029,1030,7,2,0,0,1030,1087,3,0,0,21,1031,1032,10,19,0,0,1032,1033,7,3,0,0,1033,1087,3,0,0,20,1034,1035,10,18,0,0,1035,1036,5,181,0,0,1036,1087,3,0,0,19,1037,1038,10,17,0,0,1038,1039,7,4,0,0,1039,1087,3,0,0,18,1040,1041,10,16,0,0,1041,1042,7,5,0,0,1042,1087,3,0,0,17,1043,1044,10,15,0,0,1044,1045,7,6,0,0,1045,1087,3,0,0,15,1046,1047,10,12,0,0,1047,1048,7,7,0,0,1048,1087,3,2,1,0,1049,1050,10,11,0,0,1050,1051,5,13,0,0,1051,1087,3,2,1,0,1052,1053,10,10,0,0,1053,1054,5,191,0,0,1054,1087,3,2,1,0,1055,1056,10,9,0,0,1056,1057,5,100,0,0,1057,1087,3,2,1,0,1058,1059,10,8,0,0,1059,1061,5,211,0,0,1060,1062,3,4,2,0,1061,1060,1,0,0,0,1061,1062,1,0,0,0,1062,1063,1,0,0,0,1063,1087,5,212,0,0,1064,1065,10,7,0,0,1065,1066,5,192,0,0,1066,1068,5,196,0,0,1067,1069,3,4,2,0,1068,1067,1,0,0,0,1068,1069,1,0,0,0,1069,1070,1,0,0,0,1070,1087,5,197,0,0,1071,1072,10,6,0,0,1072,1087,3,20,10,0,1073,1074,10,5,0,0,1074,1075,5,202,0,0,1075,1087,3,90,45,0,1076,1077,10,4,0,0,1077,1078,5,182,0,0,1078,1087,3,18,9,0,1079,1080,10,3,0,0,1080,1081,5,180,0,0,1081,1084,3,90,45,0,1082,1085,3,18,9,0,1083,1085,3,20,10,0,1084,1082,1,0,0,0,1084,1083,1,0,0,0,1085,1087,1,0,0,0,1086,1007,1,0,0,0,1086,1010,1,0,0,0,1086,1013,1,0,0,0,1086,1016,1,0,0,0,1086,1019,1,0,0,0,1086,1022,1,0,0,0,1086,1025,1,0,0,0,1086,1028,1,0,0,0,1086,1031,1,0,0,0,1086,1034,1,0,0,0,1086,1037,1,0,0,0,1086,1040,1,0,0,0,1086,1043,1,0,0,0,1086,1046,1,0,0,0,1086,1049,1,0,0,0,1086,1052,1,0,0,0,1086,1055,1,0,0,0,1086,1058,1,0,0,0,1086,1064,1,0,0,0,1086,1071,1,0,0,0,1086,1073,1,0,0,0,1086,1076,1,0,0,0,1086,1079,1,0,0,0,1087,1090,1,0,0,0,1088,1086,1,0,0,0,1088,1089,1,0,0,0,1089,1,1,0,0,0,1090,1088,1,0,0,0,1091,1092,3,90,45,0,1092,3,1,0,0,0,1093,1098,3,0,0,0,1094,1095,5,200,0,0,1095,1097,3,0,0,0,1096,1094,1,0,0,0,1097,1100,1,0,0,0,1098,1096,1,0,0,0,1098,1099,1,0,0,0,1099,5,1,0,0,0,1100,1098,1,0,0,0,1101,1117,3,8,4,0,1102,1117,3,28,14,0,1103,1107,3,90,45,0,1104,1108,3,20,10,0,1105,1106,5,202,0,0,1106,1108,5,102,0,0,1107,1104,1,0,0,0,1107,1105,1,0,0,0,1107,1108,1,0,0,0,1108,1117,1,0,0,0,1109,1117,3,16,8,0,1110,1117,3,18,9,0,1111,1113,5,196,0,0,1112,1114,3,4,2,0,1113,1112,1,0,0,0,1113,1114,1,0,0,0,1114,1115,1,0,0,0,1115,1117,5,197,0,0,1116,1101,1,0,0,0,1116,1102,1,0,0,0,1116,1103,1,0,0,0,1116,1109,1,0,0,0,1116,1110,1,0,0,0,1116,1111,1,0,0,0,1117,7,1,0,0,0,1118,1122,5,108,0,0,1119,1120,5,196,0,0,1120,1122,5,197,0,0,1121,1118,1,0,0,0,1121,1119,1,0,0,0,1122,9,1,0,0,0,1123,1124,3,90,45,0,1124,11,1,0,0,0,1125,1126,3,90,45,0,1126,1127,5,202,0,0,1127,1128,5,102,0,0,1128,13,1,0,0,0,1129,1130,3,90,45,0,1130,1131,3,20,10,0,1131,15,1,0,0,0,1132,1133,5,105,0,0,1133,1134,3,90,45,0,1134,1135,3,20,10,0,1135,17,1,0,0,0,1136,1137,5,214,0,0,1137,1138,3,292,146,0,1138,1139,5,216,0,0,1139,19,1,0,0,0,1140,1143,5,196,0,0,1141,1144,3,22,11,0,1142,1144,3,24,12,0,1143,1141,1,0,0,0,1143,1142,1,0,0,0,1143,1144,1,0,0,0,1144,1145,1,0,0,0,1145,1146,5,197,0,0,1146,21,1,0,0,0,1147,1152,3,0,0,0,1148,1149,5,200,0,0,1149,1151,3,0,0,0,1150,1148,1,0,0,0,1151,1154,1,0,0,0,1152,1150,1,0,0,0,1152,1153,1,0,0,0,1153,23,1,0,0,0,1154,1152,1,0,0,0,1155,1160,3,26,13,0,1156,1157,5,200,0,0,1157,1159,3,26,13,0,1158,1156,1,0,0,0,1159,1162,1,0,0,0,1160,1158,1,0,0,0,1160,1161,1,0,0,0,1161,25,1,0,0,0,1162,1160,1,0,0,0,1163,1164,3,90,45,0,1164,1165,5,207,0,0,1165,1166,3,0,0,0,1166,27,1,0,0,0,1167,1173,3,30,15,0,1168,1173,3,32,16,0,1169,1173,3,34,17,0,1170,1173,3,36,18,0,1171,1173,3,38,19,0,1172,1167,1,0,0,0,1172,1168,1,0,0,0,1172,1169,1,0,0,0,1172,1170,1,0,0,0,1172,1171,1,0,0,0,1173,29,1,0,0,0,1174,1175,7,8,0,0,1175,31,1,0,0,0,1176,1177,5,220,0,0,1177,33,1,0,0,0,1178,1179,5,221,0,0,1179,35,1,0,0,0,1180,1181,5,222,0,0,1181,37,1,0,0,0,1182,1183,5,198,0,0,1183,39,1,0,0,0,1184,1185,3,0,0,0,1185,41,1,0,0,0,1186,1187,3,0,0,0,1187,43,1,0,0,0,1188,1189,7,9,0,0,1189,45,1,0,0,0,1190,1191,5,206,0,0,1191,1192,3,44,22,0,1192,1193,5,208,0,0,1193,1194,3,44,22,0,1194,1201,1,0,0,0,1195,1196,5,206,0,0,1196,1197,3,44,22,0,1197,1198,5,208,0,0,1198,1201,1,0,0,0,1199,1201,3,44,22,0,1200,1190,1,0,0,0,1200,1195,1,0,0,0,1200,1199,1,0,0,0,1201,47,1,0,0,0,1202,1220,5,205,0,0,1203,1207,5,214,0,0,1204,1206,3,50,25,0,1205,1204,1,0,0,0,1206,1209,1,0,0,0,1207,1205,1,0,0,0,1207,1208,1,0,0,0,1208,1210,1,0,0,0,1209,1207,1,0,0,0,1210,1220,5,216,0,0,1211,1215,5,214,0,0,1212,1214,3,58,29,0,1213,1212,1,0,0,0,1214,1217,1,0,0,0,1215,1213,1,0,0,0,1215,1216,1,0,0,0,1216,1218,1,0,0,0,1217,1215,1,0,0,0,1218,1220,5,216,0,0,1219,1202,1,0,0,0,1219,1203,1,0,0,0,1219,1211,1,0,0,0,1220,49,1,0,0,0,1221,1224,3,52,26,0,1222,1224,3,58,29,0,1223,1221,1,0,0,0,1223,1222,1,0,0,0,1224,51,1,0,0,0,1225,1228,3,106,53,0,1226,1228,3,108,54,0,1227,1225,1,0,0,0,1227,1226,1,0,0,0,1228,53,1,0,0,0,1229,1231,3,414,207,0,1230,1229,1,0,0,0,1231,1234,1,0,0,0,1232,1230,1,0,0,0,1232,1233,1,0,0,0,1233,1235,1,0,0,0,1234,1232,1,0,0,0,1235,1240,5,48,0,0,1236,1238,3,46,23,0,1237,1236,1,0,0,0,1237,1238,1,0,0,0,1238,1239,1,0,0,0,1239,1241,5,74,0,0,1240,1237,1,0,0,0,1240,1241,1,0,0,0,1241,1242,1,0,0,0,1242,1247,3,90,45,0,1243,1244,5,200,0,0,1244,1246,3,90,45,0,1245,1243,1,0,0,0,1246,1249,1,0,0,0,1247,1245,1,0,0,0,1247,1248,1,0,0,0,1248,1250,1,0,0,0,1249,1247,1,0,0,0,1250,1251,5,154,0,0,1251,1256,3,90,45,0,1252,1253,5,200,0,0,1253,1255,3,90,45,0,1254,1252,1,0,0,0,1255,1258,1,0,0,0,1256,1254,1,0,0,0,1256,1257,1,0,0,0,1257,1259,1,0,0,0,1258,1256,1,0,0,0,1259,1260,3,48,24,0,1260,1272,1,0,0,0,1261,1263,3,414,207,0,1262,1261,1,0,0,0,1263,1266,1,0,0,0,1264,1262,1,0,0,0,1264,1265,1,0,0,0,1265,1267,1,0,0,0,1266,1264,1,0,0,0,1267,1268,5,48,0,0,1268,1269,3,442,221,0,1269,1270,3,48,24,0,1270,1272,1,0,0,0,1271,1232,1,0,0,0,1271,1264,1,0,0,0,1272,55,1,0,0,0,1273,1274,3,90,45,0,1274,57,1,0,0,0,1275,1276,3,60,30,0,1276,59,1,0,0,0,1277,1282,3,62,31,0,1278,1282,3,64,32,0,1279,1282,3,66,33,0,1280,1282,3,420,210,0,1281,1277,1,0,0,0,1281,1278,1,0,0,0,1281,1279,1,0,0,0,1281,1280,1,0,0,0,1282,61,1,0,0,0,1283,1285,5,30,0,0,1284,1286,3,46,23,0,1285,1284,1,0,0,0,1285,1286,1,0,0,0,1286,1296,1,0,0,0,1287,1288,5,1,0,0,1288,1293,3,56,28,0,1289,1290,5,200,0,0,1290,1292,3,56,28,0,1291,1289,1,0,0,0,1292,1295,1,0,0,0,1293,1291,1,0,0,0,1293,1294,1,0,0,0,1294,1297,1,0,0,0,1295,1293,1,0,0,0,1296,1287,1,0,0,0,1296,1297,1,0,0,0,1297,1299,1,0,0,0,1298,1283,1,0,0,0,1298,1299,1,0,0,0,1299,1302,1,0,0,0,1300,1301,5,95,0,0,1301,1303,5,220,0,0,1302,1300,1,0,0,0,1302,1303,1,0,0,0,1303,1304,1,0,0,0,1304,1305,5,223,0,0,1305,63,1,0,0,0,1306,1308,5,54,0,0,1307,1309,3,46,23,0,1308,1307,1,0,0,0,1308,1309,1,0,0,0,1309,1312,1,0,0,0,1310,1311,5,95,0,0,1311,1313,5,220,0,0,1312,1310,1,0,0,0,1312,1313,1,0,0,0,1313,1314,1,0,0,0,1314,1315,5,223,0,0,1315,65,1,0,0,0,1316,1318,5,131,0,0,1317,1319,3,46,23,0,1318,1317,1,0,0,0,1318,1319,1,0,0,0,1319,1321,1,0,0,0,1320,1316,1,0,0,0,1320,1321,1,0,0,0,1321,1322,1,0,0,0,1322,1323,5,93,0,0,1323,1324,5,220,0,0,1324,1325,5,223,0,0,1325,67,1,0,0,0,1326,1328,3,446,223,0,1327,1326,1,0,0,0,1328,1331,1,0,0,0,1329,1327,1,0,0,0,1329,1330,1,0,0,0,1330,1332,1,0,0,0,1331,1329,1,0,0,0,1332,1333,5,0,0,1,1333,69,1,0,0,0,1334,1336,3,416,208,0,1335,1334,1,0,0,0,1336,1339,1,0,0,0,1337,1335,1,0,0,0,1337,1338,1,0,0,0,1338,1340,1,0,0,0,1339,1337,1,0,0,0,1340,1341,3,72,36,0,1341,1342,3,74,37,0,1342,71,1,0,0,0,1343,1345,5,104,0,0,1344,1346,3,46,23,0,1345,1344,1,0,0,0,1345,1346,1,0,0,0,1346,73,1,0,0,0,1347,1357,5,205,0,0,1348,1352,5,214,0,0,1349,1351,3,76,38,0,1350,1349,1,0,0,0,1351,1354,1,0,0,0,1352,1350,1,0,0,0,1352,1353,1,0,0,0,1353,1355,1,0,0,0,1354,1352,1,0,0,0,1355,1357,5,216,0,0,1356,1347,1,0,0,0,1356,1348,1,0,0,0,1357,75,1,0,0,0,1358,1362,3,82,41,0,1359,1362,3,88,44,0,1360,1362,3,92,46,0,1361,1358,1,0,0,0,1361,1359,1,0,0,0,1361,1360,1,0,0,0,1362,77,1,0,0,0,1363,1365,3,80,40,0,1364,1363,1,0,0,0,1364,1365,1,0,0,0,1365,79,1,0,0,0,1366,1367,7,10,0,0,1367,81,1,0,0,0,1368,1371,3,84,42,0,1369,1371,3,86,43,0,1370,1368,1,0,0,0,1370,1369,1,0,0,0,1371,83,1,0,0,0,1372,1373,3,78,39,0,1373,1374,3,104,52,0,1374,85,1,0,0,0,1375,1376,3,78,39,0,1376,1377,3,108,54,0,1377,87,1,0,0,0,1378,1379,3,78,39,0,1379,1384,5,7,0,0,1380,1381,5,206,0,0,1381,1382,3,44,22,0,1382,1383,5,208,0,0,1383,1385,1,0,0,0,1384,1380,1,0,0,0,1384,1385,1,0,0,0,1385,1387,1,0,0,0,1386,1388,3,44,22,0,1387,1386,1,0,0,0,1387,1388,1,0,0,0,1388,1389,1,0,0,0,1389,1390,5,71,0,0,1390,1391,3,90,45,0,1391,1392,3,48,24,0,1392,89,1,0,0,0,1393,1394,5,193,0,0,1394,1396,5,183,0,0,1395,1393,1,0,0,0,1395,1396,1,0,0,0,1396,1402,1,0,0,0,1397,1398,3,44,22,0,1398,1399,5,183,0,0,1399,1401,1,0,0,0,1400,1397,1,0,0,0,1401,1404,1,0,0,0,1402,1400,1,0,0,0,1402,1403,1,0,0,0,1403,1405,1,0,0,0,1404,1402,1,0,0,0,1405,1406,3,44,22,0,1406,91,1,0,0,0,1407,1409,3,80,40,0,1408,1407,1,0,0,0,1408,1409,1,0,0,0,1409,1410,1,0,0,0,1410,1412,5,79,0,0,1411,1413,5,8,0,0,1412,1411,1,0,0,0,1412,1413,1,0,0,0,1413,1414,1,0,0,0,1414,1415,3,94,47,0,1415,1416,3,48,24,0,1416,93,1,0,0,0,1417,1420,3,96,48,0,1418,1420,3,98,49,0,1419,1417,1,0,0,0,1419,1418,1,0,0,0,1420,95,1,0,0,0,1421,1424,3,90,45,0,1422,1423,5,183,0,0,1423,1425,5,179,0,0,1424,1422,1,0,0,0,1424,1425,1,0,0,0,1425,97,1,0,0,0,1426,1427,3,90,45,0,1427,1428,5,183,0,0,1428,1431,5,198,0,0,1429,1430,5,183,0,0,1430,1432,5,179,0,0,1431,1429,1,0,0,0,1431,1432,1,0,0,0,1432,1435,1,0,0,0,1433,1435,3,100,50,0,1434,1426,1,0,0,0,1434,1433,1,0,0,0,1435,99,1,0,0,0,1436,1438,3,970,485,0,1437,1439,3,102,51,0,1438,1437,1,0,0,0,1439,1440,1,0,0,0,1440,1438,1,0,0,0,1440,1441,1,0,0,0,1441,1449,1,0,0,0,1442,1444,3,984,492,0,1443,1445,3,102,51,0,1444,1443,1,0,0,0,1445,1446,1,0,0,0,1446,1444,1,0,0,0,1446,1447,1,0,0,0,1447,1449,1,0,0,0,1448,1436,1,0,0,0,1448,1442,1,0,0,0,1449,101,1,0,0,0,1450,1451,5,211,0,0,1451,1452,3,0,0,0,1452,1453,5,212,0,0,1453,103,1,0,0,0,1454,1457,3,60,30,0,1455,1457,3,106,53,0,1456,1454,1,0,0,0,1456,1455,1,0,0,0,1457,105,1,0,0,0,1458,1485,3,54,27,0,1459,1485,3,70,35,0,1460,1485,3,110,55,0,1461,1485,3,162,81,0,1462,1485,3,250,125,0,1463,1485,3,252,126,0,1464,1485,3,254,127,0,1465,1485,3,412,206,0,1466,1485,3,256,128,0,1467,1485,3,258,129,0,1468,1485,3,370,185,0,1469,1485,3,284,142,0,1470,1485,3,288,144,0,1471,1485,3,300,150,0,1472,1485,3,398,199,0,1473,1485,3,432,216,0,1474,1485,3,434,217,0,1475,1485,3,134,67,0,1476,1485,3,142,71,0,1477,1485,3,168,84,0,1478,1485,3,146,73,0,1479,1485,3,242,121,0,1480,1485,3,220,110,0,1481,1485,3,224,112,0,1482,1485,3,232,116,0,1483,1485,3,246,123,0,1484,1458,1,0,0,0,1484,1459,1,0,0,0,1484,1460,1,0,0,0,1484,1461,1,0,0,0,1484,1462,1,0,0,0,1484,1463,1,0,0,0,1484,1464,1,0,0,0,1484,1465,1,0,0,0,1484,1466,1,0,0,0,1484,1467,1,0,0,0,1484,1468,1,0,0,0,1484,1469,1,0,0,0,1484,1470,1,0,0,0,1484,1471,1,0,0,0,1484,1472,1,0,0,0,1484,1473,1,0,0,0,1484,1474,1,0,0,0,1484,1475,1,0,0,0,1484,1476,1,0,0,0,1484,1477,1,0,0,0,1484,1478,1,0,0,0,1484,1479,1,0,0,0,1484,1480,1,0,0,0,1484,1481,1,0,0,0,1484,1482,1,0,0,0,1484,1483,1,0,0,0,1485,107,1,0,0,0,1486,1497,3,172,86,0,1487,1497,3,286,143,0,1488,1497,3,298,149,0,1489,1497,3,302,151,0,1490,1497,3,304,152,0,1491,1497,3,260,130,0,1492,1497,3,276,138,0,1493,1497,3,280,140,0,1494,1497,3,372,186,0,1495,1497,3,374,187,0,1496,1486,1,0,0,0,1496,1487,1,0,0,0,1496,1488,1,0,0,0,1496,1489,1,0,0,0,1496,1490,1,0,0,0,1496,1491,1,0,0,0,1496,1492,1,0,0,0,1496,1493,1,0,0,0,1496,1494,1,0,0,0,1496,1495,1,0,0,0,1497,109,1,0,0,0,1498,1499,3,112,56,0,1499,1500,5,157,0,0,1500,1501,3,114,57,0,1501,1502,3,130,65,0,1502,111,1,0,0,0,1503,1505,5,2,0,0,1504,1503,1,0,0,0,1504,1505,1,0,0,0,1505,1509,1,0,0,0,1506,1508,3,416,208,0,1507,1506,1,0,0,0,1508,1511,1,0,0,0,1509,1507,1,0,0,0,1509,1510,1,0,0,0,1510,113,1,0,0,0,1511,1509,1,0,0,0,1512,1514,5,8,0,0,1513,1512,1,0,0,0,1513,1514,1,0,0,0,1514,1516,1,0,0,0,1515,1517,3,46,23,0,1516,1515,1,0,0,0,1516,1517,1,0,0,0,1517,1519,1,0,0,0,1518,1520,3,404,202,0,1519,1518,1,0,0,0,1519,1520,1,0,0,0,1520,1523,1,0,0,0,1521,1524,3,116,58,0,1522,1524,3,118,59,0,1523,1521,1,0,0,0,1523,1522,1,0,0,0,1524,1525,1,0,0,0,1525,1523,1,0,0,0,1525,1526,1,0,0,0,1526,1530,1,0,0,0,1527,1529,3,120,60,0,1528,1527,1,0,0,0,1529,1532,1,0,0,0,1530,1528,1,0,0,0,1530,1531,1,0,0,0,1531,115,1,0,0,0,1532,1530,1,0,0,0,1533,1534,7,11,0,0,1534,1539,3,136,68,0,1535,1536,5,200,0,0,1536,1538,3,136,68,0,1537,1535,1,0,0,0,1538,1541,1,0,0,0,1539,1537,1,0,0,0,1539,1540,1,0,0,0,1540,117,1,0,0,0,1541,1539,1,0,0,0,1542,1543,7,12,0,0,1543,1544,3,144,72,0,1544,119,1,0,0,0,1545,1550,3,122,61,0,1546,1550,3,124,62,0,1547,1550,3,126,63,0,1548,1550,3,128,64,0,1549,1545,1,0,0,0,1549,1546,1,0,0,0,1549,1547,1,0,0,0,1549,1548,1,0,0,0,1550,121,1,0,0,0,1551,1552,5,52,0,0,1552,1553,5,74,0,0,1553,1558,3,148,74,0,1554,1555,5,200,0,0,1555,1557,3,148,74,0,1556,1554,1,0,0,0,1557,1560,1,0,0,0,1558,1556,1,0,0,0,1558,1559,1,0,0,0,1559,123,1,0,0,0,1560,1558,1,0,0,0,1561,1562,5,160,0,0,1562,1567,3,150,75,0,1563,1564,5,200,0,0,1564,1566,3,150,75,0,1565,1563,1,0,0,0,1566,1569,1,0,0,0,1567,1565,1,0,0,0,1567,1568,1,0,0,0,1568,125,1,0,0,0,1569,1567,1,0,0,0,1570,1571,5,86,0,0,1571,1576,3,152,76,0,1572,1573,5,200,0,0,1573,1575,3,152,76,0,1574,1572,1,0,0,0,1575,1578,1,0,0,0,1576,1574,1,0,0,0,1576,1577,1,0,0,0,1577,127,1,0,0,0,1578,1576,1,0,0,0,1579,1580,5,50,0,0,1580,1585,3,154,77,0,1581,1582,5,200,0,0,1582,1584,3,154,77,0,1583,1581,1,0,0,0,1584,1587,1,0,0,0,1585,1583,1,0,0,0,1585,1586,1,0,0,0,1586,129,1,0,0,0,1587,1585,1,0,0,0,1588,1598,5,205,0,0,1589,1593,5,214,0,0,1590,1592,3,132,66,0,1591,1590,1,0,0,0,1592,1595,1,0,0,0,1593,1591,1,0,0,0,1593,1594,1,0,0,0,1594,1596,1,0,0,0,1595,1593,1,0,0,0,1596,1598,5,216,0,0,1597,1588,1,0,0,0,1597,1589,1,0,0,0,1598,131,1,0,0,0,1599,1604,3,84,42,0,1600,1604,3,156,78,0,1601,1604,3,88,44,0,1602,1604,3,92,46,0,1603,1599,1,0,0,0,1603,1600,1,0,0,0,1603,1601,1,0,0,0,1603,1602,1,0,0,0,1604,133,1,0,0,0,1605,1607,5,138,0,0,1606,1608,3,46,23,0,1607,1606,1,0,0,0,1607,1608,1,0,0,0,1608,1610,1,0,0,0,1609,1605,1,0,0,0,1609,1610,1,0,0,0,1610,1611,1,0,0,0,1611,1612,5,149,0,0,1612,1613,3,138,69,0,1613,1614,7,11,0,0,1614,1615,3,140,70,0,1615,1616,3,48,24,0,1616,135,1,0,0,0,1617,1618,3,140,70,0,1618,137,1,0,0,0,1619,1624,3,90,45,0,1620,1621,5,202,0,0,1621,1623,3,90,45,0,1622,1620,1,0,0,0,1623,1626,1,0,0,0,1624,1622,1,0,0,0,1624,1625,1,0,0,0,1625,139,1,0,0,0,1626,1624,1,0,0,0,1627,1632,3,90,45,0,1628,1629,5,202,0,0,1629,1631,3,90,45,0,1630,1628,1,0,0,0,1631,1634,1,0,0,0,1632,1630,1,0,0,0,1632,1633,1,0,0,0,1633,141,1,0,0,0,1634,1632,1,0,0,0,1635,1637,5,35,0,0,1636,1638,3,46,23,0,1637,1636,1,0,0,0,1637,1638,1,0,0,0,1638,1640,1,0,0,0,1639,1635,1,0,0,0,1639,1640,1,0,0,0,1640,1641,1,0,0,0,1641,1642,5,33,0,0,1642,1647,3,90,45,0,1643,1644,5,202,0,0,1644,1646,3,90,45,0,1645,1643,1,0,0,0,1646,1649,1,0,0,0,1647,1645,1,0,0,0,1647,1648,1,0,0,0,1648,1650,1,0,0,0,1649,1647,1,0,0,0,1650,1651,7,12,0,0,1651,1656,3,90,45,0,1652,1653,5,202,0,0,1653,1655,3,90,45,0,1654,1652,1,0,0,0,1655,1658,1,0,0,0,1656,1654,1,0,0,0,1656,1657,1,0,0,0,1657,1659,1,0,0,0,1658,1656,1,0,0,0,1659,1660,3,48,24,0,1660,143,1,0,0,0,1661,1666,3,90,45,0,1662,1663,5,202,0,0,1663,1665,3,90,45,0,1664,1662,1,0,0,0,1665,1668,1,0,0,0,1666,1664,1,0,0,0,1666,1667,1,0,0,0,1667,145,1,0,0,0,1668,1666,1,0,0,0,1669,1671,5,51,0,0,1670,1672,3,46,23,0,1671,1670,1,0,0,0,1671,1672,1,0,0,0,1672,1674,1,0,0,0,1673,1669,1,0,0,0,1673,1674,1,0,0,0,1674,1675,1,0,0,0,1675,1676,5,52,0,0,1676,1681,3,90,45,0,1677,1678,5,202,0,0,1678,1680,3,90,45,0,1679,1677,1,0,0,0,1680,1683,1,0,0,0,1681,1679,1,0,0,0,1681,1682,1,0,0,0,1682,1684,1,0,0,0,1683,1681,1,0,0,0,1684,1685,5,74,0,0,1685,1690,3,90,45,0,1686,1687,5,202,0,0,1687,1689,3,90,45,0,1688,1686,1,0,0,0,1689,1692,1,0,0,0,1690,1688,1,0,0,0,1690,1691,1,0,0,0,1691,1693,1,0,0,0,1692,1690,1,0,0,0,1693,1694,3,48,24,0,1694,147,1,0,0,0,1695,1700,3,90,45,0,1696,1697,5,202,0,0,1697,1699,3,90,45,0,1698,1696,1,0,0,0,1699,1702,1,0,0,0,1700,1698,1,0,0,0,1700,1701,1,0,0,0,1701,149,1,0,0,0,1702,1700,1,0,0,0,1703,1708,3,90,45,0,1704,1705,5,202,0,0,1705,1707,3,90,45,0,1706,1704,1,0,0,0,1707,1710,1,0,0,0,1708,1706,1,0,0,0,1708,1709,1,0,0,0,1709,151,1,0,0,0,1710,1708,1,0,0,0,1711,1716,3,90,45,0,1712,1713,5,202,0,0,1713,1715,3,90,45,0,1714,1712,1,0,0,0,1715,1718,1,0,0,0,1716,1714,1,0,0,0,1716,1717,1,0,0,0,1717,153,1,0,0,0,1718,1716,1,0,0,0,1719,1724,3,90,45,0,1720,1721,5,202,0,0,1721,1723,3,90,45,0,1722,1720,1,0,0,0,1723,1726,1,0,0,0,1724,1722,1,0,0,0,1724,1725,1,0,0,0,1725,155,1,0,0,0,1726,1724,1,0,0,0,1727,1730,3,158,79,0,1728,1730,3,160,80,0,1729,1727,1,0,0,0,1729,1728,1,0,0,0,1730,157,1,0,0,0,1731,1732,3,78,39,0,1732,1733,5,97,0,0,1733,1734,3,108,54,0,1734,159,1,0,0,0,1735,1736,3,78,39,0,1736,1737,3,108,54,0,1737,161,1,0,0,0,1738,1739,3,112,56,0,1739,1740,5,29,0,0,1740,1741,3,164,82,0,1741,1742,3,130,65,0,1742,163,1,0,0,0,1743,1745,5,8,0,0,1744,1743,1,0,0,0,1744,1745,1,0,0,0,1745,1747,1,0,0,0,1746,1748,3,46,23,0,1747,1746,1,0,0,0,1747,1748,1,0,0,0,1748,1750,1,0,0,0,1749,1751,3,404,202,0,1750,1749,1,0,0,0,1750,1751,1,0,0,0,1751,1754,1,0,0,0,1752,1755,3,166,83,0,1753,1755,3,118,59,0,1754,1752,1,0,0,0,1754,1753,1,0,0,0,1754,1755,1,0,0,0,1755,1759,1,0,0,0,1756,1758,3,120,60,0,1757,1756,1,0,0,0,1758,1761,1,0,0,0,1759,1757,1,0,0,0,1759,1760,1,0,0,0,1760,165,1,0,0,0,1761,1759,1,0,0,0,1762,1763,7,11,0,0,1763,1768,3,170,85,0,1764,1765,5,200,0,0,1765,1767,3,170,85,0,1766,1764,1,0,0,0,1767,1770,1,0,0,0,1768,1766,1,0,0,0,1768,1769,1,0,0,0,1769,167,1,0,0,0,1770,1768,1,0,0,0,1771,1773,5,138,0,0,1772,1774,3,46,23,0,1773,1772,1,0,0,0,1773,1774,1,0,0,0,1774,1776,1,0,0,0,1775,1771,1,0,0,0,1775,1776,1,0,0,0,1776,1777,1,0,0,0,1777,1778,5,145,0,0,1778,1779,3,90,45,0,1779,1780,7,11,0,0,1780,1781,3,90,45,0,1781,1782,3,48,24,0,1782,169,1,0,0,0,1783,1784,3,90,45,0,1784,171,1,0,0,0,1785,1788,3,178,89,0,1786,1789,5,65,0,0,1787,1789,3,416,208,0,1788,1786,1,0,0,0,1788,1787,1,0,0,0,1789,1791,1,0,0,0,1790,1792,3,186,93,0,1791,1790,1,0,0,0,1791,1792,1,0,0,0,1792,1800,1,0,0,0,1793,1796,3,174,87,0,1794,1796,3,176,88,0,1795,1793,1,0,0,0,1795,1794,1,0,0,0,1796,1797,1,0,0,0,1797,1798,3,186,93,0,1798,1800,1,0,0,0,1799,1785,1,0,0,0,1799,1795,1,0,0,0,1800,1802,1,0,0,0,1801,1803,3,394,197,0,1802,1801,1,0,0,0,1802,1803,1,0,0,0,1803,1804,1,0,0,0,1804,1805,3,130,65,0,1805,173,1,0,0,0,1806,1808,5,39,0,0,1807,1806,1,0,0,0,1807,1808,1,0,0,0,1808,1809,1,0,0,0,1809,1810,5,56,0,0,1810,175,1,0,0,0,1811,1813,3,184,92,0,1812,1811,1,0,0,0,1812,1813,1,0,0,0,1813,1815,1,0,0,0,1814,1816,5,49,0,0,1815,1814,1,0,0,0,1815,1816,1,0,0,0,1816,1818,1,0,0,0,1817,1819,5,2,0,0,1818,1817,1,0,0,0,1818,1819,1,0,0,0,1819,1821,1,0,0,0,1820,1822,7,13,0,0,1821,1820,1,0,0,0,1821,1822,1,0,0,0,1822,1824,1,0,0,0,1823,1825,7,14,0,0,1824,1823,1,0,0,0,1824,1825,1,0,0,0,1825,177,1,0,0,0,1826,1827,3,174,87,0,1827,1828,3,180,90,0,1828,1831,1,0,0,0,1829,1831,3,176,88,0,1830,1826,1,0,0,0,1830,1829,1,0,0,0,1831,1835,1,0,0,0,1832,1834,3,416,208,0,1833,1832,1,0,0,0,1834,1837,1,0,0,0,1835,1833,1,0,0,0,1835,1836,1,0,0,0,1836,179,1,0,0,0,1837,1835,1,0,0,0,1838,1839,3,182,91,0,1839,181,1,0,0,0,1840,1841,3,176,88,0,1841,1842,3,186,93,0,1842,1848,1,0,0,0,1843,1845,3,484,242,0,1844,1846,3,496,248,0,1845,1844,1,0,0,0,1845,1846,1,0,0,0,1846,1848,1,0,0,0,1847,1840,1,0,0,0,1847,1843,1,0,0,0,1848,183,1,0,0,0,1849,1850,7,15,0,0,1850,185,1,0,0,0,1851,1853,5,8,0,0,1852,1851,1,0,0,0,1852,1853,1,0,0,0,1853,1861,1,0,0,0,1854,1857,3,188,94,0,1855,1858,3,198,99,0,1856,1858,3,118,59,0,1857,1855,1,0,0,0,1857,1856,1,0,0,0,1857,1858,1,0,0,0,1858,1862,1,0,0,0,1859,1862,3,198,99,0,1860,1862,3,118,59,0,1861,1854,1,0,0,0,1861,1859,1,0,0,0,1861,1860,1,0,0,0,1862,1866,1,0,0,0,1863,1865,3,190,95,0,1864,1863,1,0,0,0,1865,1868,1,0,0,0,1866,1864,1,0,0,0,1866,1867,1,0,0,0,1867,187,1,0,0,0,1868,1866,1,0,0,0,1869,1870,5,206,0,0,1870,1871,3,44,22,0,1871,1873,5,208,0,0,1872,1874,3,44,22,0,1873,1872,1,0,0,0,1873,1874,1,0,0,0,1874,1877,1,0,0,0,1875,1877,3,44,22,0,1876,1869,1,0,0,0,1876,1875,1,0,0,0,1877,189,1,0,0,0,1878,1883,3,120,60,0,1879,1883,3,192,96,0,1880,1883,3,194,97,0,1881,1883,3,196,98,0,1882,1878,1,0,0,0,1882,1879,1,0,0,0,1882,1880,1,0,0,0,1882,1881,1,0,0,0,1883,191,1,0,0,0,1884,1885,5,27,0,0,1885,1890,3,90,45,0,1886,1887,5,202,0,0,1887,1889,3,90,45,0,1888,1886,1,0,0,0,1889,1892,1,0,0,0,1890,1888,1,0,0,0,1890,1891,1,0,0,0,1891,193,1,0,0,0,1892,1890,1,0,0,0,1893,1894,5,88,0,0,1894,1895,5,111,0,0,1895,1896,3,244,122,0,1896,195,1,0,0,0,1897,1898,5,66,0,0,1898,1899,5,24,0,0,1899,1904,3,248,124,0,1900,1901,5,200,0,0,1901,1903,3,248,124,0,1902,1900,1,0,0,0,1903,1906,1,0,0,0,1904,1902,1,0,0,0,1904,1905,1,0,0,0,1905,197,1,0,0,0,1906,1904,1,0,0,0,1907,1909,3,202,101,0,1908,1907,1,0,0,0,1909,1910,1,0,0,0,1910,1908,1,0,0,0,1910,1911,1,0,0,0,1911,1913,1,0,0,0,1912,1914,3,200,100,0,1913,1912,1,0,0,0,1913,1914,1,0,0,0,1914,1918,1,0,0,0,1915,1917,3,202,101,0,1916,1915,1,0,0,0,1917,1920,1,0,0,0,1918,1916,1,0,0,0,1918,1919,1,0,0,0,1919,1929,1,0,0,0,1920,1918,1,0,0,0,1921,1925,3,200,100,0,1922,1924,3,202,101,0,1923,1922,1,0,0,0,1924,1927,1,0,0,0,1925,1923,1,0,0,0,1925,1926,1,0,0,0,1926,1929,1,0,0,0,1927,1925,1,0,0,0,1928,1908,1,0,0,0,1928,1921,1,0,0,0,1929,199,1,0,0,0,1930,1939,3,404,202,0,1931,1933,5,113,0,0,1932,1934,5,106,0,0,1933,1932,1,0,0,0,1933,1934,1,0,0,0,1934,1940,1,0,0,0,1935,1937,5,106,0,0,1936,1938,5,113,0,0,1937,1936,1,0,0,0,1937,1938,1,0,0,0,1938,1940,1,0,0,0,1939,1931,1,0,0,0,1939,1935,1,0,0,0,1939,1940,1,0,0,0,1940,1952,1,0,0,0,1941,1943,5,113,0,0,1942,1944,5,106,0,0,1943,1942,1,0,0,0,1943,1944,1,0,0,0,1944,1950,1,0,0,0,1945,1947,5,106,0,0,1946,1948,5,113,0,0,1947,1946,1,0,0,0,1947,1948,1,0,0,0,1948,1950,1,0,0,0,1949,1941,1,0,0,0,1949,1945,1,0,0,0,1950,1952,1,0,0,0,1951,1930,1,0,0,0,1951,1949,1,0,0,0,1952,201,1,0,0,0,1953,1959,3,204,102,0,1954,1959,3,208,104,0,1955,1959,3,212,106,0,1956,1959,3,214,107,0,1957,1959,3,216,108,0,1958,1953,1,0,0,0,1958,1954,1,0,0,0,1958,1955,1,0,0,0,1958,1956,1,0,0,0,1958,1957,1,0,0,0,1959,203,1,0,0,0,1960,1965,3,206,103,0,1961,1962,5,200,0,0,1962,1964,3,220,110,0,1963,1961,1,0,0,0,1964,1967,1,0,0,0,1965,1963,1,0,0,0,1965,1966,1,0,0,0,1966,205,1,0,0,0,1967,1965,1,0,0,0,1968,1974,5,204,0,0,1969,1970,5,158,0,0,1970,1974,5,24,0,0,1971,1972,5,47,0,0,1972,1974,5,24,0,0,1973,1968,1,0,0,0,1973,1969,1,0,0,0,1973,1971,1,0,0,0,1974,1975,1,0,0,0,1975,1976,3,220,110,0,1976,207,1,0,0,0,1977,1982,3,210,105,0,1978,1979,5,200,0,0,1979,1981,3,226,113,0,1980,1978,1,0,0,0,1981,1984,1,0,0,0,1982,1980,1,0,0,0,1982,1983,1,0,0,0,1983,209,1,0,0,0,1984,1982,1,0,0,0,1985,1986,7,16,0,0,1986,1987,3,226,113,0,1987,211,1,0,0,0,1988,1989,7,17,0,0,1989,1990,3,228,114,0,1990,213,1,0,0,0,1991,1992,7,18,0,0,1992,1993,3,230,115,0,1993,215,1,0,0,0,1994,1999,3,218,109,0,1995,1996,5,200,0,0,1996,1998,3,234,117,0,1997,1995,1,0,0,0,1998,2001,1,0,0,0,1999,1997,1,0,0,0,1999,2e3,1,0,0,0,2e3,217,1,0,0,0,2001,1999,1,0,0,0,2002,2003,7,19,0,0,2003,2004,3,234,117,0,2004,219,1,0,0,0,2005,2007,5,138,0,0,2006,2008,3,46,23,0,2007,2006,1,0,0,0,2007,2008,1,0,0,0,2008,2010,1,0,0,0,2009,2005,1,0,0,0,2009,2010,1,0,0,0,2010,2011,1,0,0,0,2011,2012,5,159,0,0,2012,2016,3,90,45,0,2013,2017,5,204,0,0,2014,2015,5,158,0,0,2015,2017,5,24,0,0,2016,2013,1,0,0,0,2016,2014,1,0,0,0,2017,2018,1,0,0,0,2018,2019,3,140,70,0,2019,2020,3,48,24,0,2020,2024,1,0,0,0,2021,2024,3,222,111,0,2022,2024,3,580,290,0,2023,2009,1,0,0,0,2023,2021,1,0,0,0,2023,2022,1,0,0,0,2024,221,1,0,0,0,2025,2030,3,90,45,0,2026,2027,5,202,0,0,2027,2029,3,90,45,0,2028,2026,1,0,0,0,2029,2032,1,0,0,0,2030,2028,1,0,0,0,2030,2031,1,0,0,0,2031,223,1,0,0,0,2032,2030,1,0,0,0,2033,2035,5,138,0,0,2034,2036,3,46,23,0,2035,2034,1,0,0,0,2035,2036,1,0,0,0,2036,2038,1,0,0,0,2037,2033,1,0,0,0,2037,2038,1,0,0,0,2038,2039,1,0,0,0,2039,2040,5,147,0,0,2040,2041,3,138,69,0,2041,2042,7,16,0,0,2042,2043,3,140,70,0,2043,2044,3,48,24,0,2044,225,1,0,0,0,2045,2050,3,90,45,0,2046,2047,5,202,0,0,2047,2049,3,90,45,0,2048,2046,1,0,0,0,2049,2052,1,0,0,0,2050,2048,1,0,0,0,2050,2051,1,0,0,0,2051,227,1,0,0,0,2052,2050,1,0,0,0,2053,2058,3,90,45,0,2054,2055,5,202,0,0,2055,2057,3,90,45,0,2056,2054,1,0,0,0,2057,2060,1,0,0,0,2058,2056,1,0,0,0,2058,2059,1,0,0,0,2059,229,1,0,0,0,2060,2058,1,0,0,0,2061,2066,3,90,45,0,2062,2063,5,202,0,0,2063,2065,3,90,45,0,2064,2062,1,0,0,0,2065,2068,1,0,0,0,2066,2064,1,0,0,0,2066,2067,1,0,0,0,2067,231,1,0,0,0,2068,2066,1,0,0,0,2069,2071,5,138,0,0,2070,2072,3,46,23,0,2071,2070,1,0,0,0,2071,2072,1,0,0,0,2072,2074,1,0,0,0,2073,2069,1,0,0,0,2073,2074,1,0,0,0,2074,2075,1,0,0,0,2075,2076,5,126,0,0,2076,2077,3,138,69,0,2077,2078,7,19,0,0,2078,2079,3,140,70,0,2079,2080,3,48,24,0,2080,233,1,0,0,0,2081,2086,3,90,45,0,2082,2083,5,202,0,0,2083,2085,3,90,45,0,2084,2082,1,0,0,0,2085,2088,1,0,0,0,2086,2084,1,0,0,0,2086,2087,1,0,0,0,2087,235,1,0,0,0,2088,2086,1,0,0,0,2089,2098,3,238,119,0,2090,2093,3,240,120,0,2091,2092,5,202,0,0,2092,2094,3,240,120,0,2093,2091,1,0,0,0,2094,2095,1,0,0,0,2095,2093,1,0,0,0,2095,2096,1,0,0,0,2096,2098,1,0,0,0,2097,2089,1,0,0,0,2097,2090,1,0,0,0,2098,237,1,0,0,0,2099,2102,3,240,120,0,2100,2101,5,202,0,0,2101,2103,3,240,120,0,2102,2100,1,0,0,0,2103,2104,1,0,0,0,2104,2102,1,0,0,0,2104,2105,1,0,0,0,2105,239,1,0,0,0,2106,2107,3,90,45,0,2107,241,1,0,0,0,2108,2110,5,89,0,0,2109,2111,3,46,23,0,2110,2109,1,0,0,0,2110,2111,1,0,0,0,2111,2113,1,0,0,0,2112,2108,1,0,0,0,2112,2113,1,0,0,0,2113,2114,1,0,0,0,2114,2115,5,88,0,0,2115,2120,3,90,45,0,2116,2117,5,202,0,0,2117,2119,3,90,45,0,2118,2116,1,0,0,0,2119,2122,1,0,0,0,2120,2118,1,0,0,0,2120,2121,1,0,0,0,2121,2123,1,0,0,0,2122,2120,1,0,0,0,2123,2124,5,111,0,0,2124,2129,3,90,45,0,2125,2126,5,202,0,0,2126,2128,3,90,45,0,2127,2125,1,0,0,0,2128,2131,1,0,0,0,2129,2127,1,0,0,0,2129,2130,1,0,0,0,2130,2132,1,0,0,0,2131,2129,1,0,0,0,2132,2133,3,48,24,0,2133,243,1,0,0,0,2134,2139,3,90,45,0,2135,2136,5,202,0,0,2136,2138,3,90,45,0,2137,2135,1,0,0,0,2138,2141,1,0,0,0,2139,2137,1,0,0,0,2139,2140,1,0,0,0,2140,245,1,0,0,0,2141,2139,1,0,0,0,2142,2147,5,67,0,0,2143,2145,3,46,23,0,2144,2143,1,0,0,0,2144,2145,1,0,0,0,2145,2146,1,0,0,0,2146,2148,5,111,0,0,2147,2144,1,0,0,0,2147,2148,1,0,0,0,2148,2149,1,0,0,0,2149,2150,3,90,45,0,2150,2151,5,24,0,0,2151,2152,3,90,45,0,2152,2153,3,48,24,0,2153,247,1,0,0,0,2154,2155,3,90,45,0,2155,249,1,0,0,0,2156,2157,3,112,56,0,2157,2158,5,43,0,0,2158,2159,3,164,82,0,2159,2160,3,130,65,0,2160,251,1,0,0,0,2161,2162,3,112,56,0,2162,2163,5,28,0,0,2163,2164,3,164,82,0,2164,2165,3,130,65,0,2165,253,1,0,0,0,2166,2167,3,112,56,0,2167,2168,5,144,0,0,2168,2169,3,164,82,0,2169,2170,3,130,65,0,2170,255,1,0,0,0,2171,2172,3,112,56,0,2172,2173,5,16,0,0,2173,2174,3,164,82,0,2174,2175,3,130,65,0,2175,257,1,0,0,0,2176,2177,3,112,56,0,2177,2178,5,16,0,0,2178,2179,5,144,0,0,2179,2180,3,164,82,0,2180,2181,3,130,65,0,2181,259,1,0,0,0,2182,2183,3,178,89,0,2183,2191,5,38,0,0,2184,2186,3,186,93,0,2185,2184,1,0,0,0,2185,2186,1,0,0,0,2186,2188,1,0,0,0,2187,2189,3,394,197,0,2188,2187,1,0,0,0,2188,2189,1,0,0,0,2189,2192,1,0,0,0,2190,2192,3,262,131,0,2191,2185,1,0,0,0,2191,2190,1,0,0,0,2192,2193,1,0,0,0,2193,2194,3,130,65,0,2194,261,1,0,0,0,2195,2198,3,264,132,0,2196,2198,3,266,133,0,2197,2195,1,0,0,0,2197,2196,1,0,0,0,2198,263,1,0,0,0,2199,2201,3,186,93,0,2200,2199,1,0,0,0,2200,2201,1,0,0,0,2201,2202,1,0,0,0,2202,2208,5,74,0,0,2203,2205,5,8,0,0,2204,2206,5,74,0,0,2205,2204,1,0,0,0,2205,2206,1,0,0,0,2206,2208,1,0,0,0,2207,2200,1,0,0,0,2207,2203,1,0,0,0,2207,2208,1,0,0,0,2208,2209,1,0,0,0,2209,2210,3,268,134,0,2210,2211,5,154,0,0,2211,2212,3,268,134,0,2212,265,1,0,0,0,2213,2215,3,186,93,0,2214,2213,1,0,0,0,2214,2215,1,0,0,0,2215,2216,1,0,0,0,2216,2217,5,196,0,0,2217,2218,3,268,134,0,2218,2219,5,200,0,0,2219,2224,3,268,134,0,2220,2221,5,200,0,0,2221,2223,3,268,134,0,2222,2220,1,0,0,0,2223,2226,1,0,0,0,2224,2222,1,0,0,0,2224,2225,1,0,0,0,2225,2227,1,0,0,0,2226,2224,1,0,0,0,2227,2228,5,197,0,0,2228,267,1,0,0,0,2229,2230,3,270,135,0,2230,269,1,0,0,0,2231,2233,3,272,136,0,2232,2231,1,0,0,0,2232,2233,1,0,0,0,2233,2237,1,0,0,0,2234,2235,3,44,22,0,2235,2236,7,17,0,0,2236,2238,1,0,0,0,2237,2234,1,0,0,0,2237,2238,1,0,0,0,2238,2239,1,0,0,0,2239,2240,3,228,114,0,2240,271,1,0,0,0,2241,2242,3,274,137,0,2242,273,1,0,0,0,2243,2244,3,404,202,0,2244,275,1,0,0,0,2245,2246,3,178,89,0,2246,2247,5,22,0,0,2247,2248,3,278,139,0,2248,2249,3,130,65,0,2249,277,1,0,0,0,2250,2256,3,186,93,0,2251,2252,5,111,0,0,2252,2253,3,268,134,0,2253,2254,5,207,0,0,2254,2255,3,268,134,0,2255,2257,1,0,0,0,2256,2251,1,0,0,0,2256,2257,1,0,0,0,2257,2271,1,0,0,0,2258,2260,5,8,0,0,2259,2258,1,0,0,0,2259,2260,1,0,0,0,2260,2268,1,0,0,0,2261,2263,5,111,0,0,2262,2261,1,0,0,0,2262,2263,1,0,0,0,2263,2264,1,0,0,0,2264,2265,3,268,134,0,2265,2266,5,207,0,0,2266,2267,3,268,134,0,2267,2269,1,0,0,0,2268,2262,1,0,0,0,2268,2269,1,0,0,0,2269,2271,1,0,0,0,2270,2250,1,0,0,0,2270,2259,1,0,0,0,2271,279,1,0,0,0,2272,2273,3,178,89,0,2273,2274,5,150,0,0,2274,2275,3,282,141,0,2275,2276,3,130,65,0,2276,281,1,0,0,0,2277,2283,3,186,93,0,2278,2279,5,69,0,0,2279,2280,3,268,134,0,2280,2281,5,152,0,0,2281,2282,3,268,134,0,2282,2284,1,0,0,0,2283,2278,1,0,0,0,2283,2284,1,0,0,0,2284,2298,1,0,0,0,2285,2287,5,8,0,0,2286,2285,1,0,0,0,2286,2287,1,0,0,0,2287,2295,1,0,0,0,2288,2290,5,69,0,0,2289,2288,1,0,0,0,2289,2290,1,0,0,0,2290,2291,1,0,0,0,2291,2292,3,268,134,0,2292,2293,5,152,0,0,2293,2294,3,268,134,0,2294,2296,1,0,0,0,2295,2289,1,0,0,0,2295,2296,1,0,0,0,2296,2298,1,0,0,0,2297,2277,1,0,0,0,2297,2286,1,0,0,0,2298,283,1,0,0,0,2299,2300,3,112,56,0,2300,2301,5,20,0,0,2301,2302,3,164,82,0,2302,2303,3,130,65,0,2303,285,1,0,0,0,2304,2305,3,178,89,0,2305,2306,5,143,0,0,2306,2308,3,186,93,0,2307,2309,3,394,197,0,2308,2307,1,0,0,0,2308,2309,1,0,0,0,2309,2310,1,0,0,0,2310,2311,3,130,65,0,2311,287,1,0,0,0,2312,2313,3,112,56,0,2313,2314,5,75,0,0,2314,2315,3,164,82,0,2315,2316,3,290,145,0,2316,289,1,0,0,0,2317,2323,5,205,0,0,2318,2319,5,214,0,0,2319,2320,3,292,146,0,2320,2321,5,216,0,0,2321,2323,1,0,0,0,2322,2317,1,0,0,0,2322,2318,1,0,0,0,2323,291,1,0,0,0,2324,2327,3,132,66,0,2325,2327,3,294,147,0,2326,2324,1,0,0,0,2326,2325,1,0,0,0,2327,2330,1,0,0,0,2328,2326,1,0,0,0,2328,2329,1,0,0,0,2329,2332,1,0,0,0,2330,2328,1,0,0,0,2331,2333,3,296,148,0,2332,2331,1,0,0,0,2332,2333,1,0,0,0,2333,293,1,0,0,0,2334,2335,3,78,39,0,2335,2336,5,134,0,0,2336,2337,3,108,54,0,2337,295,1,0,0,0,2338,2339,3,78,39,0,2339,2340,3,0,0,0,2340,297,1,0,0,0,2341,2342,3,178,89,0,2342,2343,5,63,0,0,2343,2345,3,186,93,0,2344,2346,3,394,197,0,2345,2344,1,0,0,0,2345,2346,1,0,0,0,2346,2347,1,0,0,0,2347,2348,3,290,145,0,2348,299,1,0,0,0,2349,2350,3,112,56,0,2350,2351,5,121,0,0,2351,2352,3,164,82,0,2352,2353,3,290,145,0,2353,301,1,0,0,0,2354,2355,3,178,89,0,2355,2356,5,23,0,0,2356,2358,3,186,93,0,2357,2359,3,394,197,0,2358,2357,1,0,0,0,2358,2359,1,0,0,0,2359,2360,1,0,0,0,2360,2361,3,290,145,0,2361,303,1,0,0,0,2362,2363,3,178,89,0,2363,2365,5,87,0,0,2364,2366,7,8,0,0,2365,2364,1,0,0,0,2365,2366,1,0,0,0,2366,2367,1,0,0,0,2367,2369,3,186,93,0,2368,2370,3,394,197,0,2369,2368,1,0,0,0,2369,2370,1,0,0,0,2370,2371,1,0,0,0,2371,2372,3,290,145,0,2372,305,1,0,0,0,2373,2374,3,0,0,0,2374,307,1,0,0,0,2375,2376,3,348,174,0,2376,309,1,0,0,0,2377,2378,3,2,1,0,2378,311,1,0,0,0,2379,2380,3,2,1,0,2380,313,1,0,0,0,2381,2382,3,90,45,0,2382,315,1,0,0,0,2383,2384,3,978,489,0,2384,317,1,0,0,0,2385,2386,3,306,153,0,2386,2387,5,200,0,0,2387,2388,3,320,160,0,2388,319,1,0,0,0,2389,2390,3,4,2,0,2390,321,1,0,0,0,2391,2392,3,324,162,0,2392,323,1,0,0,0,2393,2394,3,326,163,0,2394,325,1,0,0,0,2395,2396,3,18,9,0,2396,327,1,0,0,0,2397,2398,3,330,165,0,2398,329,1,0,0,0,2399,2400,3,332,166,0,2400,331,1,0,0,0,2401,2402,3,334,167,0,2402,333,1,0,0,0,2403,2404,3,336,168,0,2404,335,1,0,0,0,2405,2406,3,338,169,0,2406,337,1,0,0,0,2407,2408,3,314,157,0,2408,339,1,0,0,0,2409,2414,3,90,45,0,2410,2411,5,202,0,0,2411,2413,3,90,45,0,2412,2410,1,0,0,0,2413,2416,1,0,0,0,2414,2412,1,0,0,0,2414,2415,1,0,0,0,2415,341,1,0,0,0,2416,2414,1,0,0,0,2417,2420,3,238,119,0,2418,2420,3,236,118,0,2419,2417,1,0,0,0,2419,2418,1,0,0,0,2420,343,1,0,0,0,2421,2422,3,346,173,0,2422,345,1,0,0,0,2423,2424,3,90,45,0,2424,347,1,0,0,0,2425,2426,3,90,45,0,2426,349,1,0,0,0,2427,2428,3,352,176,0,2428,351,1,0,0,0,2429,2430,3,20,10,0,2430,353,1,0,0,0,2431,2436,3,90,45,0,2432,2433,5,202,0,0,2433,2435,3,90,45,0,2434,2432,1,0,0,0,2435,2438,1,0,0,0,2436,2434,1,0,0,0,2436,2437,1,0,0,0,2437,355,1,0,0,0,2438,2436,1,0,0,0,2439,2440,3,90,45,0,2440,357,1,0,0,0,2441,2442,3,26,13,0,2442,359,1,0,0,0,2443,2444,3,90,45,0,2444,361,1,0,0,0,2445,2446,3,364,182,0,2446,363,1,0,0,0,2447,2448,5,214,0,0,2448,2449,3,292,146,0,2449,2450,5,216,0,0,2450,365,1,0,0,0,2451,2452,7,8,0,0,2452,367,1,0,0,0,2453,2455,5,221,0,0,2454,2453,1,0,0,0,2454,2455,1,0,0,0,2455,2456,1,0,0,0,2456,2457,5,202,0,0,2457,2460,7,20,0,0,2458,2460,5,222,0,0,2459,2454,1,0,0,0,2459,2458,1,0,0,0,2460,369,1,0,0,0,2461,2462,3,112,56,0,2462,2463,5,84,0,0,2463,2464,3,164,82,0,2464,2465,3,130,65,0,2465,371,1,0,0,0,2466,2467,3,178,89,0,2467,2468,5,70,0,0,2468,2469,3,376,188,0,2469,2470,3,130,65,0,2470,373,1,0,0,0,2471,2472,3,178,89,0,2472,2473,5,150,0,0,2473,2474,5,70,0,0,2474,2475,3,376,188,0,2475,2476,3,130,65,0,2476,375,1,0,0,0,2477,2479,3,186,93,0,2478,2480,3,394,197,0,2479,2478,1,0,0,0,2479,2480,1,0,0,0,2480,2483,1,0,0,0,2481,2482,5,111,0,0,2482,2484,3,378,189,0,2483,2481,1,0,0,0,2483,2484,1,0,0,0,2484,2490,1,0,0,0,2485,2486,5,74,0,0,2486,2487,3,384,192,0,2487,2488,5,154,0,0,2488,2489,3,384,192,0,2489,2491,1,0,0,0,2490,2485,1,0,0,0,2490,2491,1,0,0,0,2491,2517,1,0,0,0,2492,2494,5,8,0,0,2493,2492,1,0,0,0,2493,2494,1,0,0,0,2494,2495,1,0,0,0,2495,2496,3,384,192,0,2496,2497,5,154,0,0,2497,2498,3,384,192,0,2498,2517,1,0,0,0,2499,2501,3,496,248,0,2500,2499,1,0,0,0,2500,2501,1,0,0,0,2501,2503,1,0,0,0,2502,2504,3,394,197,0,2503,2502,1,0,0,0,2503,2504,1,0,0,0,2504,2507,1,0,0,0,2505,2506,5,111,0,0,2506,2508,3,646,323,0,2507,2505,1,0,0,0,2507,2508,1,0,0,0,2508,2514,1,0,0,0,2509,2510,5,74,0,0,2510,2511,3,384,192,0,2511,2512,5,154,0,0,2512,2513,3,384,192,0,2513,2515,1,0,0,0,2514,2509,1,0,0,0,2514,2515,1,0,0,0,2515,2517,1,0,0,0,2516,2477,1,0,0,0,2516,2493,1,0,0,0,2516,2500,1,0,0,0,2517,377,1,0,0,0,2518,2519,3,380,190,0,2519,379,1,0,0,0,2520,2522,3,46,23,0,2521,2520,1,0,0,0,2521,2522,1,0,0,0,2522,2523,1,0,0,0,2523,2540,3,394,197,0,2524,2526,3,46,23,0,2525,2524,1,0,0,0,2525,2526,1,0,0,0,2526,2527,1,0,0,0,2527,2529,3,382,191,0,2528,2530,3,394,197,0,2529,2528,1,0,0,0,2529,2530,1,0,0,0,2530,2540,1,0,0,0,2531,2533,3,222,111,0,2532,2534,3,404,202,0,2533,2532,1,0,0,0,2533,2534,1,0,0,0,2534,2540,1,0,0,0,2535,2537,3,404,202,0,2536,2538,3,222,111,0,2537,2536,1,0,0,0,2537,2538,1,0,0,0,2538,2540,1,0,0,0,2539,2521,1,0,0,0,2539,2525,1,0,0,0,2539,2531,1,0,0,0,2539,2535,1,0,0,0,2540,381,1,0,0,0,2541,2543,3,202,101,0,2542,2541,1,0,0,0,2543,2544,1,0,0,0,2544,2542,1,0,0,0,2544,2545,1,0,0,0,2545,2547,1,0,0,0,2546,2548,3,200,100,0,2547,2546,1,0,0,0,2547,2548,1,0,0,0,2548,2552,1,0,0,0,2549,2551,3,202,101,0,2550,2549,1,0,0,0,2551,2554,1,0,0,0,2552,2550,1,0,0,0,2552,2553,1,0,0,0,2553,2562,1,0,0,0,2554,2552,1,0,0,0,2555,2557,3,200,100,0,2556,2558,3,202,101,0,2557,2556,1,0,0,0,2558,2559,1,0,0,0,2559,2557,1,0,0,0,2559,2560,1,0,0,0,2560,2562,1,0,0,0,2561,2542,1,0,0,0,2561,2555,1,0,0,0,2562,383,1,0,0,0,2563,2564,3,386,193,0,2564,385,1,0,0,0,2565,2570,3,90,45,0,2566,2567,5,202,0,0,2567,2569,3,90,45,0,2568,2566,1,0,0,0,2569,2572,1,0,0,0,2570,2568,1,0,0,0,2570,2571,1,0,0,0,2571,387,1,0,0,0,2572,2570,1,0,0,0,2573,2574,3,390,195,0,2574,389,1,0,0,0,2575,2576,3,392,196,0,2576,391,1,0,0,0,2577,2578,3,90,45,0,2578,393,1,0,0,0,2579,2580,3,396,198,0,2580,395,1,0,0,0,2581,2588,5,207,0,0,2582,2588,5,184,0,0,2583,2585,5,46,0,0,2584,2586,7,21,0,0,2585,2584,1,0,0,0,2585,2586,1,0,0,0,2586,2588,1,0,0,0,2587,2581,1,0,0,0,2587,2582,1,0,0,0,2587,2583,1,0,0,0,2588,2589,1,0,0,0,2589,2590,3,0,0,0,2590,397,1,0,0,0,2591,2594,3,400,200,0,2592,2594,3,402,201,0,2593,2591,1,0,0,0,2593,2592,1,0,0,0,2594,399,1,0,0,0,2595,2597,5,103,0,0,2596,2598,3,46,23,0,2597,2596,1,0,0,0,2597,2598,1,0,0,0,2598,2599,1,0,0,0,2599,2600,3,210,105,0,2600,2601,3,130,65,0,2601,401,1,0,0,0,2602,2604,5,103,0,0,2603,2605,3,46,23,0,2604,2603,1,0,0,0,2604,2605,1,0,0,0,2605,2606,1,0,0,0,2606,2607,3,408,204,0,2607,2608,3,130,65,0,2608,403,1,0,0,0,2609,2610,3,406,203,0,2610,405,1,0,0,0,2611,2612,3,408,204,0,2612,407,1,0,0,0,2613,2617,5,211,0,0,2614,2615,3,410,205,0,2615,2616,5,181,0,0,2616,2618,1,0,0,0,2617,2614,1,0,0,0,2617,2618,1,0,0,0,2618,2619,1,0,0,0,2619,2620,3,410,205,0,2620,2621,5,212,0,0,2621,409,1,0,0,0,2622,2625,3,28,14,0,2623,2625,3,10,5,0,2624,2622,1,0,0,0,2624,2623,1,0,0,0,2625,411,1,0,0,0,2626,2627,3,112,56,0,2627,2628,5,101,0,0,2628,2629,3,164,82,0,2629,2630,3,130,65,0,2630,413,1,0,0,0,2631,2632,5,192,0,0,2632,2636,3,418,209,0,2633,2634,5,192,0,0,2634,2636,3,956,478,0,2635,2631,1,0,0,0,2635,2633,1,0,0,0,2636,415,1,0,0,0,2637,2638,5,192,0,0,2638,2642,3,418,209,0,2639,2640,5,192,0,0,2640,2642,3,956,478,0,2641,2637,1,0,0,0,2641,2639,1,0,0,0,2642,417,1,0,0,0,2643,2644,3,222,111,0,2644,419,1,0,0,0,2645,2647,3,416,208,0,2646,2645,1,0,0,0,2647,2650,1,0,0,0,2648,2646,1,0,0,0,2648,2649,1,0,0,0,2649,2651,1,0,0,0,2650,2648,1,0,0,0,2651,2652,7,22,0,0,2652,2662,3,422,211,0,2653,2654,5,1,0,0,2654,2659,3,56,28,0,2655,2656,5,200,0,0,2656,2658,3,56,28,0,2657,2655,1,0,0,0,2658,2661,1,0,0,0,2659,2657,1,0,0,0,2659,2660,1,0,0,0,2660,2663,1,0,0,0,2661,2659,1,0,0,0,2662,2653,1,0,0,0,2662,2663,1,0,0,0,2663,2664,1,0,0,0,2664,2665,3,424,212,0,2665,421,1,0,0,0,2666,2668,3,46,23,0,2667,2666,1,0,0,0,2667,2668,1,0,0,0,2668,2672,1,0,0,0,2669,2673,5,204,0,0,2670,2671,5,158,0,0,2671,2673,5,24,0,0,2672,2669,1,0,0,0,2672,2670,1,0,0,0,2673,2675,1,0,0,0,2674,2667,1,0,0,0,2674,2675,1,0,0,0,2675,2676,1,0,0,0,2676,2677,3,222,111,0,2677,423,1,0,0,0,2678,2699,5,205,0,0,2679,2683,5,214,0,0,2680,2682,3,426,213,0,2681,2680,1,0,0,0,2682,2685,1,0,0,0,2683,2681,1,0,0,0,2683,2684,1,0,0,0,2684,2686,1,0,0,0,2685,2683,1,0,0,0,2686,2699,5,216,0,0,2687,2694,5,214,0,0,2688,2693,3,470,235,0,2689,2693,3,962,481,0,2690,2693,3,88,44,0,2691,2693,3,92,46,0,2692,2688,1,0,0,0,2692,2689,1,0,0,0,2692,2690,1,0,0,0,2692,2691,1,0,0,0,2693,2696,1,0,0,0,2694,2692,1,0,0,0,2694,2695,1,0,0,0,2695,2697,1,0,0,0,2696,2694,1,0,0,0,2697,2699,5,216,0,0,2698,2678,1,0,0,0,2698,2679,1,0,0,0,2698,2687,1,0,0,0,2699,425,1,0,0,0,2700,2705,3,84,42,0,2701,2705,3,428,214,0,2702,2705,3,88,44,0,2703,2705,3,92,46,0,2704,2700,1,0,0,0,2704,2701,1,0,0,0,2704,2702,1,0,0,0,2704,2703,1,0,0,0,2705,427,1,0,0,0,2706,2707,3,430,215,0,2707,429,1,0,0,0,2708,2710,5,65,0,0,2709,2708,1,0,0,0,2709,2710,1,0,0,0,2710,2712,1,0,0,0,2711,2713,7,19,0,0,2712,2711,1,0,0,0,2712,2713,1,0,0,0,2713,2714,1,0,0,0,2714,2716,3,234,117,0,2715,2717,3,198,99,0,2716,2715,1,0,0,0,2716,2717,1,0,0,0,2717,2719,1,0,0,0,2718,2720,3,394,197,0,2719,2718,1,0,0,0,2719,2720,1,0,0,0,2720,2721,1,0,0,0,2721,2722,3,424,212,0,2722,431,1,0,0,0,2723,2725,3,416,208,0,2724,2723,1,0,0,0,2725,2728,1,0,0,0,2726,2724,1,0,0,0,2726,2727,1,0,0,0,2727,2729,1,0,0,0,2728,2726,1,0,0,0,2729,2730,3,436,218,0,2730,2731,3,438,219,0,2731,433,1,0,0,0,2732,2734,5,141,0,0,2733,2732,1,0,0,0,2733,2734,1,0,0,0,2734,2735,1,0,0,0,2735,2739,5,94,0,0,2736,2738,3,416,208,0,2737,2736,1,0,0,0,2738,2741,1,0,0,0,2739,2737,1,0,0,0,2739,2740,1,0,0,0,2740,2742,1,0,0,0,2741,2739,1,0,0,0,2742,2743,3,436,218,0,2743,2744,3,438,219,0,2744,435,1,0,0,0,2745,2747,5,115,0,0,2746,2748,3,46,23,0,2747,2746,1,0,0,0,2747,2748,1,0,0,0,2748,437,1,0,0,0,2749,2759,5,205,0,0,2750,2754,5,214,0,0,2751,2753,3,446,223,0,2752,2751,1,0,0,0,2753,2756,1,0,0,0,2754,2752,1,0,0,0,2754,2755,1,0,0,0,2755,2757,1,0,0,0,2756,2754,1,0,0,0,2757,2759,5,216,0,0,2758,2749,1,0,0,0,2758,2750,1,0,0,0,2759,439,1,0,0,0,2760,2761,3,78,39,0,2761,2762,5,68,0,0,2762,2763,3,0,0,0,2763,2764,5,205,0,0,2764,441,1,0,0,0,2765,2767,3,46,23,0,2766,2765,1,0,0,0,2766,2767,1,0,0,0,2767,2768,1,0,0,0,2768,2770,5,74,0,0,2769,2766,1,0,0,0,2769,2770,1,0,0,0,2770,2771,1,0,0,0,2771,2776,3,90,45,0,2772,2773,5,200,0,0,2773,2775,3,90,45,0,2774,2772,1,0,0,0,2775,2778,1,0,0,0,2776,2774,1,0,0,0,2776,2777,1,0,0,0,2777,2779,1,0,0,0,2778,2776,1,0,0,0,2779,2780,5,154,0,0,2780,2785,3,90,45,0,2781,2782,5,200,0,0,2782,2784,3,90,45,0,2783,2781,1,0,0,0,2784,2787,1,0,0,0,2785,2783,1,0,0,0,2785,2786,1,0,0,0,2786,443,1,0,0,0,2787,2785,1,0,0,0,2788,2789,3,60,30,0,2789,445,1,0,0,0,2790,2795,3,448,224,0,2791,2795,3,440,220,0,2792,2795,3,88,44,0,2793,2795,3,92,46,0,2794,2790,1,0,0,0,2794,2791,1,0,0,0,2794,2792,1,0,0,0,2794,2793,1,0,0,0,2795,447,1,0,0,0,2796,2799,3,78,39,0,2797,2800,3,450,225,0,2798,2800,3,452,226,0,2799,2797,1,0,0,0,2799,2798,1,0,0,0,2800,449,1,0,0,0,2801,2832,3,432,216,0,2802,2832,3,434,217,0,2803,2832,3,60,30,0,2804,2832,3,54,27,0,2805,2832,3,522,261,0,2806,2832,3,526,263,0,2807,2832,3,538,269,0,2808,2832,3,540,270,0,2809,2832,3,564,282,0,2810,2832,3,568,284,0,2811,2832,3,582,291,0,2812,2832,3,632,316,0,2813,2832,3,596,298,0,2814,2832,3,572,286,0,2815,2832,3,654,327,0,2816,2832,3,830,415,0,2817,2832,3,768,384,0,2818,2832,3,842,421,0,2819,2832,3,850,425,0,2820,2832,3,890,445,0,2821,2832,3,894,447,0,2822,2832,3,906,453,0,2823,2832,3,910,455,0,2824,2832,3,918,459,0,2825,2832,3,924,462,0,2826,2832,3,946,473,0,2827,2832,3,950,475,0,2828,2832,3,954,477,0,2829,2832,3,626,313,0,2830,2832,3,966,483,0,2831,2801,1,0,0,0,2831,2802,1,0,0,0,2831,2803,1,0,0,0,2831,2804,1,0,0,0,2831,2805,1,0,0,0,2831,2806,1,0,0,0,2831,2807,1,0,0,0,2831,2808,1,0,0,0,2831,2809,1,0,0,0,2831,2810,1,0,0,0,2831,2811,1,0,0,0,2831,2812,1,0,0,0,2831,2813,1,0,0,0,2831,2814,1,0,0,0,2831,2815,1,0,0,0,2831,2816,1,0,0,0,2831,2817,1,0,0,0,2831,2818,1,0,0,0,2831,2819,1,0,0,0,2831,2820,1,0,0,0,2831,2821,1,0,0,0,2831,2822,1,0,0,0,2831,2823,1,0,0,0,2831,2824,1,0,0,0,2831,2825,1,0,0,0,2831,2826,1,0,0,0,2831,2827,1,0,0,0,2831,2828,1,0,0,0,2831,2829,1,0,0,0,2831,2830,1,0,0,0,2832,451,1,0,0,0,2833,2836,3,510,255,0,2834,2836,3,512,256,0,2835,2833,1,0,0,0,2835,2834,1,0,0,0,2836,453,1,0,0,0,2837,2838,7,23,0,0,2838,455,1,0,0,0,2839,2840,3,416,208,0,2840,457,1,0,0,0,2841,2843,3,454,227,0,2842,2841,1,0,0,0,2842,2843,1,0,0,0,2843,2847,1,0,0,0,2844,2846,3,456,228,0,2845,2844,1,0,0,0,2846,2849,1,0,0,0,2847,2845,1,0,0,0,2847,2848,1,0,0,0,2848,459,1,0,0,0,2849,2847,1,0,0,0,2850,2851,3,462,231,0,2851,2852,3,464,232,0,2852,461,1,0,0,0,2853,2855,3,46,23,0,2854,2853,1,0,0,0,2854,2855,1,0,0,0,2855,2857,1,0,0,0,2856,2858,3,520,260,0,2857,2856,1,0,0,0,2857,2858,1,0,0,0,2858,463,1,0,0,0,2859,2869,5,205,0,0,2860,2864,5,214,0,0,2861,2863,3,466,233,0,2862,2861,1,0,0,0,2863,2866,1,0,0,0,2864,2862,1,0,0,0,2864,2865,1,0,0,0,2865,2867,1,0,0,0,2866,2864,1,0,0,0,2867,2869,5,216,0,0,2868,2859,1,0,0,0,2868,2860,1,0,0,0,2869,465,1,0,0,0,2870,2881,3,92,46,0,2871,2872,3,78,39,0,2872,2873,3,468,234,0,2873,2881,1,0,0,0,2874,2876,3,556,278,0,2875,2874,1,0,0,0,2875,2876,1,0,0,0,2876,2877,1,0,0,0,2877,2878,3,78,39,0,2878,2879,3,512,256,0,2879,2881,1,0,0,0,2880,2870,1,0,0,0,2880,2871,1,0,0,0,2880,2875,1,0,0,0,2881,467,1,0,0,0,2882,2887,5,7,0,0,2883,2884,5,206,0,0,2884,2885,3,44,22,0,2885,2886,5,208,0,0,2886,2888,1,0,0,0,2887,2883,1,0,0,0,2887,2888,1,0,0,0,2888,2890,1,0,0,0,2889,2891,3,44,22,0,2890,2889,1,0,0,0,2890,2891,1,0,0,0,2891,2892,1,0,0,0,2892,2893,5,71,0,0,2893,2894,3,90,45,0,2894,2895,3,48,24,0,2895,2901,1,0,0,0,2896,2897,5,164,0,0,2897,2901,3,518,259,0,2898,2901,3,450,225,0,2899,2901,3,510,255,0,2900,2882,1,0,0,0,2900,2896,1,0,0,0,2900,2898,1,0,0,0,2900,2899,1,0,0,0,2901,469,1,0,0,0,2902,2903,3,78,39,0,2903,2904,3,450,225,0,2904,471,1,0,0,0,2905,2906,3,78,39,0,2906,2907,5,164,0,0,2907,2908,3,518,259,0,2908,473,1,0,0,0,2909,2910,3,78,39,0,2910,2911,3,510,255,0,2911,475,1,0,0,0,2912,2913,3,78,39,0,2913,2914,3,512,256,0,2914,477,1,0,0,0,2915,2916,3,78,39,0,2916,2917,3,514,257,0,2917,479,1,0,0,0,2918,2919,3,78,39,0,2919,2920,3,516,258,0,2920,481,1,0,0,0,2921,2923,3,184,92,0,2922,2921,1,0,0,0,2922,2923,1,0,0,0,2923,2925,1,0,0,0,2924,2926,5,49,0,0,2925,2924,1,0,0,0,2925,2926,1,0,0,0,2926,2928,1,0,0,0,2927,2929,7,23,0,0,2928,2927,1,0,0,0,2928,2929,1,0,0,0,2929,2931,1,0,0,0,2930,2932,5,40,0,0,2931,2930,1,0,0,0,2931,2932,1,0,0,0,2932,483,1,0,0,0,2933,2935,3,482,241,0,2934,2936,5,127,0,0,2935,2934,1,0,0,0,2935,2936,1,0,0,0,2936,485,1,0,0,0,2937,2938,5,56,0,0,2938,2939,3,180,90,0,2939,487,1,0,0,0,2940,2941,3,416,208,0,2941,489,1,0,0,0,2942,2945,3,486,243,0,2943,2945,3,484,242,0,2944,2942,1,0,0,0,2944,2943,1,0,0,0,2945,491,1,0,0,0,2946,2950,3,490,245,0,2947,2949,3,488,244,0,2948,2947,1,0,0,0,2949,2952,1,0,0,0,2950,2948,1,0,0,0,2950,2951,1,0,0,0,2951,493,1,0,0,0,2952,2950,1,0,0,0,2953,2955,3,496,248,0,2954,2953,1,0,0,0,2954,2955,1,0,0,0,2955,2956,1,0,0,0,2956,2957,3,498,249,0,2957,495,1,0,0,0,2958,2960,3,46,23,0,2959,2961,3,198,99,0,2960,2959,1,0,0,0,2960,2961,1,0,0,0,2961,2964,1,0,0,0,2962,2964,3,198,99,0,2963,2958,1,0,0,0,2963,2962,1,0,0,0,2964,497,1,0,0,0,2965,2967,3,394,197,0,2966,2965,1,0,0,0,2966,2967,1,0,0,0,2967,2968,1,0,0,0,2968,2969,3,500,250,0,2969,499,1,0,0,0,2970,2971,3,464,232,0,2971,501,1,0,0,0,2972,2973,3,482,241,0,2973,2974,3,494,247,0,2974,503,1,0,0,0,2975,2978,3,486,243,0,2976,2978,3,482,241,0,2977,2975,1,0,0,0,2977,2976,1,0,0,0,2978,2979,1,0,0,0,2979,2980,5,127,0,0,2980,2981,3,494,247,0,2981,505,1,0,0,0,2982,2983,3,486,243,0,2983,2984,3,186,93,0,2984,2985,3,498,249,0,2985,507,1,0,0,0,2986,2990,3,228,114,0,2987,2989,3,202,101,0,2988,2987,1,0,0,0,2989,2992,1,0,0,0,2990,2988,1,0,0,0,2990,2991,1,0,0,0,2991,2993,1,0,0,0,2992,2990,1,0,0,0,2993,2994,3,500,250,0,2994,509,1,0,0,0,2995,3004,3,504,252,0,2996,3004,3,506,253,0,2997,3004,3,524,262,0,2998,3004,3,534,267,0,2999,3004,3,592,296,0,3e3,3004,3,594,297,0,3001,3004,3,968,484,0,3002,3004,3,502,251,0,3003,2995,1,0,0,0,3003,2996,1,0,0,0,3003,2997,1,0,0,0,3003,2998,1,0,0,0,3003,2999,1,0,0,0,3003,3e3,1,0,0,0,3003,3001,1,0,0,0,3003,3002,1,0,0,0,3004,511,1,0,0,0,3005,3008,3,514,257,0,3006,3008,3,516,258,0,3007,3005,1,0,0,0,3007,3006,1,0,0,0,3008,513,1,0,0,0,3009,3025,3,546,273,0,3010,3025,3,548,274,0,3011,3025,3,550,275,0,3012,3025,3,554,277,0,3013,3025,3,566,283,0,3014,3025,3,570,285,0,3015,3025,3,934,467,0,3016,3025,3,952,476,0,3017,3025,3,578,289,0,3018,3025,3,584,292,0,3019,3025,3,612,306,0,3020,3025,3,628,314,0,3021,3025,3,634,317,0,3022,3025,3,642,321,0,3023,3025,3,644,322,0,3024,3009,1,0,0,0,3024,3010,1,0,0,0,3024,3011,1,0,0,0,3024,3012,1,0,0,0,3024,3013,1,0,0,0,3024,3014,1,0,0,0,3024,3015,1,0,0,0,3024,3016,1,0,0,0,3024,3017,1,0,0,0,3024,3018,1,0,0,0,3024,3019,1,0,0,0,3024,3020,1,0,0,0,3024,3021,1,0,0,0,3024,3022,1,0,0,0,3024,3023,1,0,0,0,3025,515,1,0,0,0,3026,3043,3,672,336,0,3027,3043,3,832,416,0,3028,3043,3,796,398,0,3029,3043,3,844,422,0,3030,3043,3,878,439,0,3031,3043,3,892,446,0,3032,3043,3,896,448,0,3033,3043,3,908,454,0,3034,3043,3,912,456,0,3035,3043,3,920,460,0,3036,3043,3,948,474,0,3037,3043,3,676,338,0,3038,3043,3,800,400,0,3039,3043,3,922,461,0,3040,3043,3,846,423,0,3041,3043,3,880,440,0,3042,3026,1,0,0,0,3042,3027,1,0,0,0,3042,3028,1,0,0,0,3042,3029,1,0,0,0,3042,3030,1,0,0,0,3042,3031,1,0,0,0,3042,3032,1,0,0,0,3042,3033,1,0,0,0,3042,3034,1,0,0,0,3042,3035,1,0,0,0,3042,3036,1,0,0,0,3042,3037,1,0,0,0,3042,3038,1,0,0,0,3042,3039,1,0,0,0,3042,3040,1,0,0,0,3042,3041,1,0,0,0,3043,517,1,0,0,0,3044,3066,3,508,254,0,3045,3066,3,504,252,0,3046,3066,3,524,262,0,3047,3066,3,592,296,0,3048,3066,3,594,297,0,3049,3066,3,546,273,0,3050,3066,3,548,274,0,3051,3066,3,550,275,0,3052,3066,3,554,277,0,3053,3066,3,566,283,0,3054,3066,3,570,285,0,3055,3066,3,934,467,0,3056,3066,3,952,476,0,3057,3066,3,578,289,0,3058,3066,3,584,292,0,3059,3066,3,612,306,0,3060,3066,3,628,314,0,3061,3066,3,634,317,0,3062,3066,3,642,321,0,3063,3066,3,644,322,0,3064,3066,3,516,258,0,3065,3044,1,0,0,0,3065,3045,1,0,0,0,3065,3046,1,0,0,0,3065,3047,1,0,0,0,3065,3048,1,0,0,0,3065,3049,1,0,0,0,3065,3050,1,0,0,0,3065,3051,1,0,0,0,3065,3052,1,0,0,0,3065,3053,1,0,0,0,3065,3054,1,0,0,0,3065,3055,1,0,0,0,3065,3056,1,0,0,0,3065,3057,1,0,0,0,3065,3058,1,0,0,0,3065,3059,1,0,0,0,3065,3060,1,0,0,0,3065,3061,1,0,0,0,3065,3062,1,0,0,0,3065,3063,1,0,0,0,3065,3064,1,0,0,0,3066,519,1,0,0,0,3067,3068,7,11,0,0,3068,3073,3,170,85,0,3069,3070,5,200,0,0,3070,3072,3,170,85,0,3071,3069,1,0,0,0,3072,3075,1,0,0,0,3073,3071,1,0,0,0,3073,3074,1,0,0,0,3074,521,1,0,0,0,3075,3073,1,0,0,0,3076,3077,3,458,229,0,3077,3078,5,19,0,0,3078,3079,5,45,0,0,3079,3080,3,460,230,0,3080,523,1,0,0,0,3081,3082,3,492,246,0,3082,3083,5,19,0,0,3083,3084,3,494,247,0,3084,525,1,0,0,0,3085,3087,3,456,228,0,3086,3085,1,0,0,0,3087,3090,1,0,0,0,3088,3086,1,0,0,0,3088,3089,1,0,0,0,3089,3091,1,0,0,0,3090,3088,1,0,0,0,3091,3092,5,58,0,0,3092,3093,5,45,0,0,3093,3094,3,462,231,0,3094,3095,3,528,264,0,3095,527,1,0,0,0,3096,3107,5,205,0,0,3097,3102,5,214,0,0,3098,3101,3,444,222,0,3099,3101,3,530,265,0,3100,3098,1,0,0,0,3100,3099,1,0,0,0,3101,3104,1,0,0,0,3102,3100,1,0,0,0,3102,3103,1,0,0,0,3103,3105,1,0,0,0,3104,3102,1,0,0,0,3105,3107,5,216,0,0,3106,3096,1,0,0,0,3106,3097,1,0,0,0,3107,529,1,0,0,0,3108,3109,3,78,39,0,3109,3110,3,532,266,0,3110,531,1,0,0,0,3111,3113,5,58,0,0,3112,3111,1,0,0,0,3112,3113,1,0,0,0,3113,3114,1,0,0,0,3114,3115,3,494,247,0,3115,533,1,0,0,0,3116,3117,3,492,246,0,3117,3118,5,58,0,0,3118,3119,3,494,247,0,3119,535,1,0,0,0,3120,3122,3,454,227,0,3121,3120,1,0,0,0,3121,3122,1,0,0,0,3122,3125,1,0,0,0,3123,3124,5,82,0,0,3124,3126,3,542,271,0,3125,3123,1,0,0,0,3125,3126,1,0,0,0,3126,3130,1,0,0,0,3127,3129,3,456,228,0,3128,3127,1,0,0,0,3129,3132,1,0,0,0,3130,3128,1,0,0,0,3130,3131,1,0,0,0,3131,537,1,0,0,0,3132,3130,1,0,0,0,3133,3134,3,536,268,0,3134,3135,5,110,0,0,3135,3136,5,45,0,0,3136,3137,3,460,230,0,3137,539,1,0,0,0,3138,3140,3,454,227,0,3139,3138,1,0,0,0,3139,3140,1,0,0,0,3140,3141,1,0,0,0,3141,3145,5,82,0,0,3142,3144,3,456,228,0,3143,3142,1,0,0,0,3144,3147,1,0,0,0,3145,3143,1,0,0,0,3145,3146,1,0,0,0,3146,3148,1,0,0,0,3147,3145,1,0,0,0,3148,3149,5,45,0,0,3149,3150,3,460,230,0,3150,3151,3,542,271,0,3151,541,1,0,0,0,3152,3153,3,980,490,0,3153,543,1,0,0,0,3154,3156,3,484,242,0,3155,3157,5,82,0,0,3156,3155,1,0,0,0,3156,3157,1,0,0,0,3157,3159,1,0,0,0,3158,3160,3,552,276,0,3159,3158,1,0,0,0,3159,3160,1,0,0,0,3160,3164,1,0,0,0,3161,3163,3,488,244,0,3162,3161,1,0,0,0,3163,3166,1,0,0,0,3164,3162,1,0,0,0,3164,3165,1,0,0,0,3165,545,1,0,0,0,3166,3164,1,0,0,0,3167,3168,3,544,272,0,3168,3169,5,110,0,0,3169,3170,3,494,247,0,3170,547,1,0,0,0,3171,3172,3,484,242,0,3172,3176,5,82,0,0,3173,3175,3,488,244,0,3174,3173,1,0,0,0,3175,3178,1,0,0,0,3176,3174,1,0,0,0,3176,3177,1,0,0,0,3177,3179,1,0,0,0,3178,3176,1,0,0,0,3179,3180,3,494,247,0,3180,549,1,0,0,0,3181,3183,3,484,242,0,3182,3184,5,82,0,0,3183,3182,1,0,0,0,3183,3184,1,0,0,0,3184,3185,1,0,0,0,3185,3189,3,552,276,0,3186,3188,3,488,244,0,3187,3186,1,0,0,0,3188,3191,1,0,0,0,3189,3187,1,0,0,0,3189,3190,1,0,0,0,3190,3192,1,0,0,0,3191,3189,1,0,0,0,3192,3193,3,494,247,0,3193,551,1,0,0,0,3194,3195,7,24,0,0,3195,553,1,0,0,0,3196,3197,3,544,272,0,3197,3206,5,59,0,0,3198,3200,3,228,114,0,3199,3201,3,198,99,0,3200,3199,1,0,0,0,3200,3201,1,0,0,0,3201,3207,1,0,0,0,3202,3204,5,110,0,0,3203,3205,3,496,248,0,3204,3203,1,0,0,0,3204,3205,1,0,0,0,3205,3207,1,0,0,0,3206,3198,1,0,0,0,3206,3202,1,0,0,0,3207,3208,1,0,0,0,3208,3209,3,498,249,0,3209,555,1,0,0,0,3210,3211,5,152,0,0,3211,3212,3,558,279,0,3212,557,1,0,0,0,3213,3214,3,560,280,0,3214,559,1,0,0,0,3215,3216,3,562,281,0,3216,561,1,0,0,0,3217,3219,3,404,202,0,3218,3217,1,0,0,0,3218,3219,1,0,0,0,3219,563,1,0,0,0,3220,3221,3,536,268,0,3221,3222,5,91,0,0,3222,3223,5,45,0,0,3223,3224,3,460,230,0,3224,565,1,0,0,0,3225,3226,3,544,272,0,3226,3227,5,91,0,0,3227,3228,3,494,247,0,3228,567,1,0,0,0,3229,3230,3,536,268,0,3230,3231,5,117,0,0,3231,3232,5,45,0,0,3232,3233,3,460,230,0,3233,569,1,0,0,0,3234,3235,3,544,272,0,3235,3236,5,117,0,0,3236,3237,3,494,247,0,3237,571,1,0,0,0,3238,3239,3,458,229,0,3239,3240,5,119,0,0,3240,3241,5,45,0,0,3241,3242,3,460,230,0,3242,3243,3,574,287,0,3243,573,1,0,0,0,3244,3245,3,576,288,0,3245,575,1,0,0,0,3246,3247,3,988,494,0,3247,577,1,0,0,0,3248,3249,3,544,272,0,3249,3250,5,119,0,0,3250,3251,3,494,247,0,3251,579,1,0,0,0,3252,3253,5,217,0,0,3253,3254,3,90,45,0,3254,581,1,0,0,0,3255,3256,3,536,268,0,3256,3257,5,37,0,0,3257,3258,5,45,0,0,3258,3259,3,460,230,0,3259,583,1,0,0,0,3260,3274,3,544,272,0,3261,3263,5,37,0,0,3262,3264,3,496,248,0,3263,3262,1,0,0,0,3263,3264,1,0,0,0,3264,3266,1,0,0,0,3265,3267,3,394,197,0,3266,3265,1,0,0,0,3266,3267,1,0,0,0,3267,3270,1,0,0,0,3268,3269,5,36,0,0,3269,3271,3,586,293,0,3270,3268,1,0,0,0,3270,3271,1,0,0,0,3271,3275,1,0,0,0,3272,3273,5,36,0,0,3273,3275,3,586,293,0,3274,3261,1,0,0,0,3274,3272,1,0,0,0,3275,3276,1,0,0,0,3276,3277,3,500,250,0,3277,585,1,0,0,0,3278,3281,3,588,294,0,3279,3281,3,590,295,0,3280,3278,1,0,0,0,3280,3279,1,0,0,0,3281,587,1,0,0,0,3282,3283,3,268,134,0,3283,3284,5,154,0,0,3284,3285,3,268,134,0,3285,589,1,0,0,0,3286,3287,5,196,0,0,3287,3288,3,268,134,0,3288,3289,5,200,0,0,3289,3294,3,268,134,0,3290,3291,5,200,0,0,3291,3293,3,268,134,0,3292,3290,1,0,0,0,3293,3296,1,0,0,0,3294,3292,1,0,0,0,3294,3295,1,0,0,0,3295,3297,1,0,0,0,3296,3294,1,0,0,0,3297,3298,5,197,0,0,3298,591,1,0,0,0,3299,3304,3,492,246,0,3300,3302,5,22,0,0,3301,3303,3,496,248,0,3302,3301,1,0,0,0,3302,3303,1,0,0,0,3303,3305,1,0,0,0,3304,3300,1,0,0,0,3304,3305,1,0,0,0,3305,3306,1,0,0,0,3306,3307,5,21,0,0,3307,3308,3,268,134,0,3308,3309,5,207,0,0,3309,3310,3,268,134,0,3310,3311,3,500,250,0,3311,593,1,0,0,0,3312,3317,3,492,246,0,3313,3315,5,150,0,0,3314,3316,3,496,248,0,3315,3314,1,0,0,0,3315,3316,1,0,0,0,3316,3318,1,0,0,0,3317,3313,1,0,0,0,3317,3318,1,0,0,0,3318,3319,1,0,0,0,3319,3320,5,69,0,0,3320,3321,3,268,134,0,3321,3322,5,152,0,0,3322,3323,3,268,134,0,3323,3324,3,500,250,0,3324,595,1,0,0,0,3325,3326,3,536,268,0,3326,3327,5,85,0,0,3327,3328,5,45,0,0,3328,3329,3,462,231,0,3329,3330,3,598,299,0,3330,597,1,0,0,0,3331,3341,5,205,0,0,3332,3336,5,214,0,0,3333,3335,3,600,300,0,3334,3333,1,0,0,0,3335,3338,1,0,0,0,3336,3334,1,0,0,0,3336,3337,1,0,0,0,3337,3339,1,0,0,0,3338,3336,1,0,0,0,3339,3341,5,216,0,0,3340,3331,1,0,0,0,3340,3332,1,0,0,0,3341,599,1,0,0,0,3342,3352,3,470,235,0,3343,3352,3,472,236,0,3344,3352,3,602,301,0,3345,3347,3,556,278,0,3346,3345,1,0,0,0,3346,3347,1,0,0,0,3347,3348,1,0,0,0,3348,3352,3,606,303,0,3349,3352,3,88,44,0,3350,3352,3,92,46,0,3351,3342,1,0,0,0,3351,3343,1,0,0,0,3351,3344,1,0,0,0,3351,3346,1,0,0,0,3351,3349,1,0,0,0,3351,3350,1,0,0,0,3352,601,1,0,0,0,3353,3354,3,78,39,0,3354,3355,3,604,302,0,3355,603,1,0,0,0,3356,3362,3,504,252,0,3357,3362,3,524,262,0,3358,3362,3,534,267,0,3359,3362,3,592,296,0,3360,3362,3,594,297,0,3361,3356,1,0,0,0,3361,3357,1,0,0,0,3361,3358,1,0,0,0,3361,3359,1,0,0,0,3361,3360,1,0,0,0,3362,605,1,0,0,0,3363,3364,3,78,39,0,3364,3365,3,608,304,0,3365,607,1,0,0,0,3366,3370,3,610,305,0,3367,3370,3,514,257,0,3368,3370,3,516,258,0,3369,3366,1,0,0,0,3369,3367,1,0,0,0,3369,3368,1,0,0,0,3370,609,1,0,0,0,3371,3372,5,56,0,0,3372,3373,3,494,247,0,3373,611,1,0,0,0,3374,3375,3,544,272,0,3375,3376,5,85,0,0,3376,3377,3,614,307,0,3377,3378,3,598,299,0,3378,613,1,0,0,0,3379,3381,3,496,248,0,3380,3379,1,0,0,0,3380,3381,1,0,0,0,3381,3383,1,0,0,0,3382,3384,3,394,197,0,3383,3382,1,0,0,0,3383,3384,1,0,0,0,3384,3387,1,0,0,0,3385,3386,5,36,0,0,3386,3388,3,616,308,0,3387,3385,1,0,0,0,3387,3388,1,0,0,0,3388,3391,1,0,0,0,3389,3391,3,616,308,0,3390,3380,1,0,0,0,3390,3389,1,0,0,0,3391,615,1,0,0,0,3392,3395,3,618,309,0,3393,3395,3,620,310,0,3394,3392,1,0,0,0,3394,3393,1,0,0,0,3395,617,1,0,0,0,3396,3397,3,622,311,0,3397,3398,5,154,0,0,3398,3399,3,622,311,0,3399,619,1,0,0,0,3400,3401,5,196,0,0,3401,3402,3,622,311,0,3402,3403,5,200,0,0,3403,3408,3,622,311,0,3404,3405,5,200,0,0,3405,3407,3,622,311,0,3406,3404,1,0,0,0,3407,3410,1,0,0,0,3408,3406,1,0,0,0,3408,3409,1,0,0,0,3409,3411,1,0,0,0,3410,3408,1,0,0,0,3411,3412,5,197,0,0,3412,621,1,0,0,0,3413,3414,3,624,312,0,3414,623,1,0,0,0,3415,3417,3,272,136,0,3416,3415,1,0,0,0,3416,3417,1,0,0,0,3417,3421,1,0,0,0,3418,3419,3,44,22,0,3419,3420,7,17,0,0,3420,3422,1,0,0,0,3421,3418,1,0,0,0,3421,3422,1,0,0,0,3422,3423,1,0,0,0,3423,3424,3,228,114,0,3424,625,1,0,0,0,3425,3426,3,536,268,0,3426,3427,5,10,0,0,3427,3428,5,45,0,0,3428,3429,3,460,230,0,3429,627,1,0,0,0,3430,3431,3,544,272,0,3431,3432,3,630,315,0,3432,3433,3,500,250,0,3433,629,1,0,0,0,3434,3436,5,10,0,0,3435,3437,3,496,248,0,3436,3435,1,0,0,0,3436,3437,1,0,0,0,3437,3440,1,0,0,0,3438,3439,5,9,0,0,3439,3441,3,586,293,0,3440,3438,1,0,0,0,3440,3441,1,0,0,0,3441,3445,1,0,0,0,3442,3443,5,9,0,0,3443,3445,3,586,293,0,3444,3434,1,0,0,0,3444,3442,1,0,0,0,3445,631,1,0,0,0,3446,3447,3,536,268,0,3447,3448,5,70,0,0,3448,3449,5,45,0,0,3449,3450,3,460,230,0,3450,633,1,0,0,0,3451,3452,3,544,272,0,3452,3453,5,99,0,0,3453,3454,3,636,318,0,3454,3455,3,464,232,0,3455,635,1,0,0,0,3456,3458,3,496,248,0,3457,3456,1,0,0,0,3457,3458,1,0,0,0,3458,3460,1,0,0,0,3459,3461,3,394,197,0,3460,3459,1,0,0,0,3460,3461,1,0,0,0,3461,3464,1,0,0,0,3462,3463,5,111,0,0,3463,3465,3,646,323,0,3464,3462,1,0,0,0,3464,3465,1,0,0,0,3465,3471,1,0,0,0,3466,3467,5,74,0,0,3467,3468,3,638,319,0,3468,3469,5,154,0,0,3469,3470,3,638,319,0,3470,3472,1,0,0,0,3471,3466,1,0,0,0,3471,3472,1,0,0,0,3472,3478,1,0,0,0,3473,3474,3,638,319,0,3474,3475,5,154,0,0,3475,3476,3,638,319,0,3476,3478,1,0,0,0,3477,3457,1,0,0,0,3477,3473,1,0,0,0,3478,637,1,0,0,0,3479,3480,3,640,320,0,3480,639,1,0,0,0,3481,3482,3,228,114,0,3482,641,1,0,0,0,3483,3484,3,544,272,0,3484,3485,5,70,0,0,3485,3486,3,376,188,0,3486,3487,3,464,232,0,3487,643,1,0,0,0,3488,3489,3,544,272,0,3489,3490,5,150,0,0,3490,3491,5,70,0,0,3491,3492,3,376,188,0,3492,3493,3,464,232,0,3493,645,1,0,0,0,3494,3495,3,648,324,0,3495,647,1,0,0,0,3496,3497,3,380,190,0,3497,649,1,0,0,0,3498,3501,3,90,45,0,3499,3501,3,652,326,0,3500,3498,1,0,0,0,3500,3499,1,0,0,0,3501,651,1,0,0,0,3502,3503,3,240,120,0,3503,3504,5,202,0,0,3504,3506,1,0,0,0,3505,3502,1,0,0,0,3506,3507,1,0,0,0,3507,3505,1,0,0,0,3507,3508,1,0,0,0,3508,3509,1,0,0,0,3509,3510,3,240,120,0,3510,3511,5,202,0,0,3511,653,1,0,0,0,3512,3513,3,536,268,0,3513,3514,5,4,0,0,3514,3515,5,45,0,0,3515,3516,3,462,231,0,3516,3517,3,656,328,0,3517,655,1,0,0,0,3518,3528,5,205,0,0,3519,3523,5,214,0,0,3520,3522,3,658,329,0,3521,3520,1,0,0,0,3522,3525,1,0,0,0,3523,3521,1,0,0,0,3523,3524,1,0,0,0,3524,3526,1,0,0,0,3525,3523,1,0,0,0,3526,3528,5,216,0,0,3527,3518,1,0,0,0,3527,3519,1,0,0,0,3528,657,1,0,0,0,3529,3549,3,660,330,0,3530,3534,3,664,332,0,3531,3533,3,668,334,0,3532,3531,1,0,0,0,3533,3536,1,0,0,0,3534,3532,1,0,0,0,3534,3535,1,0,0,0,3535,3549,1,0,0,0,3536,3534,1,0,0,0,3537,3539,3,556,278,0,3538,3537,1,0,0,0,3538,3539,1,0,0,0,3539,3540,1,0,0,0,3540,3544,3,662,331,0,3541,3543,3,668,334,0,3542,3541,1,0,0,0,3543,3546,1,0,0,0,3544,3542,1,0,0,0,3544,3545,1,0,0,0,3545,3549,1,0,0,0,3546,3544,1,0,0,0,3547,3549,3,670,335,0,3548,3529,1,0,0,0,3548,3530,1,0,0,0,3548,3538,1,0,0,0,3548,3547,1,0,0,0,3549,659,1,0,0,0,3550,3560,3,92,46,0,3551,3560,3,88,44,0,3552,3560,3,470,235,0,3553,3560,3,472,236,0,3554,3560,3,474,237,0,3555,3557,3,556,278,0,3556,3555,1,0,0,0,3556,3557,1,0,0,0,3557,3558,1,0,0,0,3558,3560,3,478,239,0,3559,3550,1,0,0,0,3559,3551,1,0,0,0,3559,3552,1,0,0,0,3559,3553,1,0,0,0,3559,3554,1,0,0,0,3559,3556,1,0,0,0,3560,661,1,0,0,0,3561,3564,3,480,240,0,3562,3564,3,666,333,0,3563,3561,1,0,0,0,3563,3562,1,0,0,0,3564,663,1,0,0,0,3565,3566,3,78,39,0,3566,3567,5,69,0,0,3567,3568,3,90,45,0,3568,3569,3,48,24,0,3569,665,1,0,0,0,3570,3571,3,78,39,0,3571,3572,3,680,340,0,3572,667,1,0,0,0,3573,3574,3,78,39,0,3574,3575,3,758,379,0,3575,669,1,0,0,0,3576,3577,3,78,39,0,3577,3578,3,766,383,0,3578,671,1,0,0,0,3579,3580,3,544,272,0,3580,3581,5,4,0,0,3581,3582,3,674,337,0,3582,3583,3,656,328,0,3583,673,1,0,0,0,3584,3586,3,496,248,0,3585,3584,1,0,0,0,3585,3586,1,0,0,0,3586,3588,1,0,0,0,3587,3589,3,394,197,0,3588,3587,1,0,0,0,3588,3589,1,0,0,0,3589,675,1,0,0,0,3590,3591,3,544,272,0,3591,3592,5,118,0,0,3592,3593,3,678,339,0,3593,3594,3,656,328,0,3594,677,1,0,0,0,3595,3597,3,228,114,0,3596,3598,3,198,99,0,3597,3596,1,0,0,0,3597,3598,1,0,0,0,3598,3604,1,0,0,0,3599,3601,5,4,0,0,3600,3602,3,496,248,0,3601,3600,1,0,0,0,3601,3602,1,0,0,0,3602,3604,1,0,0,0,3603,3595,1,0,0,0,3603,3599,1,0,0,0,3604,3606,1,0,0,0,3605,3607,3,394,197,0,3606,3605,1,0,0,0,3606,3607,1,0,0,0,3607,679,1,0,0,0,3608,3617,3,686,343,0,3609,3617,3,714,357,0,3610,3617,3,698,349,0,3611,3617,3,728,364,0,3612,3617,3,738,369,0,3613,3617,3,740,370,0,3614,3617,3,750,375,0,3615,3617,3,752,376,0,3616,3608,1,0,0,0,3616,3609,1,0,0,0,3616,3610,1,0,0,0,3616,3611,1,0,0,0,3616,3612,1,0,0,0,3616,3613,1,0,0,0,3616,3614,1,0,0,0,3616,3615,1,0,0,0,3617,681,1,0,0,0,3618,3620,5,4,0,0,3619,3621,3,496,248,0,3620,3619,1,0,0,0,3620,3621,1,0,0,0,3621,683,1,0,0,0,3622,3624,3,544,272,0,3623,3625,3,682,341,0,3624,3623,1,0,0,0,3624,3625,1,0,0,0,3625,685,1,0,0,0,3626,3631,3,690,345,0,3627,3631,3,692,346,0,3628,3631,3,694,347,0,3629,3631,3,696,348,0,3630,3626,1,0,0,0,3630,3627,1,0,0,0,3630,3628,1,0,0,0,3630,3629,1,0,0,0,3631,687,1,0,0,0,3632,3634,3,482,241,0,3633,3635,5,82,0,0,3634,3633,1,0,0,0,3634,3635,1,0,0,0,3635,3637,1,0,0,0,3636,3638,3,552,276,0,3637,3636,1,0,0,0,3637,3638,1,0,0,0,3638,3642,1,0,0,0,3639,3641,3,488,244,0,3640,3639,1,0,0,0,3641,3644,1,0,0,0,3642,3640,1,0,0,0,3642,3643,1,0,0,0,3643,689,1,0,0,0,3644,3642,1,0,0,0,3645,3646,3,688,344,0,3646,3648,5,98,0,0,3647,3649,3,496,248,0,3648,3647,1,0,0,0,3648,3649,1,0,0,0,3649,3650,1,0,0,0,3650,3651,3,656,328,0,3651,691,1,0,0,0,3652,3653,3,688,344,0,3653,3655,5,44,0,0,3654,3656,3,496,248,0,3655,3654,1,0,0,0,3655,3656,1,0,0,0,3656,3657,1,0,0,0,3657,3658,3,656,328,0,3658,693,1,0,0,0,3659,3660,3,688,344,0,3660,3662,5,92,0,0,3661,3663,3,496,248,0,3662,3661,1,0,0,0,3662,3663,1,0,0,0,3663,3664,1,0,0,0,3664,3665,3,656,328,0,3665,695,1,0,0,0,3666,3667,3,688,344,0,3667,3669,5,72,0,0,3668,3670,3,496,248,0,3669,3668,1,0,0,0,3669,3670,1,0,0,0,3670,3671,1,0,0,0,3671,3672,3,656,328,0,3672,697,1,0,0,0,3673,3674,3,544,272,0,3674,3675,3,700,350,0,3675,3676,3,656,328,0,3676,699,1,0,0,0,3677,3679,3,682,341,0,3678,3677,1,0,0,0,3678,3679,1,0,0,0,3679,3680,1,0,0,0,3680,3681,5,3,0,0,3681,3682,3,702,351,0,3682,701,1,0,0,0,3683,3686,3,704,352,0,3684,3685,5,168,0,0,3685,3687,3,720,360,0,3686,3684,1,0,0,0,3686,3687,1,0,0,0,3687,703,1,0,0,0,3688,3689,3,706,353,0,3689,705,1,0,0,0,3690,3699,3,380,190,0,3691,3693,3,46,23,0,3692,3691,1,0,0,0,3692,3693,1,0,0,0,3693,3695,1,0,0,0,3694,3696,3,382,191,0,3695,3694,1,0,0,0,3695,3696,1,0,0,0,3696,3697,1,0,0,0,3697,3699,3,708,354,0,3698,3690,1,0,0,0,3698,3692,1,0,0,0,3699,707,1,0,0,0,3700,3701,3,710,355,0,3701,709,1,0,0,0,3702,3703,3,712,356,0,3703,711,1,0,0,0,3704,3705,7,25,0,0,3705,3709,3,40,20,0,3706,3707,5,171,0,0,3707,3709,3,42,21,0,3708,3704,1,0,0,0,3708,3706,1,0,0,0,3709,713,1,0,0,0,3710,3713,3,544,272,0,3711,3714,3,682,341,0,3712,3714,3,674,337,0,3713,3711,1,0,0,0,3713,3712,1,0,0,0,3714,3715,1,0,0,0,3715,3723,5,136,0,0,3716,3718,3,720,360,0,3717,3719,3,718,359,0,3718,3717,1,0,0,0,3718,3719,1,0,0,0,3719,3724,1,0,0,0,3720,3721,3,726,363,0,3721,3722,3,718,359,0,3722,3724,1,0,0,0,3723,3716,1,0,0,0,3723,3720,1,0,0,0,3724,3725,1,0,0,0,3725,3726,3,656,328,0,3726,715,1,0,0,0,3727,3729,3,682,341,0,3728,3727,1,0,0,0,3728,3729,1,0,0,0,3729,3730,1,0,0,0,3730,3731,5,136,0,0,3731,3733,3,720,360,0,3732,3734,3,718,359,0,3733,3732,1,0,0,0,3733,3734,1,0,0,0,3734,717,1,0,0,0,3735,3736,5,168,0,0,3736,3739,3,720,360,0,3737,3738,5,154,0,0,3738,3740,3,720,360,0,3739,3737,1,0,0,0,3739,3740,1,0,0,0,3740,3746,1,0,0,0,3741,3742,3,726,363,0,3742,3743,5,154,0,0,3743,3744,3,720,360,0,3744,3746,1,0,0,0,3745,3735,1,0,0,0,3745,3741,1,0,0,0,3746,719,1,0,0,0,3747,3748,3,722,361,0,3748,721,1,0,0,0,3749,3750,3,724,362,0,3750,723,1,0,0,0,3751,3752,3,0,0,0,3752,725,1,0,0,0,3753,3754,3,982,491,0,3754,727,1,0,0,0,3755,3756,3,544,272,0,3756,3757,3,730,365,0,3757,3758,3,656,328,0,3758,729,1,0,0,0,3759,3761,3,682,341,0,3760,3759,1,0,0,0,3760,3761,1,0,0,0,3761,3762,1,0,0,0,3762,3763,5,15,0,0,3763,3764,3,732,366,0,3764,3765,3,340,170,0,3765,3766,5,184,0,0,3766,3767,3,720,360,0,3767,731,1,0,0,0,3768,3769,3,734,367,0,3769,733,1,0,0,0,3770,3771,3,736,368,0,3771,3772,5,202,0,0,3772,3774,1,0,0,0,3773,3770,1,0,0,0,3773,3774,1,0,0,0,3774,735,1,0,0,0,3775,3776,3,986,493,0,3776,737,1,0,0,0,3777,3779,3,544,272,0,3778,3780,3,682,341,0,3779,3778,1,0,0,0,3779,3780,1,0,0,0,3780,3781,1,0,0,0,3781,3783,5,151,0,0,3782,3784,3,720,360,0,3783,3782,1,0,0,0,3783,3784,1,0,0,0,3784,3785,1,0,0,0,3785,3786,3,656,328,0,3786,739,1,0,0,0,3787,3788,3,684,342,0,3788,3789,5,77,0,0,3789,3790,3,742,371,0,3790,3796,3,744,372,0,3791,3794,5,55,0,0,3792,3795,3,744,372,0,3793,3795,3,748,374,0,3794,3792,1,0,0,0,3794,3793,1,0,0,0,3795,3797,1,0,0,0,3796,3791,1,0,0,0,3796,3797,1,0,0,0,3797,741,1,0,0,0,3798,3799,3,0,0,0,3799,743,1,0,0,0,3800,3801,3,746,373,0,3801,745,1,0,0,0,3802,3804,5,4,0,0,3803,3805,3,496,248,0,3804,3803,1,0,0,0,3804,3805,1,0,0,0,3805,3807,1,0,0,0,3806,3802,1,0,0,0,3806,3807,1,0,0,0,3807,3808,1,0,0,0,3808,3812,5,214,0,0,3809,3811,3,658,329,0,3810,3809,1,0,0,0,3811,3814,1,0,0,0,3812,3810,1,0,0,0,3812,3813,1,0,0,0,3813,3815,1,0,0,0,3814,3812,1,0,0,0,3815,3816,5,216,0,0,3816,747,1,0,0,0,3817,3818,3,740,370,0,3818,749,1,0,0,0,3819,3824,3,684,342,0,3820,3821,5,172,0,0,3821,3825,3,742,371,0,3822,3823,5,96,0,0,3823,3825,3,726,363,0,3824,3820,1,0,0,0,3824,3822,1,0,0,0,3825,3826,1,0,0,0,3826,3831,3,744,372,0,3827,3828,5,161,0,0,3828,3829,3,742,371,0,3829,3830,5,205,0,0,3830,3832,1,0,0,0,3831,3827,1,0,0,0,3831,3832,1,0,0,0,3832,751,1,0,0,0,3833,3834,3,684,342,0,3834,3835,5,71,0,0,3835,3836,3,754,377,0,3836,3837,5,80,0,0,3837,3838,3,720,360,0,3838,3839,3,744,372,0,3839,753,1,0,0,0,3840,3842,3,496,248,0,3841,3840,1,0,0,0,3841,3842,1,0,0,0,3842,755,1,0,0,0,3843,3845,3,496,248,0,3844,3843,1,0,0,0,3844,3845,1,0,0,0,3845,757,1,0,0,0,3846,3850,3,760,380,0,3847,3850,3,762,381,0,3848,3850,3,764,382,0,3849,3846,1,0,0,0,3849,3847,1,0,0,0,3849,3848,1,0,0,0,3850,3851,1,0,0,0,3851,3852,3,500,250,0,3852,759,1,0,0,0,3853,3854,3,560,280,0,3854,3855,5,152,0,0,3855,3856,3,268,134,0,3856,761,1,0,0,0,3857,3858,3,810,405,0,3858,3859,5,152,0,0,3859,3860,3,824,412,0,3860,763,1,0,0,0,3861,3862,5,55,0,0,3862,3863,3,824,412,0,3863,765,1,0,0,0,3864,3866,5,150,0,0,3865,3867,3,496,248,0,3866,3865,1,0,0,0,3866,3867,1,0,0,0,3867,3869,1,0,0,0,3868,3864,1,0,0,0,3868,3869,1,0,0,0,3869,3870,1,0,0,0,3870,3871,5,69,0,0,3871,3872,3,340,170,0,3872,3873,3,810,405,0,3873,3874,5,152,0,0,3874,3875,3,824,412,0,3875,3876,3,500,250,0,3876,767,1,0,0,0,3877,3878,3,536,268,0,3878,3879,5,142,0,0,3879,3880,5,45,0,0,3880,3881,3,462,231,0,3881,3882,3,770,385,0,3882,769,1,0,0,0,3883,3896,5,205,0,0,3884,3886,5,116,0,0,3885,3884,1,0,0,0,3885,3886,1,0,0,0,3886,3887,1,0,0,0,3887,3891,5,214,0,0,3888,3890,3,772,386,0,3889,3888,1,0,0,0,3890,3893,1,0,0,0,3891,3889,1,0,0,0,3891,3892,1,0,0,0,3892,3894,1,0,0,0,3893,3891,1,0,0,0,3894,3896,5,216,0,0,3895,3883,1,0,0,0,3895,3885,1,0,0,0,3896,771,1,0,0,0,3897,3919,3,660,330,0,3898,3900,3,556,278,0,3899,3898,1,0,0,0,3899,3900,1,0,0,0,3900,3901,1,0,0,0,3901,3905,3,480,240,0,3902,3904,3,794,397,0,3903,3902,1,0,0,0,3904,3907,1,0,0,0,3905,3903,1,0,0,0,3905,3906,1,0,0,0,3906,3919,1,0,0,0,3907,3905,1,0,0,0,3908,3919,3,792,396,0,3909,3913,3,774,387,0,3910,3912,3,780,390,0,3911,3910,1,0,0,0,3912,3915,1,0,0,0,3913,3911,1,0,0,0,3913,3914,1,0,0,0,3914,3919,1,0,0,0,3915,3913,1,0,0,0,3916,3919,3,776,388,0,3917,3919,3,778,389,0,3918,3897,1,0,0,0,3918,3899,1,0,0,0,3918,3908,1,0,0,0,3918,3909,1,0,0,0,3918,3916,1,0,0,0,3918,3917,1,0,0,0,3919,773,1,0,0,0,3920,3921,3,78,39,0,3921,3922,5,57,0,0,3922,3923,3,782,391,0,3923,775,1,0,0,0,3924,3925,3,78,39,0,3925,3926,5,53,0,0,3926,3927,3,782,391,0,3927,777,1,0,0,0,3928,3929,3,78,39,0,3929,3930,5,61,0,0,3930,3931,3,782,391,0,3931,779,1,0,0,0,3932,3936,3,78,39,0,3933,3937,3,762,381,0,3934,3935,5,152,0,0,3935,3937,3,824,412,0,3936,3933,1,0,0,0,3936,3934,1,0,0,0,3937,3938,1,0,0,0,3938,3939,5,205,0,0,3939,781,1,0,0,0,3940,3941,3,976,488,0,3941,3942,5,205,0,0,3942,3948,1,0,0,0,3943,3948,3,784,392,0,3944,3948,3,786,393,0,3945,3948,3,788,394,0,3946,3948,3,790,395,0,3947,3940,1,0,0,0,3947,3943,1,0,0,0,3947,3944,1,0,0,0,3947,3945,1,0,0,0,3947,3946,1,0,0,0,3948,783,1,0,0,0,3949,3950,3,678,339,0,3950,3951,3,656,328,0,3951,785,1,0,0,0,3952,3953,3,700,350,0,3953,3954,3,656,328,0,3954,787,1,0,0,0,3955,3956,3,716,358,0,3956,3957,3,656,328,0,3957,789,1,0,0,0,3958,3959,3,730,365,0,3959,3960,3,656,328,0,3960,791,1,0,0,0,3961,3962,3,78,39,0,3962,3963,3,802,401,0,3963,793,1,0,0,0,3964,3965,3,78,39,0,3965,3966,3,804,402,0,3966,795,1,0,0,0,3967,3968,3,544,272,0,3968,3969,5,142,0,0,3969,3970,3,674,337,0,3970,3971,3,798,399,0,3971,797,1,0,0,0,3972,3985,5,205,0,0,3973,3975,5,116,0,0,3974,3973,1,0,0,0,3974,3975,1,0,0,0,3975,3976,1,0,0,0,3976,3980,5,214,0,0,3977,3979,3,772,386,0,3978,3977,1,0,0,0,3979,3982,1,0,0,0,3980,3978,1,0,0,0,3980,3981,1,0,0,0,3981,3983,1,0,0,0,3982,3980,1,0,0,0,3983,3985,5,216,0,0,3984,3972,1,0,0,0,3984,3974,1,0,0,0,3985,799,1,0,0,0,3986,3987,3,544,272,0,3987,3996,5,60,0,0,3988,3990,3,228,114,0,3989,3991,3,198,99,0,3990,3989,1,0,0,0,3990,3991,1,0,0,0,3991,3997,1,0,0,0,3992,3994,5,142,0,0,3993,3995,3,496,248,0,3994,3993,1,0,0,0,3994,3995,1,0,0,0,3995,3997,1,0,0,0,3996,3988,1,0,0,0,3996,3992,1,0,0,0,3997,3999,1,0,0,0,3998,4e3,3,394,197,0,3999,3998,1,0,0,0,3999,4e3,1,0,0,0,4e3,4001,1,0,0,0,4001,4002,3,798,399,0,4002,801,1,0,0,0,4003,4008,5,155,0,0,4004,4006,3,496,248,0,4005,4004,1,0,0,0,4005,4006,1,0,0,0,4006,4007,1,0,0,0,4007,4009,5,69,0,0,4008,4005,1,0,0,0,4008,4009,1,0,0,0,4009,4010,1,0,0,0,4010,4011,3,340,170,0,4011,4015,3,726,363,0,4012,4013,3,726,363,0,4013,4014,3,806,403,0,4014,4016,1,0,0,0,4015,4012,1,0,0,0,4015,4016,1,0,0,0,4016,4018,1,0,0,0,4017,4019,3,810,405,0,4018,4017,1,0,0,0,4018,4019,1,0,0,0,4019,4021,1,0,0,0,4020,4022,3,812,406,0,4021,4020,1,0,0,0,4021,4022,1,0,0,0,4022,4023,1,0,0,0,4023,4024,5,152,0,0,4024,4025,3,824,412,0,4025,4026,3,656,328,0,4026,803,1,0,0,0,4027,4052,3,726,363,0,4028,4032,5,155,0,0,4029,4030,3,726,363,0,4030,4031,3,806,403,0,4031,4033,1,0,0,0,4032,4029,1,0,0,0,4032,4033,1,0,0,0,4033,4035,1,0,0,0,4034,4036,3,810,405,0,4035,4034,1,0,0,0,4035,4036,1,0,0,0,4036,4038,1,0,0,0,4037,4039,3,812,406,0,4038,4037,1,0,0,0,4038,4039,1,0,0,0,4039,4053,1,0,0,0,4040,4041,3,726,363,0,4041,4043,3,806,403,0,4042,4044,3,810,405,0,4043,4042,1,0,0,0,4043,4044,1,0,0,0,4044,4046,1,0,0,0,4045,4047,3,812,406,0,4046,4045,1,0,0,0,4046,4047,1,0,0,0,4047,4053,1,0,0,0,4048,4050,3,810,405,0,4049,4051,3,812,406,0,4050,4049,1,0,0,0,4050,4051,1,0,0,0,4051,4053,1,0,0,0,4052,4028,1,0,0,0,4052,4040,1,0,0,0,4052,4048,1,0,0,0,4052,4053,1,0,0,0,4053,4054,1,0,0,0,4054,4055,5,152,0,0,4055,4056,3,824,412,0,4056,4057,3,656,328,0,4057,805,1,0,0,0,4058,4059,5,3,0,0,4059,4060,3,808,404,0,4060,807,1,0,0,0,4061,4062,3,702,351,0,4062,809,1,0,0,0,4063,4064,5,77,0,0,4064,4065,3,0,0,0,4065,811,1,0,0,0,4066,4067,5,53,0,0,4067,4068,3,814,407,0,4068,813,1,0,0,0,4069,4075,3,976,488,0,4070,4075,3,816,408,0,4071,4075,3,818,409,0,4072,4075,3,820,410,0,4073,4075,3,822,411,0,4074,4069,1,0,0,0,4074,4070,1,0,0,0,4074,4071,1,0,0,0,4074,4072,1,0,0,0,4074,4073,1,0,0,0,4075,815,1,0,0,0,4076,4085,3,678,339,0,4077,4081,5,214,0,0,4078,4080,3,658,329,0,4079,4078,1,0,0,0,4080,4083,1,0,0,0,4081,4079,1,0,0,0,4081,4082,1,0,0,0,4082,4084,1,0,0,0,4083,4081,1,0,0,0,4084,4086,5,216,0,0,4085,4077,1,0,0,0,4085,4086,1,0,0,0,4086,817,1,0,0,0,4087,4096,3,700,350,0,4088,4092,5,214,0,0,4089,4091,3,658,329,0,4090,4089,1,0,0,0,4091,4094,1,0,0,0,4092,4090,1,0,0,0,4092,4093,1,0,0,0,4093,4095,1,0,0,0,4094,4092,1,0,0,0,4095,4097,5,216,0,0,4096,4088,1,0,0,0,4096,4097,1,0,0,0,4097,819,1,0,0,0,4098,4107,3,716,358,0,4099,4103,5,214,0,0,4100,4102,3,658,329,0,4101,4100,1,0,0,0,4102,4105,1,0,0,0,4103,4101,1,0,0,0,4103,4104,1,0,0,0,4104,4106,1,0,0,0,4105,4103,1,0,0,0,4106,4108,5,216,0,0,4107,4099,1,0,0,0,4107,4108,1,0,0,0,4108,821,1,0,0,0,4109,4118,3,730,365,0,4110,4114,5,214,0,0,4111,4113,3,658,329,0,4112,4111,1,0,0,0,4113,4116,1,0,0,0,4114,4112,1,0,0,0,4114,4115,1,0,0,0,4115,4117,1,0,0,0,4116,4114,1,0,0,0,4117,4119,5,216,0,0,4118,4110,1,0,0,0,4118,4119,1,0,0,0,4119,823,1,0,0,0,4120,4121,3,826,413,0,4121,825,1,0,0,0,4122,4123,3,828,414,0,4123,4124,3,268,134,0,4124,827,1,0,0,0,4125,4126,3,978,489,0,4126,829,1,0,0,0,4127,4128,3,536,268,0,4128,4129,5,25,0,0,4129,4130,5,45,0,0,4130,4131,3,462,231,0,4131,4132,3,834,417,0,4132,831,1,0,0,0,4133,4134,3,544,272,0,4134,4135,5,25,0,0,4135,4136,3,674,337,0,4136,4137,3,834,417,0,4137,833,1,0,0,0,4138,4144,5,205,0,0,4139,4140,5,214,0,0,4140,4141,3,836,418,0,4141,4142,5,216,0,0,4142,4144,1,0,0,0,4143,4138,1,0,0,0,4143,4139,1,0,0,0,4144,835,1,0,0,0,4145,4147,3,838,419,0,4146,4145,1,0,0,0,4147,4150,1,0,0,0,4148,4146,1,0,0,0,4148,4149,1,0,0,0,4149,4152,1,0,0,0,4150,4148,1,0,0,0,4151,4153,3,296,148,0,4152,4151,1,0,0,0,4152,4153,1,0,0,0,4153,837,1,0,0,0,4154,4157,3,658,329,0,4155,4157,3,840,420,0,4156,4154,1,0,0,0,4156,4155,1,0,0,0,4157,839,1,0,0,0,4158,4159,3,78,39,0,4159,4160,5,134,0,0,4160,4161,3,452,226,0,4161,841,1,0,0,0,4162,4163,3,536,268,0,4163,4164,5,41,0,0,4164,4165,5,45,0,0,4165,4166,3,462,231,0,4166,4167,3,834,417,0,4167,843,1,0,0,0,4168,4169,3,544,272,0,4169,4170,5,41,0,0,4170,4171,3,848,424,0,4171,4172,3,834,417,0,4172,845,1,0,0,0,4173,4174,3,544,272,0,4174,4176,5,14,0,0,4175,4177,5,107,0,0,4176,4175,1,0,0,0,4176,4177,1,0,0,0,4177,4184,1,0,0,0,4178,4180,3,228,114,0,4179,4181,3,198,99,0,4180,4179,1,0,0,0,4180,4181,1,0,0,0,4181,4185,1,0,0,0,4182,4183,5,41,0,0,4183,4185,3,848,424,0,4184,4178,1,0,0,0,4184,4182,1,0,0,0,4185,4186,1,0,0,0,4186,4187,3,834,417,0,4187,847,1,0,0,0,4188,4190,3,496,248,0,4189,4188,1,0,0,0,4189,4190,1,0,0,0,4190,4192,1,0,0,0,4191,4193,3,394,197,0,4192,4191,1,0,0,0,4192,4193,1,0,0,0,4193,849,1,0,0,0,4194,4195,3,536,268,0,4195,4196,5,133,0,0,4196,4197,5,45,0,0,4197,4198,3,462,231,0,4198,4199,3,852,426,0,4199,851,1,0,0,0,4200,4210,5,205,0,0,4201,4205,5,214,0,0,4202,4204,3,854,427,0,4203,4202,1,0,0,0,4204,4207,1,0,0,0,4205,4203,1,0,0,0,4205,4206,1,0,0,0,4206,4208,1,0,0,0,4207,4205,1,0,0,0,4208,4210,5,216,0,0,4209,4200,1,0,0,0,4209,4201,1,0,0,0,4210,853,1,0,0,0,4211,4219,3,466,233,0,4212,4219,3,856,428,0,4213,4219,3,860,430,0,4214,4219,3,866,433,0,4215,4219,3,914,457,0,4216,4219,3,870,435,0,4217,4219,3,874,437,0,4218,4211,1,0,0,0,4218,4212,1,0,0,0,4218,4213,1,0,0,0,4218,4214,1,0,0,0,4218,4215,1,0,0,0,4218,4216,1,0,0,0,4218,4217,1,0,0,0,4219,855,1,0,0,0,4220,4221,3,78,39,0,4221,4222,3,858,429,0,4222,857,1,0,0,0,4223,4227,5,146,0,0,4224,4226,3,488,244,0,4225,4224,1,0,0,0,4226,4229,1,0,0,0,4227,4225,1,0,0,0,4227,4228,1,0,0,0,4228,4230,1,0,0,0,4229,4227,1,0,0,0,4230,4231,3,494,247,0,4231,859,1,0,0,0,4232,4233,3,78,39,0,4233,4234,3,862,431,0,4234,4235,3,864,432,0,4235,861,1,0,0,0,4236,4237,7,26,0,0,4237,863,1,0,0,0,4238,4240,3,228,114,0,4239,4241,3,198,99,0,4240,4239,1,0,0,0,4240,4241,1,0,0,0,4241,4242,1,0,0,0,4242,4243,3,852,426,0,4243,4262,1,0,0,0,4244,4246,3,488,244,0,4245,4244,1,0,0,0,4246,4249,1,0,0,0,4247,4245,1,0,0,0,4247,4248,1,0,0,0,4248,4250,1,0,0,0,4249,4247,1,0,0,0,4250,4257,5,41,0,0,4251,4253,3,488,244,0,4252,4251,1,0,0,0,4253,4254,1,0,0,0,4254,4252,1,0,0,0,4254,4255,1,0,0,0,4255,4257,1,0,0,0,4256,4247,1,0,0,0,4256,4252,1,0,0,0,4257,4258,1,0,0,0,4258,4259,3,848,424,0,4259,4260,3,834,417,0,4260,4262,1,0,0,0,4261,4238,1,0,0,0,4261,4256,1,0,0,0,4262,865,1,0,0,0,4263,4264,3,78,39,0,4264,4265,5,73,0,0,4265,4266,3,868,434,0,4266,867,1,0,0,0,4267,4269,3,228,114,0,4268,4270,3,198,99,0,4269,4268,1,0,0,0,4269,4270,1,0,0,0,4270,4271,1,0,0,0,4271,4272,3,834,417,0,4272,4291,1,0,0,0,4273,4275,3,488,244,0,4274,4273,1,0,0,0,4275,4278,1,0,0,0,4276,4274,1,0,0,0,4276,4277,1,0,0,0,4277,4279,1,0,0,0,4278,4276,1,0,0,0,4279,4286,5,32,0,0,4280,4282,3,488,244,0,4281,4280,1,0,0,0,4282,4283,1,0,0,0,4283,4281,1,0,0,0,4283,4284,1,0,0,0,4284,4286,1,0,0,0,4285,4276,1,0,0,0,4285,4281,1,0,0,0,4286,4287,1,0,0,0,4287,4288,3,974,487,0,4288,4289,3,834,417,0,4289,4291,1,0,0,0,4290,4267,1,0,0,0,4290,4285,1,0,0,0,4291,869,1,0,0,0,4292,4293,3,78,39,0,4293,4294,3,872,436,0,4294,871,1,0,0,0,4295,4299,5,5,0,0,4296,4298,3,488,244,0,4297,4296,1,0,0,0,4298,4301,1,0,0,0,4299,4297,1,0,0,0,4299,4300,1,0,0,0,4300,4302,1,0,0,0,4301,4299,1,0,0,0,4302,4303,3,494,247,0,4303,873,1,0,0,0,4304,4305,3,78,39,0,4305,4306,3,876,438,0,4306,875,1,0,0,0,4307,4311,5,140,0,0,4308,4310,3,488,244,0,4309,4308,1,0,0,0,4310,4313,1,0,0,0,4311,4309,1,0,0,0,4311,4312,1,0,0,0,4312,4314,1,0,0,0,4313,4311,1,0,0,0,4314,4315,3,494,247,0,4315,877,1,0,0,0,4316,4317,3,544,272,0,4317,4318,5,133,0,0,4318,4319,3,848,424,0,4319,4320,3,852,426,0,4320,879,1,0,0,0,4321,4326,3,544,272,0,4322,4324,5,14,0,0,4323,4325,5,107,0,0,4324,4323,1,0,0,0,4324,4325,1,0,0,0,4325,4327,1,0,0,0,4326,4322,1,0,0,0,4326,4327,1,0,0,0,4327,4328,1,0,0,0,4328,4337,5,135,0,0,4329,4331,3,228,114,0,4330,4332,3,198,99,0,4331,4330,1,0,0,0,4331,4332,1,0,0,0,4332,4338,1,0,0,0,4333,4335,5,133,0,0,4334,4336,3,496,248,0,4335,4334,1,0,0,0,4335,4336,1,0,0,0,4336,4338,1,0,0,0,4337,4329,1,0,0,0,4337,4333,1,0,0,0,4338,4340,1,0,0,0,4339,4341,3,394,197,0,4340,4339,1,0,0,0,4340,4341,1,0,0,0,4341,4344,1,0,0,0,4342,4343,5,24,0,0,4343,4345,3,882,441,0,4344,4342,1,0,0,0,4344,4345,1,0,0,0,4345,4346,1,0,0,0,4346,4347,3,852,426,0,4347,881,1,0,0,0,4348,4349,3,884,442,0,4349,883,1,0,0,0,4350,4351,3,886,443,0,4351,885,1,0,0,0,4352,4353,3,888,444,0,4353,887,1,0,0,0,4354,4355,3,340,170,0,4355,889,1,0,0,0,4356,4357,3,536,268,0,4357,4358,5,32,0,0,4358,4359,5,45,0,0,4359,4360,3,462,231,0,4360,4361,3,852,426,0,4361,891,1,0,0,0,4362,4363,3,544,272,0,4363,4364,5,32,0,0,4364,4365,3,848,424,0,4365,4366,3,852,426,0,4366,893,1,0,0,0,4367,4368,3,536,268,0,4368,4369,5,26,0,0,4369,4370,5,45,0,0,4370,4371,3,462,231,0,4371,4372,3,898,449,0,4372,895,1,0,0,0,4373,4374,3,544,272,0,4374,4375,5,26,0,0,4375,4376,3,848,424,0,4376,4377,3,898,449,0,4377,897,1,0,0,0,4378,4391,5,205,0,0,4379,4383,5,214,0,0,4380,4382,3,900,450,0,4381,4380,1,0,0,0,4382,4385,1,0,0,0,4383,4381,1,0,0,0,4383,4384,1,0,0,0,4384,4387,1,0,0,0,4385,4383,1,0,0,0,4386,4388,3,296,148,0,4387,4386,1,0,0,0,4387,4388,1,0,0,0,4388,4389,1,0,0,0,4389,4391,5,216,0,0,4390,4378,1,0,0,0,4390,4379,1,0,0,0,4391,899,1,0,0,0,4392,4398,3,658,329,0,4393,4398,3,840,420,0,4394,4398,3,856,428,0,4395,4398,3,870,435,0,4396,4398,3,902,451,0,4397,4392,1,0,0,0,4397,4393,1,0,0,0,4397,4394,1,0,0,0,4397,4395,1,0,0,0,4397,4396,1,0,0,0,4398,901,1,0,0,0,4399,4400,3,78,39,0,4400,4401,5,109,0,0,4401,4402,3,904,452,0,4402,903,1,0,0,0,4403,4405,3,488,244,0,4404,4403,1,0,0,0,4405,4408,1,0,0,0,4406,4404,1,0,0,0,4406,4407,1,0,0,0,4407,4409,1,0,0,0,4408,4406,1,0,0,0,4409,4410,3,848,424,0,4410,4411,3,852,426,0,4411,905,1,0,0,0,4412,4413,3,536,268,0,4413,4414,5,11,0,0,4414,4415,5,45,0,0,4415,4416,3,462,231,0,4416,4417,3,898,449,0,4417,907,1,0,0,0,4418,4419,3,544,272,0,4419,4420,5,11,0,0,4420,4421,3,848,424,0,4421,4422,3,898,449,0,4422,909,1,0,0,0,4423,4424,3,536,268,0,4424,4425,5,166,0,0,4425,4426,5,45,0,0,4426,4427,3,462,231,0,4427,4428,3,898,449,0,4428,911,1,0,0,0,4429,4430,3,544,272,0,4430,4431,5,166,0,0,4431,4432,3,848,424,0,4432,4433,3,898,449,0,4433,913,1,0,0,0,4434,4435,3,78,39,0,4435,4436,5,167,0,0,4436,4437,3,916,458,0,4437,915,1,0,0,0,4438,4442,3,228,114,0,4439,4441,3,202,101,0,4440,4439,1,0,0,0,4441,4444,1,0,0,0,4442,4440,1,0,0,0,4442,4443,1,0,0,0,4443,4445,1,0,0,0,4444,4442,1,0,0,0,4445,4446,3,852,426,0,4446,4465,1,0,0,0,4447,4449,3,488,244,0,4448,4447,1,0,0,0,4449,4452,1,0,0,0,4450,4448,1,0,0,0,4450,4451,1,0,0,0,4451,4453,1,0,0,0,4452,4450,1,0,0,0,4453,4460,5,133,0,0,4454,4456,3,488,244,0,4455,4454,1,0,0,0,4456,4457,1,0,0,0,4457,4455,1,0,0,0,4457,4458,1,0,0,0,4458,4460,1,0,0,0,4459,4450,1,0,0,0,4459,4455,1,0,0,0,4460,4461,1,0,0,0,4461,4462,3,848,424,0,4462,4463,3,852,426,0,4463,4465,1,0,0,0,4464,4438,1,0,0,0,4464,4459,1,0,0,0,4465,917,1,0,0,0,4466,4467,3,536,268,0,4467,4468,5,162,0,0,4468,4469,5,26,0,0,4469,4470,5,45,0,0,4470,4471,3,462,231,0,4471,4472,3,898,449,0,4472,919,1,0,0,0,4473,4474,3,544,272,0,4474,4475,5,162,0,0,4475,4476,5,26,0,0,4476,4477,3,848,424,0,4477,4478,3,898,449,0,4478,921,1,0,0,0,4479,4480,3,544,272,0,4480,4490,5,81,0,0,4481,4483,3,228,114,0,4482,4484,3,198,99,0,4483,4482,1,0,0,0,4483,4484,1,0,0,0,4484,4491,1,0,0,0,4485,4486,5,162,0,0,4486,4488,5,26,0,0,4487,4489,3,496,248,0,4488,4487,1,0,0,0,4488,4489,1,0,0,0,4489,4491,1,0,0,0,4490,4481,1,0,0,0,4490,4485,1,0,0,0,4491,4493,1,0,0,0,4492,4494,3,394,197,0,4493,4492,1,0,0,0,4493,4494,1,0,0,0,4494,4495,1,0,0,0,4495,4496,3,898,449,0,4496,923,1,0,0,0,4497,4498,3,536,268,0,4498,4499,5,169,0,0,4499,4500,5,45,0,0,4500,4501,3,462,231,0,4501,4502,3,926,463,0,4502,925,1,0,0,0,4503,4513,5,205,0,0,4504,4508,5,214,0,0,4505,4507,3,928,464,0,4506,4505,1,0,0,0,4507,4510,1,0,0,0,4508,4506,1,0,0,0,4508,4509,1,0,0,0,4509,4511,1,0,0,0,4510,4508,1,0,0,0,4511,4513,5,216,0,0,4512,4503,1,0,0,0,4512,4504,1,0,0,0,4513,927,1,0,0,0,4514,4518,3,466,233,0,4515,4518,3,440,220,0,4516,4518,3,930,465,0,4517,4514,1,0,0,0,4517,4515,1,0,0,0,4517,4516,1,0,0,0,4518,929,1,0,0,0,4519,4520,3,78,39,0,4520,4521,5,129,0,0,4521,4522,3,932,466,0,4522,931,1,0,0,0,4523,4525,3,228,114,0,4524,4526,3,198,99,0,4525,4524,1,0,0,0,4525,4526,1,0,0,0,4526,4527,1,0,0,0,4527,4528,3,500,250,0,4528,4545,1,0,0,0,4529,4531,3,488,244,0,4530,4529,1,0,0,0,4531,4534,1,0,0,0,4532,4530,1,0,0,0,4532,4533,1,0,0,0,4533,4535,1,0,0,0,4534,4532,1,0,0,0,4535,4542,5,130,0,0,4536,4538,3,488,244,0,4537,4536,1,0,0,0,4538,4539,1,0,0,0,4539,4537,1,0,0,0,4539,4540,1,0,0,0,4540,4542,1,0,0,0,4541,4532,1,0,0,0,4541,4537,1,0,0,0,4542,4543,1,0,0,0,4543,4545,3,494,247,0,4544,4523,1,0,0,0,4544,4541,1,0,0,0,4545,933,1,0,0,0,4546,4547,3,544,272,0,4547,4549,5,169,0,0,4548,4550,3,496,248,0,4549,4548,1,0,0,0,4549,4550,1,0,0,0,4550,4552,1,0,0,0,4551,4553,3,394,197,0,4552,4551,1,0,0,0,4552,4553,1,0,0,0,4553,4554,1,0,0,0,4554,4555,3,936,468,0,4555,935,1,0,0,0,4556,4566,5,205,0,0,4557,4561,5,214,0,0,4558,4560,3,938,469,0,4559,4558,1,0,0,0,4560,4563,1,0,0,0,4561,4559,1,0,0,0,4561,4562,1,0,0,0,4562,4564,1,0,0,0,4563,4561,1,0,0,0,4564,4566,5,216,0,0,4565,4556,1,0,0,0,4565,4557,1,0,0,0,4566,937,1,0,0,0,4567,4572,3,466,233,0,4568,4572,3,440,220,0,4569,4572,3,930,465,0,4570,4572,3,940,470,0,4571,4567,1,0,0,0,4571,4568,1,0,0,0,4571,4569,1,0,0,0,4571,4570,1,0,0,0,4572,939,1,0,0,0,4573,4576,5,62,0,0,4574,4577,3,942,471,0,4575,4577,3,944,472,0,4576,4574,1,0,0,0,4576,4575,1,0,0,0,4577,4578,1,0,0,0,4578,4579,3,48,24,0,4579,941,1,0,0,0,4580,4581,3,96,48,0,4581,943,1,0,0,0,4582,4583,3,98,49,0,4583,945,1,0,0,0,4584,4585,3,536,268,0,4585,4586,5,170,0,0,4586,4587,5,45,0,0,4587,4588,3,462,231,0,4588,4589,3,852,426,0,4589,947,1,0,0,0,4590,4591,3,544,272,0,4591,4592,5,170,0,0,4592,4593,3,848,424,0,4593,4594,3,852,426,0,4594,949,1,0,0,0,4595,4596,3,536,268,0,4596,4597,5,130,0,0,4597,4598,5,45,0,0,4598,4599,3,460,230,0,4599,951,1,0,0,0,4600,4601,3,544,272,0,4601,4602,5,130,0,0,4602,4603,3,494,247,0,4603,953,1,0,0,0,4604,4606,5,2,0,0,4605,4604,1,0,0,0,4605,4606,1,0,0,0,4606,4610,1,0,0,0,4607,4609,3,456,228,0,4608,4607,1,0,0,0,4609,4612,1,0,0,0,4610,4608,1,0,0,0,4610,4611,1,0,0,0,4611,4613,1,0,0,0,4612,4610,1,0,0,0,4613,4614,5,102,0,0,4614,4615,5,45,0,0,4615,4616,3,460,230,0,4616,955,1,0,0,0,4617,4618,3,222,111,0,4618,957,1,0,0,0,4619,4621,3,488,244,0,4620,4619,1,0,0,0,4621,4624,1,0,0,0,4622,4620,1,0,0,0,4622,4623,1,0,0,0,4623,4625,1,0,0,0,4624,4622,1,0,0,0,4625,4626,7,22,0,0,4626,4636,3,960,480,0,4627,4628,5,1,0,0,4628,4633,3,56,28,0,4629,4630,5,200,0,0,4630,4632,3,56,28,0,4631,4629,1,0,0,0,4632,4635,1,0,0,0,4633,4631,1,0,0,0,4633,4634,1,0,0,0,4634,4637,1,0,0,0,4635,4633,1,0,0,0,4636,4627,1,0,0,0,4636,4637,1,0,0,0,4637,4638,1,0,0,0,4638,4639,3,424,212,0,4639,959,1,0,0,0,4640,4642,3,46,23,0,4641,4640,1,0,0,0,4641,4642,1,0,0,0,4642,4646,1,0,0,0,4643,4647,5,204,0,0,4644,4645,5,158,0,0,4645,4647,5,24,0,0,4646,4643,1,0,0,0,4646,4644,1,0,0,0,4647,4649,1,0,0,0,4648,4641,1,0,0,0,4648,4649,1,0,0,0,4649,4650,1,0,0,0,4650,4651,3,222,111,0,4651,961,1,0,0,0,4652,4653,3,964,482,0,4653,963,1,0,0,0,4654,4656,5,127,0,0,4655,4654,1,0,0,0,4655,4656,1,0,0,0,4656,4658,1,0,0,0,4657,4659,7,19,0,0,4658,4657,1,0,0,0,4658,4659,1,0,0,0,4659,4660,1,0,0,0,4660,4662,3,234,117,0,4661,4663,3,198,99,0,4662,4661,1,0,0,0,4662,4663,1,0,0,0,4663,4665,1,0,0,0,4664,4666,3,394,197,0,4665,4664,1,0,0,0,4665,4666,1,0,0,0,4666,4667,1,0,0,0,4667,4668,3,424,212,0,4668,965,1,0,0,0,4669,4671,3,454,227,0,4670,4669,1,0,0,0,4670,4671,1,0,0,0,4671,4673,1,0,0,0,4672,4674,3,456,228,0,4673,4672,1,0,0,0,4674,4675,1,0,0,0,4675,4673,1,0,0,0,4675,4676,1,0,0,0,4676,4677,1,0,0,0,4677,4678,5,45,0,0,4678,4679,3,460,230,0,4679,967,1,0,0,0,4680,4682,3,490,245,0,4681,4683,3,488,244,0,4682,4681,1,0,0,0,4683,4684,1,0,0,0,4684,4682,1,0,0,0,4684,4685,1,0,0,0,4685,4686,1,0,0,0,4686,4687,3,494,247,0,4687,969,1,0,0,0,4688,4691,3,96,48,0,4689,4691,3,972,486,0,4690,4688,1,0,0,0,4690,4689,1,0,0,0,4691,971,1,0,0,0,4692,4693,3,90,45,0,4693,4694,5,183,0,0,4694,4697,5,198,0,0,4695,4696,5,183,0,0,4696,4698,5,179,0,0,4697,4695,1,0,0,0,4697,4698,1,0,0,0,4698,973,1,0,0,0,4699,4701,3,496,248,0,4700,4699,1,0,0,0,4700,4701,1,0,0,0,4701,4703,1,0,0,0,4702,4704,3,394,197,0,4703,4702,1,0,0,0,4703,4704,1,0,0,0,4704,975,1,0,0,0,4705,4706,1,0,0,0,4706,977,1,0,0,0,4707,4708,1,0,0,0,4708,979,1,0,0,0,4709,4710,1,0,0,0,4710,981,1,0,0,0,4711,4712,1,0,0,0,4712,983,1,0,0,0,4713,4714,5,218,0,0,4714,985,1,0,0,0,4715,4716,5,218,0,0,4716,987,1,0,0,0,4717,4718,1,0,0,0,4718,989,1,0,0,0,518,1005,1061,1068,1084,1086,1088,1098,1107,1113,1116,1121,1143,1152,1160,1172,1200,1207,1215,1219,1223,1227,1232,1237,1240,1247,1256,1264,1271,1281,1285,1293,1296,1298,1302,1308,1312,1318,1320,1329,1337,1345,1352,1356,1361,1364,1370,1384,1387,1395,1402,1408,1412,1419,1424,1431,1434,1440,1446,1448,1456,1484,1496,1504,1509,1513,1516,1519,1523,1525,1530,1539,1549,1558,1567,1576,1585,1593,1597,1603,1607,1609,1624,1632,1637,1639,1647,1656,1666,1671,1673,1681,1690,1700,1708,1716,1724,1729,1744,1747,1750,1754,1759,1768,1773,1775,1788,1791,1795,1799,1802,1807,1812,1815,1818,1821,1824,1830,1835,1845,1847,1852,1857,1861,1866,1873,1876,1882,1890,1904,1910,1913,1918,1925,1928,1933,1937,1939,1943,1947,1949,1951,1958,1965,1973,1982,1999,2007,2009,2016,2023,2030,2035,2037,2050,2058,2066,2071,2073,2086,2095,2097,2104,2110,2112,2120,2129,2139,2144,2147,2185,2188,2191,2197,2200,2205,2207,2214,2224,2232,2237,2256,2259,2262,2268,2270,2283,2286,2289,2295,2297,2308,2322,2326,2328,2332,2345,2358,2365,2369,2414,2419,2436,2454,2459,2479,2483,2490,2493,2500,2503,2507,2514,2516,2521,2525,2529,2533,2537,2539,2544,2547,2552,2559,2561,2570,2585,2587,2593,2597,2604,2617,2624,2635,2641,2648,2659,2662,2667,2672,2674,2683,2692,2694,2698,2704,2709,2712,2716,2719,2726,2733,2739,2747,2754,2758,2766,2769,2776,2785,2794,2799,2831,2835,2842,2847,2854,2857,2864,2868,2875,2880,2887,2890,2900,2922,2925,2928,2931,2935,2944,2950,2954,2960,2963,2966,2977,2990,3003,3007,3024,3042,3065,3073,3088,3100,3102,3106,3112,3121,3125,3130,3139,3145,3156,3159,3164,3176,3183,3189,3200,3204,3206,3218,3263,3266,3270,3274,3280,3294,3302,3304,3315,3317,3336,3340,3346,3351,3361,3369,3380,3383,3387,3390,3394,3408,3416,3421,3436,3440,3444,3457,3460,3464,3471,3477,3500,3507,3523,3527,3534,3538,3544,3548,3556,3559,3563,3585,3588,3597,3601,3603,3606,3616,3620,3624,3630,3634,3637,3642,3648,3655,3662,3669,3678,3686,3692,3695,3698,3708,3713,3718,3723,3728,3733,3739,3745,3760,3773,3779,3783,3794,3796,3804,3806,3812,3824,3831,3841,3844,3849,3866,3868,3885,3891,3895,3899,3905,3913,3918,3936,3947,3974,3980,3984,3990,3994,3996,3999,4005,4008,4015,4018,4021,4032,4035,4038,4043,4046,4050,4052,4074,4081,4085,4092,4096,4103,4107,4114,4118,4143,4148,4152,4156,4176,4180,4184,4189,4192,4205,4209,4218,4227,4240,4247,4254,4256,4261,4269,4276,4283,4285,4290,4299,4311,4324,4326,4331,4335,4337,4340,4344,4383,4387,4390,4397,4406,4442,4450,4457,4459,4464,4483,4488,4490,4493,4508,4512,4517,4525,4532,4539,4541,4544,4549,4552,4561,4565,4571,4576,4605,4610,4622,4633,4636,4641,4646,4648,4655,4658,4662,4665,4670,4675,4684,4690,4697,4700,4703];static __ATN;static get _ATN(){return r.__ATN||(r.__ATN=new Ks().deserialize(r._serializedATN)),r.__ATN}static vocabulary=new nn(r.literalNames,r.symbolicNames,[]);get vocabulary(){return r.vocabulary}static decisionsToDFA=r._ATN.decisionToState.map((e,t)=>new rs(e,t))},Me=class r extends h{constructor(e,t){super(e,t)}IF(){return this.getToken(l.IF,0)}ownedExpression(e){return e===void 0?this.getRuleContexts(r):this.getRuleContext(e,r)}QUESTION(){return this.getToken(l.QUESTION,0)}ELSE(){return this.getToken(l.ELSE,0)}PLUS(){return this.getToken(l.PLUS,0)}MINUS(){return this.getToken(l.MINUS,0)}TILDE(){return this.getToken(l.TILDE,0)}NOT(){return this.getToken(l.NOT,0)}typeReference(){return this.getRuleContext(0,cu)}AT_SIGN(){return this.getToken(l.AT_SIGN,0)}AT_AT(){return this.getToken(l.AT_AT,0)}ALL(){return this.getToken(l.ALL,0)}baseExpression(){return this.getRuleContext(0,Sg)}QUESTION_QUESTION(){return this.getToken(l.QUESTION_QUESTION,0)}IMPLIES(){return this.getToken(l.IMPLIES,0)}OR(){return this.getToken(l.OR,0)}AND(){return this.getToken(l.AND,0)}XOR(){return this.getToken(l.XOR,0)}PIPE(){return this.getToken(l.PIPE,0)}AMP(){return this.getToken(l.AMP,0)}EQ_EQ(){return this.getToken(l.EQ_EQ,0)}BANG_EQ(){return this.getToken(l.BANG_EQ,0)}EQ_EQ_EQ(){return this.getToken(l.EQ_EQ_EQ,0)}BANG_EQ_EQ(){return this.getToken(l.BANG_EQ_EQ,0)}LT(){return this.getToken(l.LT,0)}GT(){return this.getToken(l.GT,0)}LE(){return this.getToken(l.LE,0)}GE(){return this.getToken(l.GE,0)}DOT_DOT(){return this.getToken(l.DOT_DOT,0)}STAR(){return this.getToken(l.STAR,0)}SLASH(){return this.getToken(l.SLASH,0)}PERCENT(){return this.getToken(l.PERCENT,0)}STAR_STAR(){return this.getToken(l.STAR_STAR,0)}CARET(){return this.getToken(l.CARET,0)}ISTYPE(){return this.getToken(l.ISTYPE,0)}HASTYPE(){return this.getToken(l.HASTYPE,0)}AS(){return this.getToken(l.AS,0)}META(){return this.getToken(l.META,0)}LBRACK(){return this.getToken(l.LBRACK,0)}RBRACK(){return this.getToken(l.RBRACK,0)}sequenceExpressionList(){return this.getRuleContext(0,du)}HASH(){return this.getToken(l.HASH,0)}LPAREN(){return this.getToken(l.LPAREN,0)}RPAREN(){return this.getToken(l.RPAREN,0)}argumentList(){return this.getRuleContext(0,Js)}DOT(){return this.getToken(l.DOT,0)}qualifiedName(){return this.getRuleContext(0,Y)}DOT_QUESTION(){return this.getToken(l.DOT_QUESTION,0)}bodyExpression(){return this.getRuleContext(0,hu)}ARROW(){return this.getToken(l.ARROW,0)}get ruleIndex(){return l.RULE_ownedExpression}enterRule(e){e.enterOwnedExpression&&e.enterOwnedExpression(this)}exitRule(e){e.exitOwnedExpression&&e.exitOwnedExpression(this)}accept(e){return e.visitOwnedExpression?e.visitOwnedExpression(this):e.visitChildren(this)}},cu=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_typeReference}enterRule(e){e.enterTypeReference&&e.enterTypeReference(this)}exitRule(e){e.exitTypeReference&&e.exitTypeReference(this)}accept(e){return e.visitTypeReference?e.visitTypeReference(this):e.visitChildren(this)}},du=class extends h{constructor(e,t){super(e,t)}ownedExpression(e){return e===void 0?this.getRuleContexts(Me):this.getRuleContext(e,Me)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_sequenceExpressionList}enterRule(e){e.enterSequenceExpressionList&&e.enterSequenceExpressionList(this)}exitRule(e){e.exitSequenceExpressionList&&e.exitSequenceExpressionList(this)}accept(e){return e.visitSequenceExpressionList?e.visitSequenceExpressionList(this):e.visitChildren(this)}},Sg=class extends h{constructor(e,t){super(e,t)}nullExpression(){return this.getRuleContext(0,Pg)}literalExpression(){return this.getRuleContext(0,w1)}qualifiedName(){return this.getRuleContext(0,Y)}argumentList(){return this.getRuleContext(0,Js)}DOT(){return this.getToken(l.DOT,0)}METADATA(){return this.getToken(l.METADATA,0)}constructorExpression(){return this.getRuleContext(0,Tg)}bodyExpression(){return this.getRuleContext(0,hu)}LPAREN(){return this.getToken(l.LPAREN,0)}RPAREN(){return this.getToken(l.RPAREN,0)}sequenceExpressionList(){return this.getRuleContext(0,du)}get ruleIndex(){return l.RULE_baseExpression}enterRule(e){e.enterBaseExpression&&e.enterBaseExpression(this)}exitRule(e){e.exitBaseExpression&&e.exitBaseExpression(this)}accept(e){return e.visitBaseExpression?e.visitBaseExpression(this):e.visitChildren(this)}},Pg=class extends h{constructor(e,t){super(e,t)}NULL(){return this.getToken(l.NULL,0)}LPAREN(){return this.getToken(l.LPAREN,0)}RPAREN(){return this.getToken(l.RPAREN,0)}get ruleIndex(){return l.RULE_nullExpression}enterRule(e){e.enterNullExpression&&e.enterNullExpression(this)}exitRule(e){e.exitNullExpression&&e.exitNullExpression(this)}accept(e){return e.visitNullExpression?e.visitNullExpression(this):e.visitChildren(this)}},Lg=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_featureReferenceExpression}enterRule(e){e.enterFeatureReferenceExpression&&e.enterFeatureReferenceExpression(this)}exitRule(e){e.exitFeatureReferenceExpression&&e.exitFeatureReferenceExpression(this)}accept(e){return e.visitFeatureReferenceExpression?e.visitFeatureReferenceExpression(this):e.visitChildren(this)}},H9=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}DOT(){return this.getToken(l.DOT,0)}METADATA(){return this.getToken(l.METADATA,0)}get ruleIndex(){return l.RULE_metadataAccessExpression}enterRule(e){e.enterMetadataAccessExpression&&e.enterMetadataAccessExpression(this)}exitRule(e){e.exitMetadataAccessExpression&&e.exitMetadataAccessExpression(this)}accept(e){return e.visitMetadataAccessExpression?e.visitMetadataAccessExpression(this):e.visitChildren(this)}},z9=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}argumentList(){return this.getRuleContext(0,Js)}get ruleIndex(){return l.RULE_invocationExpression}enterRule(e){e.enterInvocationExpression&&e.enterInvocationExpression(this)}exitRule(e){e.exitInvocationExpression&&e.exitInvocationExpression(this)}accept(e){return e.visitInvocationExpression?e.visitInvocationExpression(this):e.visitChildren(this)}},Tg=class extends h{constructor(e,t){super(e,t)}NEW(){return this.getToken(l.NEW,0)}qualifiedName(){return this.getRuleContext(0,Y)}argumentList(){return this.getRuleContext(0,Js)}get ruleIndex(){return l.RULE_constructorExpression}enterRule(e){e.enterConstructorExpression&&e.enterConstructorExpression(this)}exitRule(e){e.exitConstructorExpression&&e.exitConstructorExpression(this)}accept(e){return e.visitConstructorExpression?e.visitConstructorExpression(this):e.visitChildren(this)}},hu=class extends h{constructor(e,t){super(e,t)}LBRACE(){return this.getToken(l.LBRACE,0)}functionBodyPart(){return this.getRuleContext(0,vu)}RBRACE(){return this.getToken(l.RBRACE,0)}get ruleIndex(){return l.RULE_bodyExpression}enterRule(e){e.enterBodyExpression&&e.enterBodyExpression(this)}exitRule(e){e.exitBodyExpression&&e.exitBodyExpression(this)}accept(e){return e.visitBodyExpression?e.visitBodyExpression(this):e.visitChildren(this)}},Js=class extends h{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(l.LPAREN,0)}RPAREN(){return this.getToken(l.RPAREN,0)}positionalArgumentList(){return this.getRuleContext(0,wg)}namedArgumentList(){return this.getRuleContext(0,kg)}get ruleIndex(){return l.RULE_argumentList}enterRule(e){e.enterArgumentList&&e.enterArgumentList(this)}exitRule(e){e.exitArgumentList&&e.exitArgumentList(this)}accept(e){return e.visitArgumentList?e.visitArgumentList(this):e.visitChildren(this)}},wg=class extends h{constructor(e,t){super(e,t)}ownedExpression(e){return e===void 0?this.getRuleContexts(Me):this.getRuleContext(e,Me)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_positionalArgumentList}enterRule(e){e.enterPositionalArgumentList&&e.enterPositionalArgumentList(this)}exitRule(e){e.exitPositionalArgumentList&&e.exitPositionalArgumentList(this)}accept(e){return e.visitPositionalArgumentList?e.visitPositionalArgumentList(this):e.visitChildren(this)}},kg=class extends h{constructor(e,t){super(e,t)}namedArgument(e){return e===void 0?this.getRuleContexts(pu):this.getRuleContext(e,pu)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_namedArgumentList}enterRule(e){e.enterNamedArgumentList&&e.enterNamedArgumentList(this)}exitRule(e){e.exitNamedArgumentList&&e.exitNamedArgumentList(this)}accept(e){return e.visitNamedArgumentList?e.visitNamedArgumentList(this):e.visitChildren(this)}},pu=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}EQ(){return this.getToken(l.EQ,0)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_namedArgument}enterRule(e){e.enterNamedArgument&&e.enterNamedArgument(this)}exitRule(e){e.exitNamedArgument&&e.exitNamedArgument(this)}accept(e){return e.visitNamedArgument?e.visitNamedArgument(this):e.visitChildren(this)}},w1=class extends h{constructor(e,t){super(e,t)}literalBoolean(){return this.getRuleContext(0,Ag)}literalString(){return this.getRuleContext(0,Mg)}literalInteger(){return this.getRuleContext(0,_g)}literalReal(){return this.getRuleContext(0,Ng)}literalInfinity(){return this.getRuleContext(0,Ig)}get ruleIndex(){return l.RULE_literalExpression}enterRule(e){e.enterLiteralExpression&&e.enterLiteralExpression(this)}exitRule(e){e.exitLiteralExpression&&e.exitLiteralExpression(this)}accept(e){return e.visitLiteralExpression?e.visitLiteralExpression(this):e.visitChildren(this)}},Ag=class extends h{constructor(e,t){super(e,t)}TRUE(){return this.getToken(l.TRUE,0)}FALSE(){return this.getToken(l.FALSE,0)}get ruleIndex(){return l.RULE_literalBoolean}enterRule(e){e.enterLiteralBoolean&&e.enterLiteralBoolean(this)}exitRule(e){e.exitLiteralBoolean&&e.exitLiteralBoolean(this)}accept(e){return e.visitLiteralBoolean?e.visitLiteralBoolean(this):e.visitChildren(this)}},Mg=class extends h{constructor(e,t){super(e,t)}DOUBLE_STRING(){return this.getToken(l.DOUBLE_STRING,0)}get ruleIndex(){return l.RULE_literalString}enterRule(e){e.enterLiteralString&&e.enterLiteralString(this)}exitRule(e){e.exitLiteralString&&e.exitLiteralString(this)}accept(e){return e.visitLiteralString?e.visitLiteralString(this):e.visitChildren(this)}},_g=class extends h{constructor(e,t){super(e,t)}INTEGER(){return this.getToken(l.INTEGER,0)}get ruleIndex(){return l.RULE_literalInteger}enterRule(e){e.enterLiteralInteger&&e.enterLiteralInteger(this)}exitRule(e){e.exitLiteralInteger&&e.exitLiteralInteger(this)}accept(e){return e.visitLiteralInteger?e.visitLiteralInteger(this):e.visitChildren(this)}},Ng=class extends h{constructor(e,t){super(e,t)}REAL(){return this.getToken(l.REAL,0)}get ruleIndex(){return l.RULE_literalReal}enterRule(e){e.enterLiteralReal&&e.enterLiteralReal(this)}exitRule(e){e.exitLiteralReal&&e.exitLiteralReal(this)}accept(e){return e.visitLiteralReal?e.visitLiteralReal(this):e.visitChildren(this)}},Ig=class extends h{constructor(e,t){super(e,t)}STAR(){return this.getToken(l.STAR,0)}get ruleIndex(){return l.RULE_literalInfinity}enterRule(e){e.enterLiteralInfinity&&e.enterLiteralInfinity(this)}exitRule(e){e.exitLiteralInfinity&&e.exitLiteralInfinity(this)}accept(e){return e.visitLiteralInfinity?e.visitLiteralInfinity(this):e.visitChildren(this)}},Ug=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_argumentMember}enterRule(e){e.enterArgumentMember&&e.enterArgumentMember(this)}exitRule(e){e.exitArgumentMember&&e.exitArgumentMember(this)}accept(e){return e.visitArgumentMember?e.visitArgumentMember(this):e.visitChildren(this)}},Og=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_argumentExpressionMember}enterRule(e){e.enterArgumentExpressionMember&&e.enterArgumentExpressionMember(this)}exitRule(e){e.exitArgumentExpressionMember&&e.exitArgumentExpressionMember(this)}accept(e){return e.visitArgumentExpressionMember?e.visitArgumentExpressionMember(this):e.visitChildren(this)}},Or=class extends h{constructor(e,t){super(e,t)}IDENTIFIER(){return this.getToken(l.IDENTIFIER,0)}STRING(){return this.getToken(l.STRING,0)}get ruleIndex(){return l.RULE_name}enterRule(e){e.enterName&&e.enterName(this)}exitRule(e){e.exitName&&e.exitName(this)}accept(e){return e.visitName?e.visitName(this):e.visitChildren(this)}},ot=class extends h{constructor(e,t){super(e,t)}LT(){return this.getToken(l.LT,0)}name(e){return e===void 0?this.getRuleContexts(Or):this.getRuleContext(e,Or)}GT(){return this.getToken(l.GT,0)}get ruleIndex(){return l.RULE_identification}enterRule(e){e.enterIdentification&&e.enterIdentification(this)}exitRule(e){e.exitIdentification&&e.exitIdentification(this)}accept(e){return e.visitIdentification?e.visitIdentification(this):e.visitChildren(this)}},Xt=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}relationshipOwnedElement(e){return e===void 0?this.getRuleContexts(k1):this.getRuleContext(e,k1)}ownedAnnotation(e){return e===void 0?this.getRuleContexts(fu):this.getRuleContext(e,fu)}get ruleIndex(){return l.RULE_relationshipBody}enterRule(e){e.enterRelationshipBody&&e.enterRelationshipBody(this)}exitRule(e){e.exitRelationshipBody&&e.exitRelationshipBody(this)}accept(e){return e.visitRelationshipBody?e.visitRelationshipBody(this):e.visitChildren(this)}},k1=class extends h{constructor(e,t){super(e,t)}ownedRelatedElement(){return this.getRuleContext(0,Dg)}ownedAnnotation(){return this.getRuleContext(0,fu)}get ruleIndex(){return l.RULE_relationshipOwnedElement}enterRule(e){e.enterRelationshipOwnedElement&&e.enterRelationshipOwnedElement(this)}exitRule(e){e.exitRelationshipOwnedElement&&e.exitRelationshipOwnedElement(this)}accept(e){return e.visitRelationshipOwnedElement?e.visitRelationshipOwnedElement(this):e.visitChildren(this)}},Dg=class extends h{constructor(e,t){super(e,t)}nonFeatureElement(){return this.getRuleContext(0,U1)}featureElement(){return this.getRuleContext(0,Qs)}get ruleIndex(){return l.RULE_ownedRelatedElement}enterRule(e){e.enterOwnedRelatedElement&&e.enterOwnedRelatedElement(this)}exitRule(e){e.exitOwnedRelatedElement&&e.exitOwnedRelatedElement(this)}accept(e){return e.visitOwnedRelatedElement?e.visitOwnedRelatedElement(this):e.visitChildren(this)}},A1=class extends h{constructor(e,t){super(e,t)}DEPENDENCY(){return this.getToken(l.DEPENDENCY,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}TO(){return this.getToken(l.TO,0)}relationshipBody(){return this.getRuleContext(0,Xt)}prefixMetadataAnnotation(e){return e===void 0?this.getRuleContexts(rd):this.getRuleContext(e,rd)}FROM(){return this.getToken(l.FROM,0)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}identification(){return this.getRuleContext(0,ot)}dependencyDeclaration(){return this.getRuleContext(0,Ax)}get ruleIndex(){return l.RULE_dependency}enterRule(e){e.enterDependency&&e.enterDependency(this)}exitRule(e){e.exitDependency&&e.exitDependency(this)}accept(e){return e.visitDependency?e.visitDependency(this):e.visitChildren(this)}},is=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_annotation}enterRule(e){e.enterAnnotation&&e.enterAnnotation(this)}exitRule(e){e.exitAnnotation&&e.exitAnnotation(this)}accept(e){return e.visitAnnotation?e.visitAnnotation(this):e.visitChildren(this)}},fu=class extends h{constructor(e,t){super(e,t)}annotatingElement(){return this.getRuleContext(0,aa)}get ruleIndex(){return l.RULE_ownedAnnotation}enterRule(e){e.enterOwnedAnnotation&&e.enterOwnedAnnotation(this)}exitRule(e){e.exitOwnedAnnotation&&e.exitOwnedAnnotation(this)}accept(e){return e.visitOwnedAnnotation?e.visitOwnedAnnotation(this):e.visitChildren(this)}},aa=class extends h{constructor(e,t){super(e,t)}comment(){return this.getRuleContext(0,$g)}documentation(){return this.getRuleContext(0,Fg)}textualRepresentation(){return this.getRuleContext(0,Hg)}metadataFeature(){return this.getRuleContext(0,Lx)}get ruleIndex(){return l.RULE_annotatingElement}enterRule(e){e.enterAnnotatingElement&&e.enterAnnotatingElement(this)}exitRule(e){e.exitAnnotatingElement&&e.exitAnnotatingElement(this)}accept(e){return e.visitAnnotatingElement?e.visitAnnotatingElement(this):e.visitChildren(this)}},$g=class extends h{constructor(e,t){super(e,t)}REGULAR_COMMENT(){return this.getToken(l.REGULAR_COMMENT,0)}COMMENT(){return this.getToken(l.COMMENT,0)}LOCALE(){return this.getToken(l.LOCALE,0)}DOUBLE_STRING(){return this.getToken(l.DOUBLE_STRING,0)}identification(){return this.getRuleContext(0,ot)}ABOUT(){return this.getToken(l.ABOUT,0)}annotation(e){return e===void 0?this.getRuleContexts(is):this.getRuleContext(e,is)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_comment}enterRule(e){e.enterComment&&e.enterComment(this)}exitRule(e){e.exitComment&&e.exitComment(this)}accept(e){return e.visitComment?e.visitComment(this):e.visitChildren(this)}},Fg=class extends h{constructor(e,t){super(e,t)}DOC(){return this.getToken(l.DOC,0)}REGULAR_COMMENT(){return this.getToken(l.REGULAR_COMMENT,0)}identification(){return this.getRuleContext(0,ot)}LOCALE(){return this.getToken(l.LOCALE,0)}DOUBLE_STRING(){return this.getToken(l.DOUBLE_STRING,0)}get ruleIndex(){return l.RULE_documentation}enterRule(e){e.enterDocumentation&&e.enterDocumentation(this)}exitRule(e){e.exitDocumentation&&e.exitDocumentation(this)}accept(e){return e.visitDocumentation?e.visitDocumentation(this):e.visitChildren(this)}},Hg=class extends h{constructor(e,t){super(e,t)}LANGUAGE(){return this.getToken(l.LANGUAGE,0)}DOUBLE_STRING(){return this.getToken(l.DOUBLE_STRING,0)}REGULAR_COMMENT(){return this.getToken(l.REGULAR_COMMENT,0)}REP(){return this.getToken(l.REP,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_textualRepresentation}enterRule(e){e.enterTextualRepresentation&&e.enterTextualRepresentation(this)}exitRule(e){e.exitTextualRepresentation&&e.exitTextualRepresentation(this)}accept(e){return e.visitTextualRepresentation?e.visitTextualRepresentation(this):e.visitChildren(this)}},B9=class extends h{constructor(e,t){super(e,t)}EOF(){return this.getToken(l.EOF,0)}packageBodyElement(e){return e===void 0?this.getRuleContexts(ma):this.getRuleContext(e,ma)}get ruleIndex(){return l.RULE_rootNamespace}enterRule(e){e.enterRootNamespace&&e.enterRootNamespace(this)}exitRule(e){e.exitRootNamespace&&e.exitRootNamespace(this)}accept(e){return e.visitRootNamespace?e.visitRootNamespace(this):e.visitChildren(this)}},zg=class extends h{constructor(e,t){super(e,t)}namespaceDeclaration(){return this.getRuleContext(0,Bg)}namespaceBody(){return this.getRuleContext(0,jg)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}get ruleIndex(){return l.RULE_namespace}enterRule(e){e.enterNamespace&&e.enterNamespace(this)}exitRule(e){e.exitNamespace&&e.exitNamespace(this)}accept(e){return e.visitNamespace?e.visitNamespace(this):e.visitChildren(this)}},Bg=class extends h{constructor(e,t){super(e,t)}NAMESPACE(){return this.getToken(l.NAMESPACE,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_namespaceDeclaration}enterRule(e){e.enterNamespaceDeclaration&&e.enterNamespaceDeclaration(this)}exitRule(e){e.exitNamespaceDeclaration&&e.exitNamespaceDeclaration(this)}accept(e){return e.visitNamespaceDeclaration?e.visitNamespaceDeclaration(this):e.visitChildren(this)}},jg=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}namespaceBodyElement(e){return e===void 0?this.getRuleContexts(M1):this.getRuleContext(e,M1)}get ruleIndex(){return l.RULE_namespaceBody}enterRule(e){e.enterNamespaceBody&&e.enterNamespaceBody(this)}exitRule(e){e.exitNamespaceBody&&e.exitNamespaceBody(this)}accept(e){return e.visitNamespaceBody?e.visitNamespaceBody(this):e.visitChildren(this)}},M1=class extends h{constructor(e,t){super(e,t)}namespaceMember(){return this.getRuleContext(0,qg)}aliasMember(){return this.getRuleContext(0,sn)}importRule(){return this.getRuleContext(0,wi)}get ruleIndex(){return l.RULE_namespaceBodyElement}enterRule(e){e.enterNamespaceBodyElement&&e.enterNamespaceBodyElement(this)}exitRule(e){e.exitNamespaceBodyElement&&e.exitNamespaceBodyElement(this)}accept(e){return e.visitNamespaceBodyElement?e.visitNamespaceBodyElement(this):e.visitChildren(this)}},_e=class extends h{constructor(e,t){super(e,t)}visibilityIndicator(){return this.getRuleContext(0,_1)}get ruleIndex(){return l.RULE_memberPrefix}enterRule(e){e.enterMemberPrefix&&e.enterMemberPrefix(this)}exitRule(e){e.exitMemberPrefix&&e.exitMemberPrefix(this)}accept(e){return e.visitMemberPrefix?e.visitMemberPrefix(this):e.visitChildren(this)}},_1=class extends h{constructor(e,t){super(e,t)}PUBLIC(){return this.getToken(l.PUBLIC,0)}PRIVATE(){return this.getToken(l.PRIVATE,0)}PROTECTED(){return this.getToken(l.PROTECTED,0)}get ruleIndex(){return l.RULE_visibilityIndicator}enterRule(e){e.enterVisibilityIndicator&&e.enterVisibilityIndicator(this)}exitRule(e){e.exitVisibilityIndicator&&e.exitVisibilityIndicator(this)}accept(e){return e.visitVisibilityIndicator?e.visitVisibilityIndicator(this):e.visitChildren(this)}},qg=class extends h{constructor(e,t){super(e,t)}nonFeatureMember(){return this.getRuleContext(0,mu)}namespaceFeatureMember(){return this.getRuleContext(0,Vg)}get ruleIndex(){return l.RULE_namespaceMember}enterRule(e){e.enterNamespaceMember&&e.enterNamespaceMember(this)}exitRule(e){e.exitNamespaceMember&&e.exitNamespaceMember(this)}accept(e){return e.visitNamespaceMember?e.visitNamespaceMember(this):e.visitChildren(this)}},mu=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}memberElement(){return this.getRuleContext(0,Wg)}get ruleIndex(){return l.RULE_nonFeatureMember}enterRule(e){e.enterNonFeatureMember&&e.enterNonFeatureMember(this)}exitRule(e){e.exitNonFeatureMember&&e.exitNonFeatureMember(this)}accept(e){return e.visitNonFeatureMember?e.visitNonFeatureMember(this):e.visitChildren(this)}},Vg=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}featureElement(){return this.getRuleContext(0,Qs)}get ruleIndex(){return l.RULE_namespaceFeatureMember}enterRule(e){e.enterNamespaceFeatureMember&&e.enterNamespaceFeatureMember(this)}exitRule(e){e.exitNamespaceFeatureMember&&e.exitNamespaceFeatureMember(this)}accept(e){return e.visitNamespaceFeatureMember?e.visitNamespaceFeatureMember(this):e.visitChildren(this)}},sn=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}ALIAS(){return this.getToken(l.ALIAS,0)}FOR(){return this.getToken(l.FOR,0)}qualifiedName(){return this.getRuleContext(0,Y)}relationshipBody(){return this.getRuleContext(0,Xt)}LT(){return this.getToken(l.LT,0)}name(e){return e===void 0?this.getRuleContexts(Or):this.getRuleContext(e,Or)}GT(){return this.getToken(l.GT,0)}get ruleIndex(){return l.RULE_aliasMember}enterRule(e){e.enterAliasMember&&e.enterAliasMember(this)}exitRule(e){e.exitAliasMember&&e.exitAliasMember(this)}accept(e){return e.visitAliasMember?e.visitAliasMember(this):e.visitChildren(this)}},Y=class extends h{constructor(e,t){super(e,t)}name(e){return e===void 0?this.getRuleContexts(Or):this.getRuleContext(e,Or)}DOLLAR(){return this.getToken(l.DOLLAR,0)}COLON_COLON(e){return e===void 0?this.getTokens(l.COLON_COLON):this.getToken(l.COLON_COLON,e)}get ruleIndex(){return l.RULE_qualifiedName}enterRule(e){e.enterQualifiedName&&e.enterQualifiedName(this)}exitRule(e){e.exitQualifiedName&&e.exitQualifiedName(this)}accept(e){return e.visitQualifiedName?e.visitQualifiedName(this):e.visitChildren(this)}},wi=class extends h{constructor(e,t){super(e,t)}IMPORT(){return this.getToken(l.IMPORT,0)}importDeclaration(){return this.getRuleContext(0,Zg)}relationshipBody(){return this.getRuleContext(0,Xt)}visibilityIndicator(){return this.getRuleContext(0,_1)}ALL(){return this.getToken(l.ALL,0)}get ruleIndex(){return l.RULE_importRule}enterRule(e){e.enterImportRule&&e.enterImportRule(this)}exitRule(e){e.exitImportRule&&e.exitImportRule(this)}accept(e){return e.visitImportRule?e.visitImportRule(this):e.visitChildren(this)}},Zg=class extends h{constructor(e,t){super(e,t)}membershipImport(){return this.getRuleContext(0,gu)}namespaceImport(){return this.getRuleContext(0,N1)}get ruleIndex(){return l.RULE_importDeclaration}enterRule(e){e.enterImportDeclaration&&e.enterImportDeclaration(this)}exitRule(e){e.exitImportDeclaration&&e.exitImportDeclaration(this)}accept(e){return e.visitImportDeclaration?e.visitImportDeclaration(this):e.visitChildren(this)}},gu=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}COLON_COLON(){return this.getToken(l.COLON_COLON,0)}STAR_STAR(){return this.getToken(l.STAR_STAR,0)}get ruleIndex(){return l.RULE_membershipImport}enterRule(e){e.enterMembershipImport&&e.enterMembershipImport(this)}exitRule(e){e.exitMembershipImport&&e.exitMembershipImport(this)}accept(e){return e.visitMembershipImport?e.visitMembershipImport(this):e.visitChildren(this)}},N1=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}COLON_COLON(e){return e===void 0?this.getTokens(l.COLON_COLON):this.getToken(l.COLON_COLON,e)}STAR(){return this.getToken(l.STAR,0)}STAR_STAR(){return this.getToken(l.STAR_STAR,0)}filterPackage(){return this.getRuleContext(0,Gg)}get ruleIndex(){return l.RULE_namespaceImport}enterRule(e){e.enterNamespaceImport&&e.enterNamespaceImport(this)}exitRule(e){e.exitNamespaceImport&&e.exitNamespaceImport(this)}accept(e){return e.visitNamespaceImport?e.visitNamespaceImport(this):e.visitChildren(this)}},Gg=class extends h{constructor(e,t){super(e,t)}filterPackageImportDeclaration(){return this.getRuleContext(0,Cy)}filterPackageMember(e){return e===void 0?this.getRuleContexts(I1):this.getRuleContext(e,I1)}filterPackageImport(){return this.getRuleContext(0,Ty)}get ruleIndex(){return l.RULE_filterPackage}enterRule(e){e.enterFilterPackage&&e.enterFilterPackage(this)}exitRule(e){e.exitFilterPackage&&e.exitFilterPackage(this)}accept(e){return e.visitFilterPackage?e.visitFilterPackage(this):e.visitChildren(this)}},I1=class extends h{constructor(e,t){super(e,t)}LBRACK(){return this.getToken(l.LBRACK,0)}ownedExpression(){return this.getRuleContext(0,Me)}RBRACK(){return this.getToken(l.RBRACK,0)}get ruleIndex(){return l.RULE_filterPackageMember}enterRule(e){e.enterFilterPackageMember&&e.enterFilterPackageMember(this)}exitRule(e){e.exitFilterPackageMember&&e.exitFilterPackageMember(this)}accept(e){return e.visitFilterPackageMember?e.visitFilterPackageMember(this):e.visitChildren(this)}},Wg=class extends h{constructor(e,t){super(e,t)}annotatingElement(){return this.getRuleContext(0,aa)}nonFeatureElement(){return this.getRuleContext(0,U1)}get ruleIndex(){return l.RULE_memberElement}enterRule(e){e.enterMemberElement&&e.enterMemberElement(this)}exitRule(e){e.exitMemberElement&&e.exitMemberElement(this)}accept(e){return e.visitMemberElement?e.visitMemberElement(this):e.visitChildren(this)}},U1=class extends h{constructor(e,t){super(e,t)}dependency(){return this.getRuleContext(0,A1)}namespace(){return this.getRuleContext(0,zg)}type(){return this.getRuleContext(0,Kg)}classifier(){return this.getRuleContext(0,l3)}dataType(){return this.getRuleContext(0,M3)}class(){return this.getRuleContext(0,_3)}structure(){return this.getRuleContext(0,N3)}metaclass(){return this.getRuleContext(0,Px)}association(){return this.getRuleContext(0,I3)}associationStructure(){return this.getRuleContext(0,U3)}interaction(){return this.getRuleContext(0,px)}behavior(){return this.getRuleContext(0,Z3)}function(){return this.getRuleContext(0,W3)}predicate(){return this.getRuleContext(0,J3)}multiplicity(){return this.getRuleContext(0,Rx)}package(){return this.getRuleContext(0,sd)}libraryPackage(){return this.getRuleContext(0,od)}specialization(){return this.getRuleContext(0,t3)}conjugation(){return this.getRuleContext(0,r3)}subclassification(){return this.getRuleContext(0,c3)}disjoining(){return this.getRuleContext(0,n3)}featureInverting(){return this.getRuleContext(0,w3)}featureTyping(){return this.getRuleContext(0,da)}subsetting(){return this.getRuleContext(0,S3)}redefinition(){return this.getRuleContext(0,L3)}typeFeaturing(){return this.getRuleContext(0,A3)}get ruleIndex(){return l.RULE_nonFeatureElement}enterRule(e){e.enterNonFeatureElement&&e.enterNonFeatureElement(this)}exitRule(e){e.exitNonFeatureElement&&e.exitNonFeatureElement(this)}accept(e){return e.visitNonFeatureElement?e.visitNonFeatureElement(this):e.visitChildren(this)}},Qs=class extends h{constructor(e,t){super(e,t)}feature(){return this.getRuleContext(0,d3)}step(){return this.getRuleContext(0,G3)}expression(){return this.getRuleContext(0,K3)}booleanExpression(){return this.getRuleContext(0,Q3)}invariant(){return this.getRuleContext(0,Y3)}connector(){return this.getRuleContext(0,O3)}bindingConnector(){return this.getRuleContext(0,B3)}succession(){return this.getRuleContext(0,q3)}flow(){return this.getRuleContext(0,fx)}successionFlow(){return this.getRuleContext(0,mx)}get ruleIndex(){return l.RULE_featureElement}enterRule(e){e.enterFeatureElement&&e.enterFeatureElement(this)}exitRule(e){e.exitFeatureElement&&e.exitFeatureElement(this)}accept(e){return e.visitFeatureElement?e.visitFeatureElement(this):e.visitChildren(this)}},Kg=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}TYPE(){return this.getToken(l.TYPE,0)}typeDeclaration(){return this.getRuleContext(0,Jg)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_type}enterRule(e){e.enterType&&e.enterType(this)}exitRule(e){e.exitType&&e.exitType(this)}accept(e){return e.visitType?e.visitType(this):e.visitChildren(this)}},Dr=class extends h{constructor(e,t){super(e,t)}ABSTRACT(){return this.getToken(l.ABSTRACT,0)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}get ruleIndex(){return l.RULE_typePrefix}enterRule(e){e.enterTypePrefix&&e.enterTypePrefix(this)}exitRule(e){e.exitTypePrefix&&e.exitTypePrefix(this)}accept(e){return e.visitTypePrefix?e.visitTypePrefix(this):e.visitChildren(this)}},Jg=class extends h{constructor(e,t){super(e,t)}ALL(){return this.getToken(l.ALL,0)}identification(){return this.getRuleContext(0,ot)}ownedMultiplicity(){return this.getRuleContext(0,os)}specializationPart(e){return e===void 0?this.getRuleContexts(O1):this.getRuleContext(e,O1)}conjugationPart(e){return e===void 0?this.getRuleContexts(la):this.getRuleContext(e,la)}typeRelationshipPart(e){return e===void 0?this.getRuleContexts(Ys):this.getRuleContext(e,Ys)}get ruleIndex(){return l.RULE_typeDeclaration}enterRule(e){e.enterTypeDeclaration&&e.enterTypeDeclaration(this)}exitRule(e){e.exitTypeDeclaration&&e.exitTypeDeclaration(this)}accept(e){return e.visitTypeDeclaration?e.visitTypeDeclaration(this):e.visitChildren(this)}},O1=class extends h{constructor(e,t){super(e,t)}ownedSpecialization(e){return e===void 0?this.getRuleContexts(D1):this.getRuleContext(e,D1)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SPECIALIZES(){return this.getToken(l.SPECIALIZES,0)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_specializationPart}enterRule(e){e.enterSpecializationPart&&e.enterSpecializationPart(this)}exitRule(e){e.exitSpecializationPart&&e.exitSpecializationPart(this)}accept(e){return e.visitSpecializationPart?e.visitSpecializationPart(this):e.visitChildren(this)}},la=class extends h{constructor(e,t){super(e,t)}ownedConjugation(){return this.getRuleContext(0,i3)}TILDE(){return this.getToken(l.TILDE,0)}CONJUGATES(){return this.getToken(l.CONJUGATES,0)}get ruleIndex(){return l.RULE_conjugationPart}enterRule(e){e.enterConjugationPart&&e.enterConjugationPart(this)}exitRule(e){e.exitConjugationPart&&e.exitConjugationPart(this)}accept(e){return e.visitConjugationPart?e.visitConjugationPart(this):e.visitChildren(this)}},Ys=class extends h{constructor(e,t){super(e,t)}disjoiningPart(){return this.getRuleContext(0,Qg)}unioningPart(){return this.getRuleContext(0,Yg)}intersectingPart(){return this.getRuleContext(0,Xg)}differencingPart(){return this.getRuleContext(0,e3)}get ruleIndex(){return l.RULE_typeRelationshipPart}enterRule(e){e.enterTypeRelationshipPart&&e.enterTypeRelationshipPart(this)}exitRule(e){e.exitTypeRelationshipPart&&e.exitTypeRelationshipPart(this)}accept(e){return e.visitTypeRelationshipPart?e.visitTypeRelationshipPart(this):e.visitChildren(this)}},Qg=class extends h{constructor(e,t){super(e,t)}DISJOINT(){return this.getToken(l.DISJOINT,0)}FROM(){return this.getToken(l.FROM,0)}ownedDisjoining(e){return e===void 0?this.getRuleContexts($1):this.getRuleContext(e,$1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_disjoiningPart}enterRule(e){e.enterDisjoiningPart&&e.enterDisjoiningPart(this)}exitRule(e){e.exitDisjoiningPart&&e.exitDisjoiningPart(this)}accept(e){return e.visitDisjoiningPart?e.visitDisjoiningPart(this):e.visitChildren(this)}},Yg=class extends h{constructor(e,t){super(e,t)}UNIONS(){return this.getToken(l.UNIONS,0)}unioning(e){return e===void 0?this.getRuleContexts(F1):this.getRuleContext(e,F1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_unioningPart}enterRule(e){e.enterUnioningPart&&e.enterUnioningPart(this)}exitRule(e){e.exitUnioningPart&&e.exitUnioningPart(this)}accept(e){return e.visitUnioningPart?e.visitUnioningPart(this):e.visitChildren(this)}},Xg=class extends h{constructor(e,t){super(e,t)}INTERSECTS(){return this.getToken(l.INTERSECTS,0)}intersecting(e){return e===void 0?this.getRuleContexts(H1):this.getRuleContext(e,H1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_intersectingPart}enterRule(e){e.enterIntersectingPart&&e.enterIntersectingPart(this)}exitRule(e){e.exitIntersectingPart&&e.exitIntersectingPart(this)}accept(e){return e.visitIntersectingPart?e.visitIntersectingPart(this):e.visitChildren(this)}},e3=class extends h{constructor(e,t){super(e,t)}DIFFERENCES(){return this.getToken(l.DIFFERENCES,0)}differencing(e){return e===void 0?this.getRuleContexts(z1):this.getRuleContext(e,z1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_differencingPart}enterRule(e){e.enterDifferencingPart&&e.enterDifferencingPart(this)}exitRule(e){e.exitDifferencingPart&&e.exitDifferencingPart(this)}accept(e){return e.visitDifferencingPart?e.visitDifferencingPart(this):e.visitChildren(this)}},Ut=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}typeBodyElement(e){return e===void 0?this.getRuleContexts(ua):this.getRuleContext(e,ua)}get ruleIndex(){return l.RULE_typeBody}enterRule(e){e.enterTypeBody&&e.enterTypeBody(this)}exitRule(e){e.exitTypeBody&&e.exitTypeBody(this)}accept(e){return e.visitTypeBody?e.visitTypeBody(this):e.visitChildren(this)}},ua=class extends h{constructor(e,t){super(e,t)}nonFeatureMember(){return this.getRuleContext(0,mu)}featureMember(){return this.getRuleContext(0,s3)}aliasMember(){return this.getRuleContext(0,sn)}importRule(){return this.getRuleContext(0,wi)}get ruleIndex(){return l.RULE_typeBodyElement}enterRule(e){e.enterTypeBodyElement&&e.enterTypeBodyElement(this)}exitRule(e){e.exitTypeBodyElement&&e.exitTypeBodyElement(this)}accept(e){return e.visitTypeBodyElement?e.visitTypeBodyElement(this):e.visitChildren(this)}},t3=class extends h{constructor(e,t){super(e,t)}SUBTYPE(){return this.getToken(l.SUBTYPE,0)}specificType(){return this.getRuleContext(0,xu)}generalType(){return this.getRuleContext(0,Xs)}relationshipBody(){return this.getRuleContext(0,Xt)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SPECIALIZES(){return this.getToken(l.SPECIALIZES,0)}SPECIALIZATION(){return this.getToken(l.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_specialization}enterRule(e){e.enterSpecialization&&e.enterSpecialization(this)}exitRule(e){e.exitSpecialization&&e.exitSpecialization(this)}accept(e){return e.visitSpecialization?e.visitSpecialization(this):e.visitChildren(this)}},D1=class extends h{constructor(e,t){super(e,t)}generalType(){return this.getRuleContext(0,Xs)}get ruleIndex(){return l.RULE_ownedSpecialization}enterRule(e){e.enterOwnedSpecialization&&e.enterOwnedSpecialization(this)}exitRule(e){e.exitOwnedSpecialization&&e.exitOwnedSpecialization(this)}accept(e){return e.visitOwnedSpecialization?e.visitOwnedSpecialization(this):e.visitChildren(this)}},xu=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_specificType}enterRule(e){e.enterSpecificType&&e.enterSpecificType(this)}exitRule(e){e.exitSpecificType&&e.exitSpecificType(this)}accept(e){return e.visitSpecificType?e.visitSpecificType(this):e.visitChildren(this)}},Xs=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_generalType}enterRule(e){e.enterGeneralType&&e.enterGeneralType(this)}exitRule(e){e.exitGeneralType&&e.exitGeneralType(this)}accept(e){return e.visitGeneralType?e.visitGeneralType(this):e.visitChildren(this)}},r3=class extends h{constructor(e,t){super(e,t)}CONJUGATE(){return this.getToken(l.CONJUGATE,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}relationshipBody(){return this.getRuleContext(0,Xt)}TILDE(){return this.getToken(l.TILDE,0)}CONJUGATES(){return this.getToken(l.CONJUGATES,0)}CONJUGATION(){return this.getToken(l.CONJUGATION,0)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_conjugation}enterRule(e){e.enterConjugation&&e.enterConjugation(this)}exitRule(e){e.exitConjugation&&e.exitConjugation(this)}accept(e){return e.visitConjugation?e.visitConjugation(this):e.visitChildren(this)}},i3=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedConjugation}enterRule(e){e.enterOwnedConjugation&&e.enterOwnedConjugation(this)}exitRule(e){e.exitOwnedConjugation&&e.exitOwnedConjugation(this)}accept(e){return e.visitOwnedConjugation?e.visitOwnedConjugation(this):e.visitChildren(this)}},n3=class extends h{constructor(e,t){super(e,t)}DISJOINT(){return this.getToken(l.DISJOINT,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}FROM(){return this.getToken(l.FROM,0)}relationshipBody(){return this.getRuleContext(0,Xt)}DISJOINING(){return this.getToken(l.DISJOINING,0)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_disjoining}enterRule(e){e.enterDisjoining&&e.enterDisjoining(this)}exitRule(e){e.exitDisjoining&&e.exitDisjoining(this)}accept(e){return e.visitDisjoining?e.visitDisjoining(this):e.visitChildren(this)}},$1=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedDisjoining}enterRule(e){e.enterOwnedDisjoining&&e.enterOwnedDisjoining(this)}exitRule(e){e.exitOwnedDisjoining&&e.exitOwnedDisjoining(this)}accept(e){return e.visitOwnedDisjoining?e.visitOwnedDisjoining(this):e.visitChildren(this)}},F1=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_unioning}enterRule(e){e.enterUnioning&&e.enterUnioning(this)}exitRule(e){e.exitUnioning&&e.exitUnioning(this)}accept(e){return e.visitUnioning?e.visitUnioning(this):e.visitChildren(this)}},H1=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_intersecting}enterRule(e){e.enterIntersecting&&e.enterIntersecting(this)}exitRule(e){e.exitIntersecting&&e.exitIntersecting(this)}accept(e){return e.visitIntersecting?e.visitIntersecting(this):e.visitChildren(this)}},z1=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_differencing}enterRule(e){e.enterDifferencing&&e.enterDifferencing(this)}exitRule(e){e.exitDifferencing&&e.exitDifferencing(this)}accept(e){return e.visitDifferencing?e.visitDifferencing(this):e.visitChildren(this)}},s3=class extends h{constructor(e,t){super(e,t)}typeFeatureMember(){return this.getRuleContext(0,o3)}ownedFeatureMember(){return this.getRuleContext(0,a3)}get ruleIndex(){return l.RULE_featureMember}enterRule(e){e.enterFeatureMember&&e.enterFeatureMember(this)}exitRule(e){e.exitFeatureMember&&e.exitFeatureMember(this)}accept(e){return e.visitFeatureMember?e.visitFeatureMember(this):e.visitChildren(this)}},o3=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}MEMBER(){return this.getToken(l.MEMBER,0)}featureElement(){return this.getRuleContext(0,Qs)}get ruleIndex(){return l.RULE_typeFeatureMember}enterRule(e){e.enterTypeFeatureMember&&e.enterTypeFeatureMember(this)}exitRule(e){e.exitTypeFeatureMember&&e.exitTypeFeatureMember(this)}accept(e){return e.visitTypeFeatureMember?e.visitTypeFeatureMember(this):e.visitChildren(this)}},a3=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}featureElement(){return this.getRuleContext(0,Qs)}get ruleIndex(){return l.RULE_ownedFeatureMember}enterRule(e){e.enterOwnedFeatureMember&&e.enterOwnedFeatureMember(this)}exitRule(e){e.exitOwnedFeatureMember&&e.exitOwnedFeatureMember(this)}accept(e){return e.visitOwnedFeatureMember?e.visitOwnedFeatureMember(this):e.visitChildren(this)}},l3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}CLASSIFIER(){return this.getToken(l.CLASSIFIER,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_classifier}enterRule(e){e.enterClassifier&&e.enterClassifier(this)}exitRule(e){e.exitClassifier&&e.exitClassifier(this)}accept(e){return e.visitClassifier?e.visitClassifier(this):e.visitChildren(this)}},Qr=class extends h{constructor(e,t){super(e,t)}ALL(){return this.getToken(l.ALL,0)}identification(){return this.getRuleContext(0,ot)}ownedMultiplicity(){return this.getRuleContext(0,os)}superclassingPart(){return this.getRuleContext(0,u3)}conjugationPart(){return this.getRuleContext(0,la)}typeRelationshipPart(e){return e===void 0?this.getRuleContexts(Ys):this.getRuleContext(e,Ys)}get ruleIndex(){return l.RULE_classifierDeclaration}enterRule(e){e.enterClassifierDeclaration&&e.enterClassifierDeclaration(this)}exitRule(e){e.exitClassifierDeclaration&&e.exitClassifierDeclaration(this)}accept(e){return e.visitClassifierDeclaration?e.visitClassifierDeclaration(this):e.visitChildren(this)}},u3=class extends h{constructor(e,t){super(e,t)}ownedSubclassification(e){return e===void 0?this.getRuleContexts(ca):this.getRuleContext(e,ca)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SPECIALIZES(){return this.getToken(l.SPECIALIZES,0)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_superclassingPart}enterRule(e){e.enterSuperclassingPart&&e.enterSuperclassingPart(this)}exitRule(e){e.exitSuperclassingPart&&e.exitSuperclassingPart(this)}accept(e){return e.visitSuperclassingPart?e.visitSuperclassingPart(this):e.visitChildren(this)}},c3=class extends h{constructor(e,t){super(e,t)}SUBCLASSIFIER(){return this.getToken(l.SUBCLASSIFIER,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}relationshipBody(){return this.getRuleContext(0,Xt)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SPECIALIZES(){return this.getToken(l.SPECIALIZES,0)}SPECIALIZATION(){return this.getToken(l.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_subclassification}enterRule(e){e.enterSubclassification&&e.enterSubclassification(this)}exitRule(e){e.exitSubclassification&&e.exitSubclassification(this)}accept(e){return e.visitSubclassification?e.visitSubclassification(this):e.visitChildren(this)}},ca=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_ownedSubclassification}enterRule(e){e.enterOwnedSubclassification&&e.enterOwnedSubclassification(this)}exitRule(e){e.exitOwnedSubclassification&&e.exitOwnedSubclassification(this)}accept(e){return e.visitOwnedSubclassification?e.visitOwnedSubclassification(this):e.visitChildren(this)}},d3=class extends h{constructor(e,t){super(e,t)}typeBody(){return this.getRuleContext(0,Ut)}featurePrefix(){return this.getRuleContext(0,ci)}featureDeclaration(){return this.getRuleContext(0,Er)}valuePart(){return this.getRuleContext(0,St)}FEATURE(){return this.getToken(l.FEATURE,0)}prefixMetadataMember(){return this.getRuleContext(0,tr)}endFeaturePrefix(){return this.getRuleContext(0,B1)}basicFeaturePrefix(){return this.getRuleContext(0,bu)}get ruleIndex(){return l.RULE_feature}enterRule(e){e.enterFeature&&e.enterFeature(this)}exitRule(e){e.exitFeature&&e.exitFeature(this)}accept(e){return e.visitFeature?e.visitFeature(this):e.visitChildren(this)}},B1=class extends h{constructor(e,t){super(e,t)}END(){return this.getToken(l.END,0)}CONST(){return this.getToken(l.CONST,0)}get ruleIndex(){return l.RULE_endFeaturePrefix}enterRule(e){e.enterEndFeaturePrefix&&e.enterEndFeaturePrefix(this)}exitRule(e){e.exitEndFeaturePrefix&&e.exitEndFeaturePrefix(this)}accept(e){return e.visitEndFeaturePrefix?e.visitEndFeaturePrefix(this):e.visitChildren(this)}},bu=class extends h{constructor(e,t){super(e,t)}featureDirection(){return this.getRuleContext(0,q1)}DERIVED(){return this.getToken(l.DERIVED,0)}ABSTRACT(){return this.getToken(l.ABSTRACT,0)}COMPOSITE(){return this.getToken(l.COMPOSITE,0)}PORTION(){return this.getToken(l.PORTION,0)}VAR(){return this.getToken(l.VAR,0)}CONST(){return this.getToken(l.CONST,0)}get ruleIndex(){return l.RULE_basicFeaturePrefix}enterRule(e){e.enterBasicFeaturePrefix&&e.enterBasicFeaturePrefix(this)}exitRule(e){e.exitBasicFeaturePrefix&&e.exitBasicFeaturePrefix(this)}accept(e){return e.visitBasicFeaturePrefix?e.visitBasicFeaturePrefix(this):e.visitChildren(this)}},ci=class extends h{constructor(e,t){super(e,t)}endFeaturePrefix(){return this.getRuleContext(0,B1)}ownedCrossFeatureMember(){return this.getRuleContext(0,j1)}basicFeaturePrefix(){return this.getRuleContext(0,bu)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}get ruleIndex(){return l.RULE_featurePrefix}enterRule(e){e.enterFeaturePrefix&&e.enterFeaturePrefix(this)}exitRule(e){e.exitFeaturePrefix&&e.exitFeaturePrefix(this)}accept(e){return e.visitFeaturePrefix?e.visitFeaturePrefix(this):e.visitChildren(this)}},j1=class extends h{constructor(e,t){super(e,t)}ownedCrossFeature(){return this.getRuleContext(0,h3)}get ruleIndex(){return l.RULE_ownedCrossFeatureMember}enterRule(e){e.enterOwnedCrossFeatureMember&&e.enterOwnedCrossFeatureMember(this)}exitRule(e){e.exitOwnedCrossFeatureMember&&e.exitOwnedCrossFeatureMember(this)}accept(e){return e.visitOwnedCrossFeatureMember?e.visitOwnedCrossFeatureMember(this):e.visitChildren(this)}},h3=class extends h{constructor(e,t){super(e,t)}basicFeaturePrefix(){return this.getRuleContext(0,bu)}featureDeclaration(){return this.getRuleContext(0,Er)}basicUsagePrefix(){return this.getRuleContext(0,no)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_ownedCrossFeature}enterRule(e){e.enterOwnedCrossFeature&&e.enterOwnedCrossFeature(this)}exitRule(e){e.exitOwnedCrossFeature&&e.exitOwnedCrossFeature(this)}accept(e){return e.visitOwnedCrossFeature?e.visitOwnedCrossFeature(this):e.visitChildren(this)}},q1=class extends h{constructor(e,t){super(e,t)}IN(){return this.getToken(l.IN,0)}OUT(){return this.getToken(l.OUT,0)}INOUT(){return this.getToken(l.INOUT,0)}get ruleIndex(){return l.RULE_featureDirection}enterRule(e){e.enterFeatureDirection&&e.enterFeatureDirection(this)}exitRule(e){e.exitFeatureDirection&&e.exitFeatureDirection(this)}accept(e){return e.visitFeatureDirection?e.visitFeatureDirection(this):e.visitChildren(this)}},Er=class extends h{constructor(e,t){super(e,t)}featureIdentification(){return this.getRuleContext(0,p3)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}conjugationPart(){return this.getRuleContext(0,la)}ALL(){return this.getToken(l.ALL,0)}featureRelationshipPart(e){return e===void 0?this.getRuleContexts(V1):this.getRuleContext(e,V1)}get ruleIndex(){return l.RULE_featureDeclaration}enterRule(e){e.enterFeatureDeclaration&&e.enterFeatureDeclaration(this)}exitRule(e){e.exitFeatureDeclaration&&e.exitFeatureDeclaration(this)}accept(e){return e.visitFeatureDeclaration?e.visitFeatureDeclaration(this):e.visitChildren(this)}},p3=class extends h{constructor(e,t){super(e,t)}LT(){return this.getToken(l.LT,0)}name(e){return e===void 0?this.getRuleContexts(Or):this.getRuleContext(e,Or)}GT(){return this.getToken(l.GT,0)}get ruleIndex(){return l.RULE_featureIdentification}enterRule(e){e.enterFeatureIdentification&&e.enterFeatureIdentification(this)}exitRule(e){e.exitFeatureIdentification&&e.exitFeatureIdentification(this)}accept(e){return e.visitFeatureIdentification?e.visitFeatureIdentification(this):e.visitChildren(this)}},V1=class extends h{constructor(e,t){super(e,t)}typeRelationshipPart(){return this.getRuleContext(0,Ys)}chainingPart(){return this.getRuleContext(0,f3)}invertingPart(){return this.getRuleContext(0,m3)}typeFeaturingPart(){return this.getRuleContext(0,g3)}get ruleIndex(){return l.RULE_featureRelationshipPart}enterRule(e){e.enterFeatureRelationshipPart&&e.enterFeatureRelationshipPart(this)}exitRule(e){e.exitFeatureRelationshipPart&&e.exitFeatureRelationshipPart(this)}accept(e){return e.visitFeatureRelationshipPart?e.visitFeatureRelationshipPart(this):e.visitChildren(this)}},f3=class extends h{constructor(e,t){super(e,t)}CHAINS(){return this.getToken(l.CHAINS,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_chainingPart}enterRule(e){e.enterChainingPart&&e.enterChainingPart(this)}exitRule(e){e.exitChainingPart&&e.exitChainingPart(this)}accept(e){return e.visitChainingPart?e.visitChainingPart(this):e.visitChildren(this)}},m3=class extends h{constructor(e,t){super(e,t)}INVERSE(){return this.getToken(l.INVERSE,0)}OF(){return this.getToken(l.OF,0)}ownedFeatureInverting(){return this.getRuleContext(0,k3)}get ruleIndex(){return l.RULE_invertingPart}enterRule(e){e.enterInvertingPart&&e.enterInvertingPart(this)}exitRule(e){e.exitInvertingPart&&e.exitInvertingPart(this)}accept(e){return e.visitInvertingPart?e.visitInvertingPart(this):e.visitChildren(this)}},g3=class extends h{constructor(e,t){super(e,t)}FEATURED(){return this.getToken(l.FEATURED,0)}BY(){return this.getToken(l.BY,0)}ownedTypeFeaturing(e){return e===void 0?this.getRuleContexts(K1):this.getRuleContext(e,K1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_typeFeaturingPart}enterRule(e){e.enterTypeFeaturingPart&&e.enterTypeFeaturingPart(this)}exitRule(e){e.exitTypeFeaturingPart&&e.exitTypeFeaturingPart(this)}accept(e){return e.visitTypeFeaturingPart?e.visitTypeFeaturingPart(this):e.visitChildren(this)}},Sr=class extends h{constructor(e,t){super(e,t)}featureSpecialization(e){return e===void 0?this.getRuleContexts(on):this.getRuleContext(e,on)}multiplicityPart(){return this.getRuleContext(0,Z1)}get ruleIndex(){return l.RULE_featureSpecializationPart}enterRule(e){e.enterFeatureSpecializationPart&&e.enterFeatureSpecializationPart(this)}exitRule(e){e.exitFeatureSpecializationPart&&e.exitFeatureSpecializationPart(this)}accept(e){return e.visitFeatureSpecializationPart?e.visitFeatureSpecializationPart(this):e.visitChildren(this)}},Z1=class extends h{constructor(e,t){super(e,t)}ownedMultiplicity(){return this.getRuleContext(0,os)}ORDERED(){return this.getToken(l.ORDERED,0)}NONUNIQUE(){return this.getToken(l.NONUNIQUE,0)}get ruleIndex(){return l.RULE_multiplicityPart}enterRule(e){e.enterMultiplicityPart&&e.enterMultiplicityPart(this)}exitRule(e){e.exitMultiplicityPart&&e.exitMultiplicityPart(this)}accept(e){return e.visitMultiplicityPart?e.visitMultiplicityPart(this):e.visitChildren(this)}},on=class extends h{constructor(e,t){super(e,t)}typings(){return this.getRuleContext(0,x3)}subsettings(){return this.getRuleContext(0,y3)}references(){return this.getRuleContext(0,v3)}crosses(){return this.getRuleContext(0,R3)}redefinitions(){return this.getRuleContext(0,C3)}get ruleIndex(){return l.RULE_featureSpecialization}enterRule(e){e.enterFeatureSpecialization&&e.enterFeatureSpecialization(this)}exitRule(e){e.exitFeatureSpecialization&&e.exitFeatureSpecialization(this)}accept(e){return e.visitFeatureSpecialization?e.visitFeatureSpecialization(this):e.visitChildren(this)}},x3=class extends h{constructor(e,t){super(e,t)}typedBy(){return this.getRuleContext(0,b3)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}featureTyping(e){return e===void 0?this.getRuleContexts(da):this.getRuleContext(e,da)}get ruleIndex(){return l.RULE_typings}enterRule(e){e.enterTypings&&e.enterTypings(this)}exitRule(e){e.exitTypings&&e.exitTypings(this)}accept(e){return e.visitTypings?e.visitTypings(this):e.visitChildren(this)}},b3=class extends h{constructor(e,t){super(e,t)}featureTyping(){return this.getRuleContext(0,da)}COLON(){return this.getToken(l.COLON,0)}TYPED(){return this.getToken(l.TYPED,0)}BY(){return this.getToken(l.BY,0)}DEFINED(){return this.getToken(l.DEFINED,0)}get ruleIndex(){return l.RULE_typedBy}enterRule(e){e.enterTypedBy&&e.enterTypedBy(this)}exitRule(e){e.exitTypedBy&&e.exitTypedBy(this)}accept(e){return e.visitTypedBy?e.visitTypedBy(this):e.visitChildren(this)}},y3=class extends h{constructor(e,t){super(e,t)}subsets(){return this.getRuleContext(0,G1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}ownedSubsetting(e){return e===void 0?this.getRuleContexts(yu):this.getRuleContext(e,yu)}get ruleIndex(){return l.RULE_subsettings}enterRule(e){e.enterSubsettings&&e.enterSubsettings(this)}exitRule(e){e.exitSubsettings&&e.exitSubsettings(this)}accept(e){return e.visitSubsettings?e.visitSubsettings(this):e.visitChildren(this)}},G1=class extends h{constructor(e,t){super(e,t)}ownedSubsetting(){return this.getRuleContext(0,yu)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SUBSETS(){return this.getToken(l.SUBSETS,0)}get ruleIndex(){return l.RULE_subsets}enterRule(e){e.enterSubsets&&e.enterSubsets(this)}exitRule(e){e.exitSubsets&&e.exitSubsets(this)}accept(e){return e.visitSubsets?e.visitSubsets(this):e.visitChildren(this)}},v3=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}COLON_COLON_GT(){return this.getToken(l.COLON_COLON_GT,0)}REFERENCES(){return this.getToken(l.REFERENCES,0)}get ruleIndex(){return l.RULE_references}enterRule(e){e.enterReferences&&e.enterReferences(this)}exitRule(e){e.exitReferences&&e.exitReferences(this)}accept(e){return e.visitReferences?e.visitReferences(this):e.visitChildren(this)}},R3=class extends h{constructor(e,t){super(e,t)}ownedCrossSubsetting(){return this.getRuleContext(0,P3)}FAT_ARROW(){return this.getToken(l.FAT_ARROW,0)}CROSSES(){return this.getToken(l.CROSSES,0)}get ruleIndex(){return l.RULE_crosses}enterRule(e){e.enterCrosses&&e.enterCrosses(this)}exitRule(e){e.exitCrosses&&e.exitCrosses(this)}accept(e){return e.visitCrosses?e.visitCrosses(this):e.visitChildren(this)}},C3=class extends h{constructor(e,t){super(e,t)}redefines(){return this.getRuleContext(0,E3)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}ownedRedefinition(e){return e===void 0?this.getRuleContexts(eo):this.getRuleContext(e,eo)}get ruleIndex(){return l.RULE_redefinitions}enterRule(e){e.enterRedefinitions&&e.enterRedefinitions(this)}exitRule(e){e.exitRedefinitions&&e.exitRedefinitions(this)}accept(e){return e.visitRedefinitions?e.visitRedefinitions(this):e.visitChildren(this)}},E3=class extends h{constructor(e,t){super(e,t)}ownedRedefinition(){return this.getRuleContext(0,eo)}COLON_GT_GT(){return this.getToken(l.COLON_GT_GT,0)}REDEFINES(){return this.getToken(l.REDEFINES,0)}get ruleIndex(){return l.RULE_redefines}enterRule(e){e.enterRedefines&&e.enterRedefines(this)}exitRule(e){e.exitRedefines&&e.exitRedefines(this)}accept(e){return e.visitRedefines?e.visitRedefines(this):e.visitChildren(this)}},da=class extends h{constructor(e,t){super(e,t)}TYPING(){return this.getToken(l.TYPING,0)}qualifiedName(){return this.getRuleContext(0,Y)}generalType(){return this.getRuleContext(0,Xs)}relationshipBody(){return this.getRuleContext(0,Xt)}COLON(){return this.getToken(l.COLON,0)}TYPED(){return this.getToken(l.TYPED,0)}BY(){return this.getToken(l.BY,0)}SPECIALIZATION(){return this.getToken(l.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,ot)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}conjugatedPortTyping(){return this.getRuleContext(0,Yx)}get ruleIndex(){return l.RULE_featureTyping}enterRule(e){e.enterFeatureTyping&&e.enterFeatureTyping(this)}exitRule(e){e.exitFeatureTyping&&e.exitFeatureTyping(this)}accept(e){return e.visitFeatureTyping?e.visitFeatureTyping(this):e.visitChildren(this)}},ns=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedFeatureTyping}enterRule(e){e.enterOwnedFeatureTyping&&e.enterOwnedFeatureTyping(this)}exitRule(e){e.exitOwnedFeatureTyping&&e.exitOwnedFeatureTyping(this)}accept(e){return e.visitOwnedFeatureTyping?e.visitOwnedFeatureTyping(this):e.visitChildren(this)}},S3=class extends h{constructor(e,t){super(e,t)}SUBSET(){return this.getToken(l.SUBSET,0)}specificType(){return this.getRuleContext(0,xu)}generalType(){return this.getRuleContext(0,Xs)}relationshipBody(){return this.getRuleContext(0,Xt)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SUBSETS(){return this.getToken(l.SUBSETS,0)}SPECIALIZATION(){return this.getToken(l.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_subsetting}enterRule(e){e.enterSubsetting&&e.enterSubsetting(this)}exitRule(e){e.exitSubsetting&&e.exitSubsetting(this)}accept(e){return e.visitSubsetting?e.visitSubsetting(this):e.visitChildren(this)}},yu=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedSubsetting}enterRule(e){e.enterOwnedSubsetting&&e.enterOwnedSubsetting(this)}exitRule(e){e.exitOwnedSubsetting&&e.exitOwnedSubsetting(this)}accept(e){return e.visitOwnedSubsetting?e.visitOwnedSubsetting(this):e.visitChildren(this)}},er=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedReferenceSubsetting}enterRule(e){e.enterOwnedReferenceSubsetting&&e.enterOwnedReferenceSubsetting(this)}exitRule(e){e.exitOwnedReferenceSubsetting&&e.exitOwnedReferenceSubsetting(this)}accept(e){return e.visitOwnedReferenceSubsetting?e.visitOwnedReferenceSubsetting(this):e.visitChildren(this)}},P3=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedCrossSubsetting}enterRule(e){e.enterOwnedCrossSubsetting&&e.enterOwnedCrossSubsetting(this)}exitRule(e){e.exitOwnedCrossSubsetting&&e.exitOwnedCrossSubsetting(this)}accept(e){return e.visitOwnedCrossSubsetting?e.visitOwnedCrossSubsetting(this):e.visitChildren(this)}},L3=class extends h{constructor(e,t){super(e,t)}REDEFINITION(){return this.getToken(l.REDEFINITION,0)}specificType(){return this.getRuleContext(0,xu)}generalType(){return this.getRuleContext(0,Xs)}relationshipBody(){return this.getRuleContext(0,Xt)}COLON_GT_GT(){return this.getToken(l.COLON_GT_GT,0)}REDEFINES(){return this.getToken(l.REDEFINES,0)}SPECIALIZATION(){return this.getToken(l.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_redefinition}enterRule(e){e.enterRedefinition&&e.enterRedefinition(this)}exitRule(e){e.exitRedefinition&&e.exitRedefinition(this)}accept(e){return e.visitRedefinition?e.visitRedefinition(this):e.visitChildren(this)}},eo=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedRedefinition}enterRule(e){e.enterOwnedRedefinition&&e.enterOwnedRedefinition(this)}exitRule(e){e.exitOwnedRedefinition&&e.exitOwnedRedefinition(this)}accept(e){return e.visitOwnedRedefinition?e.visitOwnedRedefinition(this):e.visitChildren(this)}},T3=class extends h{constructor(e,t){super(e,t)}featureChain(){return this.getRuleContext(0,W1)}ownedFeatureChaining(e){return e===void 0?this.getRuleContexts(ss):this.getRuleContext(e,ss)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedFeatureChain}enterRule(e){e.enterOwnedFeatureChain&&e.enterOwnedFeatureChain(this)}exitRule(e){e.exitOwnedFeatureChain&&e.exitOwnedFeatureChain(this)}accept(e){return e.visitOwnedFeatureChain?e.visitOwnedFeatureChain(this):e.visitChildren(this)}},W1=class extends h{constructor(e,t){super(e,t)}ownedFeatureChaining(e){return e===void 0?this.getRuleContexts(ss):this.getRuleContext(e,ss)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_featureChain}enterRule(e){e.enterFeatureChain&&e.enterFeatureChain(this)}exitRule(e){e.exitFeatureChain&&e.exitFeatureChain(this)}accept(e){return e.visitFeatureChain?e.visitFeatureChain(this):e.visitChildren(this)}},ss=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_ownedFeatureChaining}enterRule(e){e.enterOwnedFeatureChaining&&e.enterOwnedFeatureChaining(this)}exitRule(e){e.exitOwnedFeatureChaining&&e.exitOwnedFeatureChaining(this)}accept(e){return e.visitOwnedFeatureChaining?e.visitOwnedFeatureChaining(this):e.visitChildren(this)}},w3=class extends h{constructor(e,t){super(e,t)}INVERSE(){return this.getToken(l.INVERSE,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}OF(){return this.getToken(l.OF,0)}relationshipBody(){return this.getRuleContext(0,Xt)}INVERTING(){return this.getToken(l.INVERTING,0)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_featureInverting}enterRule(e){e.enterFeatureInverting&&e.enterFeatureInverting(this)}exitRule(e){e.exitFeatureInverting&&e.exitFeatureInverting(this)}accept(e){return e.visitFeatureInverting?e.visitFeatureInverting(this):e.visitChildren(this)}},k3=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedFeatureInverting}enterRule(e){e.enterOwnedFeatureInverting&&e.enterOwnedFeatureInverting(this)}exitRule(e){e.exitOwnedFeatureInverting&&e.exitOwnedFeatureInverting(this)}accept(e){return e.visitOwnedFeatureInverting?e.visitOwnedFeatureInverting(this):e.visitChildren(this)}},A3=class extends h{constructor(e,t){super(e,t)}FEATURING(){return this.getToken(l.FEATURING,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}BY(){return this.getToken(l.BY,0)}relationshipBody(){return this.getRuleContext(0,Xt)}OF(){return this.getToken(l.OF,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_typeFeaturing}enterRule(e){e.enterTypeFeaturing&&e.enterTypeFeaturing(this)}exitRule(e){e.exitTypeFeaturing&&e.exitTypeFeaturing(this)}accept(e){return e.visitTypeFeaturing?e.visitTypeFeaturing(this):e.visitChildren(this)}},K1=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_ownedTypeFeaturing}enterRule(e){e.enterOwnedTypeFeaturing&&e.enterOwnedTypeFeaturing(this)}exitRule(e){e.exitOwnedTypeFeaturing&&e.exitOwnedTypeFeaturing(this)}accept(e){return e.visitOwnedTypeFeaturing?e.visitOwnedTypeFeaturing(this):e.visitChildren(this)}},M3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}DATATYPE(){return this.getToken(l.DATATYPE,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_dataType}enterRule(e){e.enterDataType&&e.enterDataType(this)}exitRule(e){e.exitDataType&&e.exitDataType(this)}accept(e){return e.visitDataType?e.visitDataType(this):e.visitChildren(this)}},_3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}CLASS(){return this.getToken(l.CLASS,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_class}enterRule(e){e.enterClass&&e.enterClass(this)}exitRule(e){e.exitClass&&e.exitClass(this)}accept(e){return e.visitClass?e.visitClass(this):e.visitChildren(this)}},N3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}STRUCT(){return this.getToken(l.STRUCT,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_structure}enterRule(e){e.enterStructure&&e.enterStructure(this)}exitRule(e){e.exitStructure&&e.exitStructure(this)}accept(e){return e.visitStructure?e.visitStructure(this):e.visitChildren(this)}},I3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}ASSOC(){return this.getToken(l.ASSOC,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_association}enterRule(e){e.enterAssociation&&e.enterAssociation(this)}exitRule(e){e.exitAssociation&&e.exitAssociation(this)}accept(e){return e.visitAssociation?e.visitAssociation(this):e.visitChildren(this)}},U3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}ASSOC(){return this.getToken(l.ASSOC,0)}STRUCT(){return this.getToken(l.STRUCT,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_associationStructure}enterRule(e){e.enterAssociationStructure&&e.enterAssociationStructure(this)}exitRule(e){e.exitAssociationStructure&&e.exitAssociationStructure(this)}accept(e){return e.visitAssociationStructure?e.visitAssociationStructure(this):e.visitChildren(this)}},O3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}CONNECTOR(){return this.getToken(l.CONNECTOR,0)}typeBody(){return this.getRuleContext(0,Ut)}connectorDeclaration(){return this.getRuleContext(0,D3)}featureDeclaration(){return this.getRuleContext(0,Er)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_connector}enterRule(e){e.enterConnector&&e.enterConnector(this)}exitRule(e){e.exitConnector&&e.exitConnector(this)}accept(e){return e.visitConnector?e.visitConnector(this):e.visitChildren(this)}},D3=class extends h{constructor(e,t){super(e,t)}binaryConnectorDeclaration(){return this.getRuleContext(0,$3)}naryConnectorDeclaration(){return this.getRuleContext(0,F3)}get ruleIndex(){return l.RULE_connectorDeclaration}enterRule(e){e.enterConnectorDeclaration&&e.enterConnectorDeclaration(this)}exitRule(e){e.exitConnectorDeclaration&&e.exitConnectorDeclaration(this)}accept(e){return e.visitConnectorDeclaration?e.visitConnectorDeclaration(this):e.visitChildren(this)}},$3=class extends h{constructor(e,t){super(e,t)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}TO(){return this.getToken(l.TO,0)}FROM(){return this.getToken(l.FROM,0)}ALL(){return this.getToken(l.ALL,0)}featureDeclaration(){return this.getRuleContext(0,Er)}get ruleIndex(){return l.RULE_binaryConnectorDeclaration}enterRule(e){e.enterBinaryConnectorDeclaration&&e.enterBinaryConnectorDeclaration(this)}exitRule(e){e.exitBinaryConnectorDeclaration&&e.exitBinaryConnectorDeclaration(this)}accept(e){return e.visitBinaryConnectorDeclaration?e.visitBinaryConnectorDeclaration(this):e.visitChildren(this)}},F3=class extends h{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(l.LPAREN,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}RPAREN(){return this.getToken(l.RPAREN,0)}featureDeclaration(){return this.getRuleContext(0,Er)}get ruleIndex(){return l.RULE_naryConnectorDeclaration}enterRule(e){e.enterNaryConnectorDeclaration&&e.enterNaryConnectorDeclaration(this)}exitRule(e){e.exitNaryConnectorDeclaration&&e.exitNaryConnectorDeclaration(this)}accept(e){return e.visitNaryConnectorDeclaration?e.visitNaryConnectorDeclaration(this):e.visitChildren(this)}},Ft=class extends h{constructor(e,t){super(e,t)}connectorEnd(){return this.getRuleContext(0,H3)}get ruleIndex(){return l.RULE_connectorEndMember}enterRule(e){e.enterConnectorEndMember&&e.enterConnectorEndMember(this)}exitRule(e){e.exitConnectorEndMember&&e.exitConnectorEndMember(this)}accept(e){return e.visitConnectorEndMember?e.visitConnectorEndMember(this):e.visitChildren(this)}},H3=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}ownedCrossMultiplicityMember(){return this.getRuleContext(0,J1)}name(){return this.getRuleContext(0,Or)}COLON_COLON_GT(){return this.getToken(l.COLON_COLON_GT,0)}REFERENCES(){return this.getToken(l.REFERENCES,0)}get ruleIndex(){return l.RULE_connectorEnd}enterRule(e){e.enterConnectorEnd&&e.enterConnectorEnd(this)}exitRule(e){e.exitConnectorEnd&&e.exitConnectorEnd(this)}accept(e){return e.visitConnectorEnd?e.visitConnectorEnd(this):e.visitChildren(this)}},J1=class extends h{constructor(e,t){super(e,t)}ownedCrossMultiplicity(){return this.getRuleContext(0,z3)}get ruleIndex(){return l.RULE_ownedCrossMultiplicityMember}enterRule(e){e.enterOwnedCrossMultiplicityMember&&e.enterOwnedCrossMultiplicityMember(this)}exitRule(e){e.exitOwnedCrossMultiplicityMember&&e.exitOwnedCrossMultiplicityMember(this)}accept(e){return e.visitOwnedCrossMultiplicityMember?e.visitOwnedCrossMultiplicityMember(this):e.visitChildren(this)}},z3=class extends h{constructor(e,t){super(e,t)}ownedMultiplicity(){return this.getRuleContext(0,os)}get ruleIndex(){return l.RULE_ownedCrossMultiplicity}enterRule(e){e.enterOwnedCrossMultiplicity&&e.enterOwnedCrossMultiplicity(this)}exitRule(e){e.exitOwnedCrossMultiplicity&&e.exitOwnedCrossMultiplicity(this)}accept(e){return e.visitOwnedCrossMultiplicity?e.visitOwnedCrossMultiplicity(this):e.visitChildren(this)}},B3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}BINDING(){return this.getToken(l.BINDING,0)}bindingConnectorDeclaration(){return this.getRuleContext(0,j3)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_bindingConnector}enterRule(e){e.enterBindingConnector&&e.enterBindingConnector(this)}exitRule(e){e.exitBindingConnector&&e.exitBindingConnector(this)}accept(e){return e.visitBindingConnector?e.visitBindingConnector(this):e.visitChildren(this)}},j3=class extends h{constructor(e,t){super(e,t)}featureDeclaration(){return this.getRuleContext(0,Er)}OF(){return this.getToken(l.OF,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}EQ(){return this.getToken(l.EQ,0)}ALL(){return this.getToken(l.ALL,0)}get ruleIndex(){return l.RULE_bindingConnectorDeclaration}enterRule(e){e.enterBindingConnectorDeclaration&&e.enterBindingConnectorDeclaration(this)}exitRule(e){e.exitBindingConnectorDeclaration&&e.exitBindingConnectorDeclaration(this)}accept(e){return e.visitBindingConnectorDeclaration?e.visitBindingConnectorDeclaration(this):e.visitChildren(this)}},q3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}SUCCESSION(){return this.getToken(l.SUCCESSION,0)}successionDeclaration(){return this.getRuleContext(0,V3)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_succession}enterRule(e){e.enterSuccession&&e.enterSuccession(this)}exitRule(e){e.exitSuccession&&e.exitSuccession(this)}accept(e){return e.visitSuccession?e.visitSuccession(this):e.visitChildren(this)}},V3=class extends h{constructor(e,t){super(e,t)}featureDeclaration(){return this.getRuleContext(0,Er)}FIRST(){return this.getToken(l.FIRST,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}THEN(){return this.getToken(l.THEN,0)}ALL(){return this.getToken(l.ALL,0)}get ruleIndex(){return l.RULE_successionDeclaration}enterRule(e){e.enterSuccessionDeclaration&&e.enterSuccessionDeclaration(this)}exitRule(e){e.exitSuccessionDeclaration&&e.exitSuccessionDeclaration(this)}accept(e){return e.visitSuccessionDeclaration?e.visitSuccessionDeclaration(this):e.visitChildren(this)}},Z3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}BEHAVIOR(){return this.getToken(l.BEHAVIOR,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_behavior}enterRule(e){e.enterBehavior&&e.enterBehavior(this)}exitRule(e){e.exitBehavior&&e.exitBehavior(this)}accept(e){return e.visitBehavior?e.visitBehavior(this):e.visitChildren(this)}},G3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}STEP(){return this.getToken(l.STEP,0)}featureDeclaration(){return this.getRuleContext(0,Er)}typeBody(){return this.getRuleContext(0,Ut)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_step}enterRule(e){e.enterStep&&e.enterStep(this)}exitRule(e){e.exitStep&&e.exitStep(this)}accept(e){return e.visitStep?e.visitStep(this):e.visitChildren(this)}},W3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}FUNCTION(){return this.getToken(l.FUNCTION,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}functionBody(){return this.getRuleContext(0,to)}get ruleIndex(){return l.RULE_function}enterRule(e){e.enterFunction&&e.enterFunction(this)}exitRule(e){e.exitFunction&&e.exitFunction(this)}accept(e){return e.visitFunction?e.visitFunction(this):e.visitChildren(this)}},to=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}functionBodyPart(){return this.getRuleContext(0,vu)}RBRACE(){return this.getToken(l.RBRACE,0)}get ruleIndex(){return l.RULE_functionBody}enterRule(e){e.enterFunctionBody&&e.enterFunctionBody(this)}exitRule(e){e.exitFunctionBody&&e.exitFunctionBody(this)}accept(e){return e.visitFunctionBody?e.visitFunctionBody(this):e.visitChildren(this)}},vu=class extends h{constructor(e,t){super(e,t)}typeBodyElement(e){return e===void 0?this.getRuleContexts(ua):this.getRuleContext(e,ua)}returnFeatureMember(e){return e===void 0?this.getRuleContexts(Q1):this.getRuleContext(e,Q1)}resultExpressionMember(){return this.getRuleContext(0,Ru)}get ruleIndex(){return l.RULE_functionBodyPart}enterRule(e){e.enterFunctionBodyPart&&e.enterFunctionBodyPart(this)}exitRule(e){e.exitFunctionBodyPart&&e.exitFunctionBodyPart(this)}accept(e){return e.visitFunctionBodyPart?e.visitFunctionBodyPart(this):e.visitChildren(this)}},Q1=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}RETURN(){return this.getToken(l.RETURN,0)}featureElement(){return this.getRuleContext(0,Qs)}get ruleIndex(){return l.RULE_returnFeatureMember}enterRule(e){e.enterReturnFeatureMember&&e.enterReturnFeatureMember(this)}exitRule(e){e.exitReturnFeatureMember&&e.exitReturnFeatureMember(this)}accept(e){return e.visitReturnFeatureMember?e.visitReturnFeatureMember(this):e.visitChildren(this)}},Ru=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_resultExpressionMember}enterRule(e){e.enterResultExpressionMember&&e.enterResultExpressionMember(this)}exitRule(e){e.exitResultExpressionMember&&e.exitResultExpressionMember(this)}accept(e){return e.visitResultExpressionMember?e.visitResultExpressionMember(this):e.visitChildren(this)}},K3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}EXPR(){return this.getToken(l.EXPR,0)}featureDeclaration(){return this.getRuleContext(0,Er)}functionBody(){return this.getRuleContext(0,to)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_expression}enterRule(e){e.enterExpression&&e.enterExpression(this)}exitRule(e){e.exitExpression&&e.exitExpression(this)}accept(e){return e.visitExpression?e.visitExpression(this):e.visitChildren(this)}},J3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}PREDICATE(){return this.getToken(l.PREDICATE,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}functionBody(){return this.getRuleContext(0,to)}get ruleIndex(){return l.RULE_predicate}enterRule(e){e.enterPredicate&&e.enterPredicate(this)}exitRule(e){e.exitPredicate&&e.exitPredicate(this)}accept(e){return e.visitPredicate?e.visitPredicate(this):e.visitChildren(this)}},Q3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}BOOL(){return this.getToken(l.BOOL,0)}featureDeclaration(){return this.getRuleContext(0,Er)}functionBody(){return this.getRuleContext(0,to)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_booleanExpression}enterRule(e){e.enterBooleanExpression&&e.enterBooleanExpression(this)}exitRule(e){e.exitBooleanExpression&&e.exitBooleanExpression(this)}accept(e){return e.visitBooleanExpression?e.visitBooleanExpression(this):e.visitChildren(this)}},Y3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}INV(){return this.getToken(l.INV,0)}featureDeclaration(){return this.getRuleContext(0,Er)}functionBody(){return this.getRuleContext(0,to)}valuePart(){return this.getRuleContext(0,St)}TRUE(){return this.getToken(l.TRUE,0)}FALSE(){return this.getToken(l.FALSE,0)}get ruleIndex(){return l.RULE_invariant}enterRule(e){e.enterInvariant&&e.enterInvariant(this)}exitRule(e){e.exitInvariant&&e.exitInvariant(this)}accept(e){return e.visitInvariant?e.visitInvariant(this):e.visitChildren(this)}},X3=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_ownedExpressionMember}enterRule(e){e.enterOwnedExpressionMember&&e.enterOwnedExpressionMember(this)}exitRule(e){e.exitOwnedExpressionMember&&e.exitOwnedExpressionMember(this)}accept(e){return e.visitOwnedExpressionMember?e.visitOwnedExpressionMember(this):e.visitChildren(this)}},j9=class extends h{constructor(e,t){super(e,t)}elementReferenceMember(){return this.getRuleContext(0,cx)}get ruleIndex(){return l.RULE_metadataReference}enterRule(e){e.enterMetadataReference&&e.enterMetadataReference(this)}exitRule(e){e.exitMetadataReference&&e.exitMetadataReference(this)}accept(e){return e.visitMetadataReference?e.visitMetadataReference(this):e.visitChildren(this)}},q9=class extends h{constructor(e,t){super(e,t)}typeReference(){return this.getRuleContext(0,cu)}get ruleIndex(){return l.RULE_typeReferenceMember}enterRule(e){e.enterTypeReferenceMember&&e.enterTypeReferenceMember(this)}exitRule(e){e.exitTypeReferenceMember&&e.exitTypeReferenceMember(this)}accept(e){return e.visitTypeReferenceMember?e.visitTypeReferenceMember(this):e.visitChildren(this)}},V9=class extends h{constructor(e,t){super(e,t)}typeReference(){return this.getRuleContext(0,cu)}get ruleIndex(){return l.RULE_typeResultMember}enterRule(e){e.enterTypeResultMember&&e.enterTypeResultMember(this)}exitRule(e){e.exitTypeResultMember&&e.exitTypeResultMember(this)}accept(e){return e.visitTypeResultMember?e.visitTypeResultMember(this):e.visitChildren(this)}},ex=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_referenceTyping}enterRule(e){e.enterReferenceTyping&&e.enterReferenceTyping(this)}exitRule(e){e.exitReferenceTyping&&e.exitReferenceTyping(this)}accept(e){return e.visitReferenceTyping?e.visitReferenceTyping(this):e.visitChildren(this)}},Z9=class extends h{constructor(e,t){super(e,t)}emptyFeature_(){return this.getRuleContext(0,ch)}get ruleIndex(){return l.RULE_emptyResultMember}enterRule(e){e.enterEmptyResultMember&&e.enterEmptyResultMember(this)}exitRule(e){e.exitEmptyResultMember&&e.exitEmptyResultMember(this)}accept(e){return e.visitEmptyResultMember?e.visitEmptyResultMember(this):e.visitChildren(this)}},G9=class extends h{constructor(e,t){super(e,t)}ownedExpressionMember(){return this.getRuleContext(0,X3)}COMMA(){return this.getToken(l.COMMA,0)}sequenceExpressionListMember(){return this.getRuleContext(0,tx)}get ruleIndex(){return l.RULE_sequenceOperatorExpression}enterRule(e){e.enterSequenceOperatorExpression&&e.enterSequenceOperatorExpression(this)}exitRule(e){e.exitSequenceOperatorExpression&&e.exitSequenceOperatorExpression(this)}accept(e){return e.visitSequenceOperatorExpression?e.visitSequenceOperatorExpression(this):e.visitChildren(this)}},tx=class extends h{constructor(e,t){super(e,t)}sequenceExpressionList(){return this.getRuleContext(0,du)}get ruleIndex(){return l.RULE_sequenceExpressionListMember}enterRule(e){e.enterSequenceExpressionListMember&&e.enterSequenceExpressionListMember(this)}exitRule(e){e.exitSequenceExpressionListMember&&e.exitSequenceExpressionListMember(this)}accept(e){return e.visitSequenceExpressionListMember?e.visitSequenceExpressionListMember(this):e.visitChildren(this)}},W9=class extends h{constructor(e,t){super(e,t)}bodyArgument(){return this.getRuleContext(0,rx)}get ruleIndex(){return l.RULE_bodyArgumentMember}enterRule(e){e.enterBodyArgumentMember&&e.enterBodyArgumentMember(this)}exitRule(e){e.exitBodyArgumentMember&&e.exitBodyArgumentMember(this)}accept(e){return e.visitBodyArgumentMember?e.visitBodyArgumentMember(this):e.visitChildren(this)}},rx=class extends h{constructor(e,t){super(e,t)}bodyArgumentValue(){return this.getRuleContext(0,ix)}get ruleIndex(){return l.RULE_bodyArgument}enterRule(e){e.enterBodyArgument&&e.enterBodyArgument(this)}exitRule(e){e.exitBodyArgument&&e.exitBodyArgument(this)}accept(e){return e.visitBodyArgument?e.visitBodyArgument(this):e.visitChildren(this)}},ix=class extends h{constructor(e,t){super(e,t)}bodyExpression(){return this.getRuleContext(0,hu)}get ruleIndex(){return l.RULE_bodyArgumentValue}enterRule(e){e.enterBodyArgumentValue&&e.enterBodyArgumentValue(this)}exitRule(e){e.exitBodyArgumentValue&&e.exitBodyArgumentValue(this)}accept(e){return e.visitBodyArgumentValue?e.visitBodyArgumentValue(this):e.visitChildren(this)}},K9=class extends h{constructor(e,t){super(e,t)}functionReferenceArgument(){return this.getRuleContext(0,nx)}get ruleIndex(){return l.RULE_functionReferenceArgumentMember}enterRule(e){e.enterFunctionReferenceArgumentMember&&e.enterFunctionReferenceArgumentMember(this)}exitRule(e){e.exitFunctionReferenceArgumentMember&&e.exitFunctionReferenceArgumentMember(this)}accept(e){return e.visitFunctionReferenceArgumentMember?e.visitFunctionReferenceArgumentMember(this):e.visitChildren(this)}},nx=class extends h{constructor(e,t){super(e,t)}functionReferenceArgumentValue(){return this.getRuleContext(0,sx)}get ruleIndex(){return l.RULE_functionReferenceArgument}enterRule(e){e.enterFunctionReferenceArgument&&e.enterFunctionReferenceArgument(this)}exitRule(e){e.exitFunctionReferenceArgument&&e.exitFunctionReferenceArgument(this)}accept(e){return e.visitFunctionReferenceArgument?e.visitFunctionReferenceArgument(this):e.visitChildren(this)}},sx=class extends h{constructor(e,t){super(e,t)}functionReferenceExpression(){return this.getRuleContext(0,ox)}get ruleIndex(){return l.RULE_functionReferenceArgumentValue}enterRule(e){e.enterFunctionReferenceArgumentValue&&e.enterFunctionReferenceArgumentValue(this)}exitRule(e){e.exitFunctionReferenceArgumentValue&&e.exitFunctionReferenceArgumentValue(this)}accept(e){return e.visitFunctionReferenceArgumentValue?e.visitFunctionReferenceArgumentValue(this):e.visitChildren(this)}},ox=class extends h{constructor(e,t){super(e,t)}functionReferenceMember(){return this.getRuleContext(0,ax)}get ruleIndex(){return l.RULE_functionReferenceExpression}enterRule(e){e.enterFunctionReferenceExpression&&e.enterFunctionReferenceExpression(this)}exitRule(e){e.exitFunctionReferenceExpression&&e.exitFunctionReferenceExpression(this)}accept(e){return e.visitFunctionReferenceExpression?e.visitFunctionReferenceExpression(this):e.visitChildren(this)}},ax=class extends h{constructor(e,t){super(e,t)}functionReference(){return this.getRuleContext(0,lx)}get ruleIndex(){return l.RULE_functionReferenceMember}enterRule(e){e.enterFunctionReferenceMember&&e.enterFunctionReferenceMember(this)}exitRule(e){e.exitFunctionReferenceMember&&e.exitFunctionReferenceMember(this)}accept(e){return e.visitFunctionReferenceMember?e.visitFunctionReferenceMember(this):e.visitChildren(this)}},lx=class extends h{constructor(e,t){super(e,t)}referenceTyping(){return this.getRuleContext(0,ex)}get ruleIndex(){return l.RULE_functionReference}enterRule(e){e.enterFunctionReference&&e.enterFunctionReference(this)}exitRule(e){e.exitFunctionReference&&e.exitFunctionReference(this)}accept(e){return e.visitFunctionReference?e.visitFunctionReference(this):e.visitChildren(this)}},ha=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_featureChainMember}enterRule(e){e.enterFeatureChainMember&&e.enterFeatureChainMember(this)}exitRule(e){e.exitFeatureChainMember&&e.exitFeatureChainMember(this)}accept(e){return e.visitFeatureChainMember?e.visitFeatureChainMember(this):e.visitChildren(this)}},J9=class extends h{constructor(e,t){super(e,t)}featureChain(){return this.getRuleContext(0,W1)}ownedFeatureChain(){return this.getRuleContext(0,T3)}get ruleIndex(){return l.RULE_ownedFeatureChainMember}enterRule(e){e.enterOwnedFeatureChainMember&&e.enterOwnedFeatureChainMember(this)}exitRule(e){e.exitOwnedFeatureChainMember&&e.exitOwnedFeatureChainMember(this)}accept(e){return e.visitOwnedFeatureChainMember?e.visitOwnedFeatureChainMember(this):e.visitChildren(this)}},Q9=class extends h{constructor(e,t){super(e,t)}featureReference(){return this.getRuleContext(0,ux)}get ruleIndex(){return l.RULE_featureReferenceMember}enterRule(e){e.enterFeatureReferenceMember&&e.enterFeatureReferenceMember(this)}exitRule(e){e.exitFeatureReferenceMember&&e.exitFeatureReferenceMember(this)}accept(e){return e.visitFeatureReferenceMember?e.visitFeatureReferenceMember(this):e.visitChildren(this)}},ux=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_featureReference}enterRule(e){e.enterFeatureReference&&e.enterFeatureReference(this)}exitRule(e){e.exitFeatureReference&&e.exitFeatureReference(this)}accept(e){return e.visitFeatureReference?e.visitFeatureReference(this):e.visitChildren(this)}},cx=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_elementReferenceMember}enterRule(e){e.enterElementReferenceMember&&e.enterElementReferenceMember(this)}exitRule(e){e.exitElementReferenceMember&&e.exitElementReferenceMember(this)}accept(e){return e.visitElementReferenceMember?e.visitElementReferenceMember(this):e.visitChildren(this)}},Y9=class extends h{constructor(e,t){super(e,t)}constructorResult(){return this.getRuleContext(0,dx)}get ruleIndex(){return l.RULE_constructorResultMember}enterRule(e){e.enterConstructorResultMember&&e.enterConstructorResultMember(this)}exitRule(e){e.exitConstructorResultMember&&e.exitConstructorResultMember(this)}accept(e){return e.visitConstructorResultMember?e.visitConstructorResultMember(this):e.visitChildren(this)}},dx=class extends h{constructor(e,t){super(e,t)}argumentList(){return this.getRuleContext(0,Js)}get ruleIndex(){return l.RULE_constructorResult}enterRule(e){e.enterConstructorResult&&e.enterConstructorResult(this)}exitRule(e){e.exitConstructorResult&&e.exitConstructorResult(this)}accept(e){return e.visitConstructorResult?e.visitConstructorResult(this):e.visitChildren(this)}},X9=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_instantiatedTypeMember}enterRule(e){e.enterInstantiatedTypeMember&&e.enterInstantiatedTypeMember(this)}exitRule(e){e.exitInstantiatedTypeMember&&e.exitInstantiatedTypeMember(this)}accept(e){return e.visitInstantiatedTypeMember?e.visitInstantiatedTypeMember(this):e.visitChildren(this)}},eC=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_instantiatedTypeReference}enterRule(e){e.enterInstantiatedTypeReference&&e.enterInstantiatedTypeReference(this)}exitRule(e){e.exitInstantiatedTypeReference&&e.exitInstantiatedTypeReference(this)}accept(e){return e.visitInstantiatedTypeReference?e.visitInstantiatedTypeReference(this):e.visitChildren(this)}},tC=class extends h{constructor(e,t){super(e,t)}namedArgument(){return this.getRuleContext(0,pu)}get ruleIndex(){return l.RULE_namedArgumentMember}enterRule(e){e.enterNamedArgumentMember&&e.enterNamedArgumentMember(this)}exitRule(e){e.exitNamedArgumentMember&&e.exitNamedArgumentMember(this)}accept(e){return e.visitNamedArgumentMember?e.visitNamedArgumentMember(this):e.visitChildren(this)}},rC=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_parameterRedefinition}enterRule(e){e.enterParameterRedefinition&&e.enterParameterRedefinition(this)}exitRule(e){e.exitParameterRedefinition&&e.exitParameterRedefinition(this)}accept(e){return e.visitParameterRedefinition?e.visitParameterRedefinition(this):e.visitChildren(this)}},iC=class extends h{constructor(e,t){super(e,t)}expressionBody(){return this.getRuleContext(0,hx)}get ruleIndex(){return l.RULE_expressionBodyMember}enterRule(e){e.enterExpressionBodyMember&&e.enterExpressionBodyMember(this)}exitRule(e){e.exitExpressionBodyMember&&e.exitExpressionBodyMember(this)}accept(e){return e.visitExpressionBodyMember?e.visitExpressionBodyMember(this):e.visitChildren(this)}},hx=class extends h{constructor(e,t){super(e,t)}LBRACE(){return this.getToken(l.LBRACE,0)}functionBodyPart(){return this.getRuleContext(0,vu)}RBRACE(){return this.getToken(l.RBRACE,0)}get ruleIndex(){return l.RULE_expressionBody}enterRule(e){e.enterExpressionBody&&e.enterExpressionBody(this)}exitRule(e){e.exitExpressionBody&&e.exitExpressionBody(this)}accept(e){return e.visitExpressionBody?e.visitExpressionBody(this):e.visitChildren(this)}},nC=class extends h{constructor(e,t){super(e,t)}TRUE(){return this.getToken(l.TRUE,0)}FALSE(){return this.getToken(l.FALSE,0)}get ruleIndex(){return l.RULE_booleanValue}enterRule(e){e.enterBooleanValue&&e.enterBooleanValue(this)}exitRule(e){e.exitBooleanValue&&e.exitBooleanValue(this)}accept(e){return e.visitBooleanValue?e.visitBooleanValue(this):e.visitChildren(this)}},sC=class extends h{constructor(e,t){super(e,t)}DOT(){return this.getToken(l.DOT,0)}INTEGER(e){return e===void 0?this.getTokens(l.INTEGER):this.getToken(l.INTEGER,e)}REAL(){return this.getToken(l.REAL,0)}get ruleIndex(){return l.RULE_realValue}enterRule(e){e.enterRealValue&&e.enterRealValue(this)}exitRule(e){e.exitRealValue&&e.exitRealValue(this)}accept(e){return e.visitRealValue?e.visitRealValue(this):e.visitChildren(this)}},px=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}INTERACTION(){return this.getToken(l.INTERACTION,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_interaction}enterRule(e){e.enterInteraction&&e.enterInteraction(this)}exitRule(e){e.exitInteraction&&e.exitInteraction(this)}accept(e){return e.visitInteraction?e.visitInteraction(this):e.visitChildren(this)}},fx=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}FLOW(){return this.getToken(l.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,pa)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_flow}enterRule(e){e.enterFlow&&e.enterFlow(this)}exitRule(e){e.exitFlow&&e.exitFlow(this)}accept(e){return e.visitFlow?e.visitFlow(this):e.visitChildren(this)}},mx=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}SUCCESSION(){return this.getToken(l.SUCCESSION,0)}FLOW(){return this.getToken(l.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,pa)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_successionFlow}enterRule(e){e.enterSuccessionFlow&&e.enterSuccessionFlow(this)}exitRule(e){e.exitSuccessionFlow&&e.exitSuccessionFlow(this)}accept(e){return e.visitSuccessionFlow?e.visitSuccessionFlow(this):e.visitChildren(this)}},pa=class extends h{constructor(e,t){super(e,t)}featureDeclaration(){return this.getRuleContext(0,Er)}valuePart(){return this.getRuleContext(0,St)}OF(){return this.getToken(l.OF,0)}payloadFeatureMember(){return this.getRuleContext(0,gx)}FROM(){return this.getToken(l.FROM,0)}flowEndMember(e){return e===void 0?this.getRuleContexts(X1):this.getRuleContext(e,X1)}TO(){return this.getToken(l.TO,0)}ALL(){return this.getToken(l.ALL,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}flowPayloadFeatureMember(){return this.getRuleContext(0,Dd)}get ruleIndex(){return l.RULE_flowDeclaration}enterRule(e){e.enterFlowDeclaration&&e.enterFlowDeclaration(this)}exitRule(e){e.exitFlowDeclaration&&e.exitFlowDeclaration(this)}accept(e){return e.visitFlowDeclaration?e.visitFlowDeclaration(this):e.visitChildren(this)}},gx=class extends h{constructor(e,t){super(e,t)}payloadFeature(){return this.getRuleContext(0,Cu)}get ruleIndex(){return l.RULE_payloadFeatureMember}enterRule(e){e.enterPayloadFeatureMember&&e.enterPayloadFeatureMember(this)}exitRule(e){e.exitPayloadFeatureMember&&e.exitPayloadFeatureMember(this)}accept(e){return e.visitPayloadFeatureMember?e.visitPayloadFeatureMember(this):e.visitChildren(this)}},Cu=class extends h{constructor(e,t){super(e,t)}valuePart(){return this.getRuleContext(0,St)}identification(){return this.getRuleContext(0,ot)}payloadFeatureSpecializationPart(){return this.getRuleContext(0,Y1)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}ownedMultiplicity(){return this.getRuleContext(0,os)}get ruleIndex(){return l.RULE_payloadFeature}enterRule(e){e.enterPayloadFeature&&e.enterPayloadFeature(this)}exitRule(e){e.exitPayloadFeature&&e.exitPayloadFeature(this)}accept(e){return e.visitPayloadFeature?e.visitPayloadFeature(this):e.visitChildren(this)}},Y1=class extends h{constructor(e,t){super(e,t)}featureSpecialization(e){return e===void 0?this.getRuleContexts(on):this.getRuleContext(e,on)}multiplicityPart(){return this.getRuleContext(0,Z1)}get ruleIndex(){return l.RULE_payloadFeatureSpecializationPart}enterRule(e){e.enterPayloadFeatureSpecializationPart&&e.enterPayloadFeatureSpecializationPart(this)}exitRule(e){e.exitPayloadFeatureSpecializationPart&&e.exitPayloadFeatureSpecializationPart(this)}accept(e){return e.visitPayloadFeatureSpecializationPart?e.visitPayloadFeatureSpecializationPart(this):e.visitChildren(this)}},X1=class extends h{constructor(e,t){super(e,t)}flowEnd(){return this.getRuleContext(0,xx)}get ruleIndex(){return l.RULE_flowEndMember}enterRule(e){e.enterFlowEndMember&&e.enterFlowEndMember(this)}exitRule(e){e.exitFlowEndMember&&e.exitFlowEndMember(this)}accept(e){return e.visitFlowEndMember?e.visitFlowEndMember(this):e.visitChildren(this)}},xx=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_flowEnd}enterRule(e){e.enterFlowEnd&&e.enterFlowEnd(this)}exitRule(e){e.exitFlowEnd&&e.exitFlowEnd(this)}accept(e){return e.visitFlowEnd?e.visitFlowEnd(this):e.visitChildren(this)}},oC=class extends h{constructor(e,t){super(e,t)}flowFeature(){return this.getRuleContext(0,bx)}get ruleIndex(){return l.RULE_flowFeatureMember}enterRule(e){e.enterFlowFeatureMember&&e.enterFlowFeatureMember(this)}exitRule(e){e.exitFlowFeatureMember&&e.exitFlowFeatureMember(this)}accept(e){return e.visitFlowFeatureMember?e.visitFlowFeatureMember(this):e.visitChildren(this)}},bx=class extends h{constructor(e,t){super(e,t)}flowFeatureRedefinition(){return this.getRuleContext(0,yx)}get ruleIndex(){return l.RULE_flowFeature}enterRule(e){e.enterFlowFeature&&e.enterFlowFeature(this)}exitRule(e){e.exitFlowFeature&&e.exitFlowFeature(this)}accept(e){return e.visitFlowFeature?e.visitFlowFeature(this):e.visitChildren(this)}},yx=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_flowFeatureRedefinition}enterRule(e){e.enterFlowFeatureRedefinition&&e.enterFlowFeatureRedefinition(this)}exitRule(e){e.exitFlowFeatureRedefinition&&e.exitFlowFeatureRedefinition(this)}accept(e){return e.visitFlowFeatureRedefinition?e.visitFlowFeatureRedefinition(this):e.visitChildren(this)}},St=class extends h{constructor(e,t){super(e,t)}featureValue(){return this.getRuleContext(0,vx)}get ruleIndex(){return l.RULE_valuePart}enterRule(e){e.enterValuePart&&e.enterValuePart(this)}exitRule(e){e.exitValuePart&&e.exitValuePart(this)}accept(e){return e.visitValuePart?e.visitValuePart(this):e.visitChildren(this)}},vx=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}EQ(){return this.getToken(l.EQ,0)}COLON_EQ(){return this.getToken(l.COLON_EQ,0)}DEFAULT(){return this.getToken(l.DEFAULT,0)}get ruleIndex(){return l.RULE_featureValue}enterRule(e){e.enterFeatureValue&&e.enterFeatureValue(this)}exitRule(e){e.exitFeatureValue&&e.exitFeatureValue(this)}accept(e){return e.visitFeatureValue?e.visitFeatureValue(this):e.visitChildren(this)}},Rx=class extends h{constructor(e,t){super(e,t)}multiplicitySubset(){return this.getRuleContext(0,Cx)}multiplicityRange(){return this.getRuleContext(0,Ex)}get ruleIndex(){return l.RULE_multiplicity}enterRule(e){e.enterMultiplicity&&e.enterMultiplicity(this)}exitRule(e){e.exitMultiplicity&&e.exitMultiplicity(this)}accept(e){return e.visitMultiplicity?e.visitMultiplicity(this):e.visitChildren(this)}},Cx=class extends h{constructor(e,t){super(e,t)}MULTIPLICITY(){return this.getToken(l.MULTIPLICITY,0)}subsets(){return this.getRuleContext(0,G1)}typeBody(){return this.getRuleContext(0,Ut)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_multiplicitySubset}enterRule(e){e.enterMultiplicitySubset&&e.enterMultiplicitySubset(this)}exitRule(e){e.exitMultiplicitySubset&&e.exitMultiplicitySubset(this)}accept(e){return e.visitMultiplicitySubset?e.visitMultiplicitySubset(this):e.visitChildren(this)}},Ex=class extends h{constructor(e,t){super(e,t)}MULTIPLICITY(){return this.getToken(l.MULTIPLICITY,0)}multiplicityBounds(){return this.getRuleContext(0,ed)}typeBody(){return this.getRuleContext(0,Ut)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_multiplicityRange}enterRule(e){e.enterMultiplicityRange&&e.enterMultiplicityRange(this)}exitRule(e){e.exitMultiplicityRange&&e.exitMultiplicityRange(this)}accept(e){return e.visitMultiplicityRange?e.visitMultiplicityRange(this):e.visitChildren(this)}},os=class extends h{constructor(e,t){super(e,t)}ownedMultiplicityRange(){return this.getRuleContext(0,Sx)}get ruleIndex(){return l.RULE_ownedMultiplicity}enterRule(e){e.enterOwnedMultiplicity&&e.enterOwnedMultiplicity(this)}exitRule(e){e.exitOwnedMultiplicity&&e.exitOwnedMultiplicity(this)}accept(e){return e.visitOwnedMultiplicity?e.visitOwnedMultiplicity(this):e.visitChildren(this)}},Sx=class extends h{constructor(e,t){super(e,t)}multiplicityBounds(){return this.getRuleContext(0,ed)}get ruleIndex(){return l.RULE_ownedMultiplicityRange}enterRule(e){e.enterOwnedMultiplicityRange&&e.enterOwnedMultiplicityRange(this)}exitRule(e){e.exitOwnedMultiplicityRange&&e.exitOwnedMultiplicityRange(this)}accept(e){return e.visitOwnedMultiplicityRange?e.visitOwnedMultiplicityRange(this):e.visitChildren(this)}},ed=class extends h{constructor(e,t){super(e,t)}LBRACK(){return this.getToken(l.LBRACK,0)}multiplicityExpressionMember(e){return e===void 0?this.getRuleContexts(td):this.getRuleContext(e,td)}RBRACK(){return this.getToken(l.RBRACK,0)}DOT_DOT(){return this.getToken(l.DOT_DOT,0)}get ruleIndex(){return l.RULE_multiplicityBounds}enterRule(e){e.enterMultiplicityBounds&&e.enterMultiplicityBounds(this)}exitRule(e){e.exitMultiplicityBounds&&e.exitMultiplicityBounds(this)}accept(e){return e.visitMultiplicityBounds?e.visitMultiplicityBounds(this):e.visitChildren(this)}},td=class extends h{constructor(e,t){super(e,t)}literalExpression(){return this.getRuleContext(0,w1)}featureReferenceExpression(){return this.getRuleContext(0,Lg)}get ruleIndex(){return l.RULE_multiplicityExpressionMember}enterRule(e){e.enterMultiplicityExpressionMember&&e.enterMultiplicityExpressionMember(this)}exitRule(e){e.exitMultiplicityExpressionMember&&e.exitMultiplicityExpressionMember(this)}accept(e){return e.visitMultiplicityExpressionMember?e.visitMultiplicityExpressionMember(this):e.visitChildren(this)}},Px=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}METACLASS(){return this.getToken(l.METACLASS,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_metaclass}enterRule(e){e.enterMetaclass&&e.enterMetaclass(this)}exitRule(e){e.exitMetaclass&&e.exitMetaclass(this)}accept(e){return e.visitMetaclass?e.visitMetaclass(this):e.visitChildren(this)}},rd=class extends h{constructor(e,t){super(e,t)}HASH(){return this.getToken(l.HASH,0)}prefixMetadataFeature(){return this.getRuleContext(0,id)}prefixMetadataUsage(){return this.getRuleContext(0,ah)}get ruleIndex(){return l.RULE_prefixMetadataAnnotation}enterRule(e){e.enterPrefixMetadataAnnotation&&e.enterPrefixMetadataAnnotation(this)}exitRule(e){e.exitPrefixMetadataAnnotation&&e.exitPrefixMetadataAnnotation(this)}accept(e){return e.visitPrefixMetadataAnnotation?e.visitPrefixMetadataAnnotation(this):e.visitChildren(this)}},tr=class extends h{constructor(e,t){super(e,t)}HASH(){return this.getToken(l.HASH,0)}prefixMetadataFeature(){return this.getRuleContext(0,id)}prefixMetadataUsage(){return this.getRuleContext(0,ah)}get ruleIndex(){return l.RULE_prefixMetadataMember}enterRule(e){e.enterPrefixMetadataMember&&e.enterPrefixMetadataMember(this)}exitRule(e){e.exitPrefixMetadataMember&&e.exitPrefixMetadataMember(this)}accept(e){return e.visitPrefixMetadataMember?e.visitPrefixMetadataMember(this):e.visitChildren(this)}},id=class extends h{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}get ruleIndex(){return l.RULE_prefixMetadataFeature}enterRule(e){e.enterPrefixMetadataFeature&&e.enterPrefixMetadataFeature(this)}exitRule(e){e.exitPrefixMetadataFeature&&e.exitPrefixMetadataFeature(this)}accept(e){return e.visitPrefixMetadataFeature?e.visitPrefixMetadataFeature(this):e.visitChildren(this)}},Lx=class extends h{constructor(e,t){super(e,t)}metadataFeatureDeclaration(){return this.getRuleContext(0,Tx)}metadataBody(){return this.getRuleContext(0,fa)}AT_SIGN(){return this.getToken(l.AT_SIGN,0)}METADATA(){return this.getToken(l.METADATA,0)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}ABOUT(){return this.getToken(l.ABOUT,0)}annotation(e){return e===void 0?this.getRuleContexts(is):this.getRuleContext(e,is)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_metadataFeature}enterRule(e){e.enterMetadataFeature&&e.enterMetadataFeature(this)}exitRule(e){e.exitMetadataFeature&&e.exitMetadataFeature(this)}accept(e){return e.visitMetadataFeature?e.visitMetadataFeature(this):e.visitChildren(this)}},Tx=class extends h{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}COLON(){return this.getToken(l.COLON,0)}TYPED(){return this.getToken(l.TYPED,0)}BY(){return this.getToken(l.BY,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_metadataFeatureDeclaration}enterRule(e){e.enterMetadataFeatureDeclaration&&e.enterMetadataFeatureDeclaration(this)}exitRule(e){e.exitMetadataFeatureDeclaration&&e.exitMetadataFeatureDeclaration(this)}accept(e){return e.visitMetadataFeatureDeclaration?e.visitMetadataFeatureDeclaration(this):e.visitChildren(this)}},fa=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}metadataBodyElement(e){return e===void 0?this.getRuleContexts(nd):this.getRuleContext(e,nd)}definitionMember(e){return e===void 0?this.getRuleContexts(xa):this.getRuleContext(e,xa)}metadataBodyUsageMember(e){return e===void 0?this.getRuleContexts(lh):this.getRuleContext(e,lh)}aliasMember(e){return e===void 0?this.getRuleContexts(sn):this.getRuleContext(e,sn)}importRule(e){return e===void 0?this.getRuleContexts(wi):this.getRuleContext(e,wi)}get ruleIndex(){return l.RULE_metadataBody}enterRule(e){e.enterMetadataBody&&e.enterMetadataBody(this)}exitRule(e){e.exitMetadataBody&&e.exitMetadataBody(this)}accept(e){return e.visitMetadataBody?e.visitMetadataBody(this):e.visitChildren(this)}},nd=class extends h{constructor(e,t){super(e,t)}nonFeatureMember(){return this.getRuleContext(0,mu)}metadataBodyFeatureMember(){return this.getRuleContext(0,wx)}aliasMember(){return this.getRuleContext(0,sn)}importRule(){return this.getRuleContext(0,wi)}get ruleIndex(){return l.RULE_metadataBodyElement}enterRule(e){e.enterMetadataBodyElement&&e.enterMetadataBodyElement(this)}exitRule(e){e.exitMetadataBodyElement&&e.exitMetadataBodyElement(this)}accept(e){return e.visitMetadataBodyElement?e.visitMetadataBodyElement(this):e.visitChildren(this)}},wx=class extends h{constructor(e,t){super(e,t)}metadataBodyFeature(){return this.getRuleContext(0,kx)}get ruleIndex(){return l.RULE_metadataBodyFeatureMember}enterRule(e){e.enterMetadataBodyFeatureMember&&e.enterMetadataBodyFeatureMember(this)}exitRule(e){e.exitMetadataBodyFeatureMember&&e.exitMetadataBodyFeatureMember(this)}accept(e){return e.visitMetadataBodyFeatureMember?e.visitMetadataBodyFeatureMember(this):e.visitChildren(this)}},kx=class extends h{constructor(e,t){super(e,t)}ownedRedefinition(){return this.getRuleContext(0,eo)}metadataBody(){return this.getRuleContext(0,fa)}FEATURE(){return this.getToken(l.FEATURE,0)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}valuePart(){return this.getRuleContext(0,St)}COLON_GT_GT(){return this.getToken(l.COLON_GT_GT,0)}REDEFINES(){return this.getToken(l.REDEFINES,0)}get ruleIndex(){return l.RULE_metadataBodyFeature}enterRule(e){e.enterMetadataBodyFeature&&e.enterMetadataBodyFeature(this)}exitRule(e){e.exitMetadataBodyFeature&&e.exitMetadataBodyFeature(this)}accept(e){return e.visitMetadataBodyFeature?e.visitMetadataBodyFeature(this):e.visitChildren(this)}},sd=class extends h{constructor(e,t){super(e,t)}packageDeclaration(){return this.getRuleContext(0,ad)}packageBody(){return this.getRuleContext(0,ld)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}get ruleIndex(){return l.RULE_package}enterRule(e){e.enterPackage&&e.enterPackage(this)}exitRule(e){e.exitPackage&&e.exitPackage(this)}accept(e){return e.visitPackage?e.visitPackage(this):e.visitChildren(this)}},od=class extends h{constructor(e,t){super(e,t)}LIBRARY(){return this.getToken(l.LIBRARY,0)}packageDeclaration(){return this.getRuleContext(0,ad)}packageBody(){return this.getRuleContext(0,ld)}STANDARD(){return this.getToken(l.STANDARD,0)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}get ruleIndex(){return l.RULE_libraryPackage}enterRule(e){e.enterLibraryPackage&&e.enterLibraryPackage(this)}exitRule(e){e.exitLibraryPackage&&e.exitLibraryPackage(this)}accept(e){return e.visitLibraryPackage?e.visitLibraryPackage(this):e.visitChildren(this)}},ad=class extends h{constructor(e,t){super(e,t)}PACKAGE(){return this.getToken(l.PACKAGE,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_packageDeclaration}enterRule(e){e.enterPackageDeclaration&&e.enterPackageDeclaration(this)}exitRule(e){e.exitPackageDeclaration&&e.exitPackageDeclaration(this)}accept(e){return e.visitPackageDeclaration?e.visitPackageDeclaration(this):e.visitChildren(this)}},ld=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}packageBodyElement(e){return e===void 0?this.getRuleContexts(ma):this.getRuleContext(e,ma)}get ruleIndex(){return l.RULE_packageBody}enterRule(e){e.enterPackageBody&&e.enterPackageBody(this)}exitRule(e){e.exitPackageBody&&e.exitPackageBody(this)}accept(e){return e.visitPackageBody?e.visitPackageBody(this):e.visitChildren(this)}},Eu=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}FILTER(){return this.getToken(l.FILTER,0)}ownedExpression(){return this.getRuleContext(0,Me)}SEMI(){return this.getToken(l.SEMI,0)}get ruleIndex(){return l.RULE_elementFilterMember}enterRule(e){e.enterElementFilterMember&&e.enterElementFilterMember(this)}exitRule(e){e.exitElementFilterMember&&e.exitElementFilterMember(this)}accept(e){return e.visitElementFilterMember?e.visitElementFilterMember(this):e.visitChildren(this)}},Ax=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}TO(){return this.getToken(l.TO,0)}FROM(){return this.getToken(l.FROM,0)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_dependencyDeclaration}enterRule(e){e.enterDependencyDeclaration&&e.enterDependencyDeclaration(this)}exitRule(e){e.exitDependencyDeclaration&&e.exitDependencyDeclaration(this)}accept(e){return e.visitDependencyDeclaration?e.visitDependencyDeclaration(this):e.visitChildren(this)}},ud=class extends h{constructor(e,t){super(e,t)}annotatingElement(){return this.getRuleContext(0,aa)}get ruleIndex(){return l.RULE_annotatingMember}enterRule(e){e.enterAnnotatingMember&&e.enterAnnotatingMember(this)}exitRule(e){e.exitAnnotatingMember&&e.exitAnnotatingMember(this)}accept(e){return e.visitAnnotatingMember?e.visitAnnotatingMember(this):e.visitChildren(this)}},ma=class extends h{constructor(e,t){super(e,t)}packageMember(){return this.getRuleContext(0,Mx)}elementFilterMember(){return this.getRuleContext(0,Eu)}aliasMember(){return this.getRuleContext(0,sn)}importRule(){return this.getRuleContext(0,wi)}get ruleIndex(){return l.RULE_packageBodyElement}enterRule(e){e.enterPackageBodyElement&&e.enterPackageBodyElement(this)}exitRule(e){e.exitPackageBodyElement&&e.exitPackageBodyElement(this)}accept(e){return e.visitPackageBodyElement?e.visitPackageBodyElement(this):e.visitChildren(this)}},Mx=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}definitionElement(){return this.getRuleContext(0,Su)}usageElement(){return this.getRuleContext(0,cd)}get ruleIndex(){return l.RULE_packageMember}enterRule(e){e.enterPackageMember&&e.enterPackageMember(this)}exitRule(e){e.exitPackageMember&&e.exitPackageMember(this)}accept(e){return e.visitPackageMember?e.visitPackageMember(this):e.visitChildren(this)}},Su=class extends h{constructor(e,t){super(e,t)}package(){return this.getRuleContext(0,sd)}libraryPackage(){return this.getRuleContext(0,od)}annotatingElement(){return this.getRuleContext(0,aa)}dependency(){return this.getRuleContext(0,A1)}attributeDefinition(){return this.getRuleContext(0,Fx)}enumerationDefinition(){return this.getRuleContext(0,Hx)}occurrenceDefinition(){return this.getRuleContext(0,jx)}individualDefinition(){return this.getRuleContext(0,qx)}itemDefinition(){return this.getRuleContext(0,Gx)}partDefinition(){return this.getRuleContext(0,Wx)}connectionDefinition(){return this.getRuleContext(0,Xx)}flowDefinition(){return this.getRuleContext(0,mb)}interfaceDefinition(){return this.getRuleContext(0,rb)}portDefinition(){return this.getRuleContext(0,Kx)}actionDefinition(){return this.getRuleContext(0,vb)}calculationDefinition(){return this.getRuleContext(0,S4)}stateDefinition(){return this.getRuleContext(0,r4)}constraintDefinition(){return this.getRuleContext(0,T4)}requirementDefinition(){return this.getRuleContext(0,A4)}concernDefinition(){return this.getRuleContext(0,Z4)}caseDefinition(){return this.getRuleContext(0,W4)}analysisCaseDefinition(){return this.getRuleContext(0,Y4)}verificationCaseDefinition(){return this.getRuleContext(0,ey)}useCaseDefinition(){return this.getRuleContext(0,ny)}viewDefinition(){return this.getRuleContext(0,ay)}viewpointDefinition(){return this.getRuleContext(0,fy)}renderingDefinition(){return this.getRuleContext(0,gy)}metadataDefinition(){return this.getRuleContext(0,xy)}allocationDefinition(){return this.getRuleContext(0,pb)}extendedDefinition(){return this.getRuleContext(0,vy)}get ruleIndex(){return l.RULE_definitionElement}enterRule(e){e.enterDefinitionElement&&e.enterDefinitionElement(this)}exitRule(e){e.exitDefinitionElement&&e.exitDefinitionElement(this)}accept(e){return e.visitDefinitionElement?e.visitDefinitionElement(this):e.visitChildren(this)}},cd=class extends h{constructor(e,t){super(e,t)}nonOccurrenceUsageElement(){return this.getRuleContext(0,wu)}occurrenceUsageElement(){return this.getRuleContext(0,ku)}get ruleIndex(){return l.RULE_usageElement}enterRule(e){e.enterUsageElement&&e.enterUsageElement(this)}exitRule(e){e.exitUsageElement&&e.exitUsageElement(this)}accept(e){return e.visitUsageElement?e.visitUsageElement(this):e.visitChildren(this)}},ga=class extends h{constructor(e,t){super(e,t)}ABSTRACT(){return this.getToken(l.ABSTRACT,0)}VARIATION(){return this.getToken(l.VARIATION,0)}get ruleIndex(){return l.RULE_basicDefinitionPrefix}enterRule(e){e.enterBasicDefinitionPrefix&&e.enterBasicDefinitionPrefix(this)}exitRule(e){e.exitBasicDefinitionPrefix&&e.exitBasicDefinitionPrefix(this)}accept(e){return e.visitBasicDefinitionPrefix?e.visitBasicDefinitionPrefix(this):e.visitChildren(this)}},$r=class extends h{constructor(e,t){super(e,t)}prefixMetadataMember(){return this.getRuleContext(0,tr)}get ruleIndex(){return l.RULE_definitionExtensionKeyword}enterRule(e){e.enterDefinitionExtensionKeyword&&e.enterDefinitionExtensionKeyword(this)}exitRule(e){e.exitDefinitionExtensionKeyword&&e.exitDefinitionExtensionKeyword(this)}accept(e){return e.visitDefinitionExtensionKeyword?e.visitDefinitionExtensionKeyword(this):e.visitChildren(this)}},dd=class extends h{constructor(e,t){super(e,t)}basicDefinitionPrefix(){return this.getRuleContext(0,ga)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_definitionPrefix}enterRule(e){e.enterDefinitionPrefix&&e.enterDefinitionPrefix(this)}exitRule(e){e.exitDefinitionPrefix&&e.exitDefinitionPrefix(this)}accept(e){return e.visitDefinitionPrefix?e.visitDefinitionPrefix(this):e.visitChildren(this)}},Fr=class extends h{constructor(e,t){super(e,t)}definitionDeclaration(){return this.getRuleContext(0,rr)}definitionBody(){return this.getRuleContext(0,ro)}get ruleIndex(){return l.RULE_definition}enterRule(e){e.enterDefinition&&e.enterDefinition(this)}exitRule(e){e.exitDefinition&&e.exitDefinition(this)}accept(e){return e.visitDefinition?e.visitDefinition(this):e.visitChildren(this)}},rr=class extends h{constructor(e,t){super(e,t)}identification(){return this.getRuleContext(0,ot)}subclassificationPart(){return this.getRuleContext(0,$x)}get ruleIndex(){return l.RULE_definitionDeclaration}enterRule(e){e.enterDefinitionDeclaration&&e.enterDefinitionDeclaration(this)}exitRule(e){e.exitDefinitionDeclaration&&e.exitDefinitionDeclaration(this)}accept(e){return e.visitDefinitionDeclaration?e.visitDefinitionDeclaration(this):e.visitChildren(this)}},ro=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}definitionBodyItem(e){return e===void 0?this.getRuleContexts(io):this.getRuleContext(e,io)}get ruleIndex(){return l.RULE_definitionBody}enterRule(e){e.enterDefinitionBody&&e.enterDefinitionBody(this)}exitRule(e){e.exitDefinitionBody&&e.exitDefinitionBody(this)}accept(e){return e.visitDefinitionBody?e.visitDefinitionBody(this):e.visitChildren(this)}},io=class extends h{constructor(e,t){super(e,t)}importRule(){return this.getRuleContext(0,wi)}memberPrefix(){return this.getRuleContext(0,_e)}definitionBodyItemContent(){return this.getRuleContext(0,_x)}occurrenceUsageElement(){return this.getRuleContext(0,ku)}sourceSuccessionMember(){return this.getRuleContext(0,so)}get ruleIndex(){return l.RULE_definitionBodyItem}enterRule(e){e.enterDefinitionBodyItem&&e.enterDefinitionBodyItem(this)}exitRule(e){e.exitDefinitionBodyItem&&e.exitDefinitionBodyItem(this)}accept(e){return e.visitDefinitionBodyItem?e.visitDefinitionBodyItem(this):e.visitChildren(this)}},_x=class extends h{constructor(e,t){super(e,t)}ALIAS(){return this.getToken(l.ALIAS,0)}FOR(){return this.getToken(l.FOR,0)}qualifiedName(){return this.getRuleContext(0,Y)}relationshipBody(){return this.getRuleContext(0,Xt)}LT(){return this.getToken(l.LT,0)}name(e){return e===void 0?this.getRuleContexts(Or):this.getRuleContext(e,Or)}GT(){return this.getToken(l.GT,0)}VARIANT(){return this.getToken(l.VARIANT,0)}variantUsageElement(){return this.getRuleContext(0,md)}definitionElement(){return this.getRuleContext(0,Su)}nonOccurrenceUsageElement(){return this.getRuleContext(0,wu)}get ruleIndex(){return l.RULE_definitionBodyItemContent}enterRule(e){e.enterDefinitionBodyItemContent&&e.enterDefinitionBodyItemContent(this)}exitRule(e){e.exitDefinitionBodyItemContent&&e.exitDefinitionBodyItemContent(this)}accept(e){return e.visitDefinitionBodyItemContent?e.visitDefinitionBodyItemContent(this):e.visitChildren(this)}},xa=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}definitionElement(){return this.getRuleContext(0,Su)}get ruleIndex(){return l.RULE_definitionMember}enterRule(e){e.enterDefinitionMember&&e.enterDefinitionMember(this)}exitRule(e){e.exitDefinitionMember&&e.exitDefinitionMember(this)}accept(e){return e.visitDefinitionMember?e.visitDefinitionMember(this):e.visitChildren(this)}},hd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}VARIANT(){return this.getToken(l.VARIANT,0)}variantUsageElement(){return this.getRuleContext(0,md)}get ruleIndex(){return l.RULE_variantUsageMember}enterRule(e){e.enterVariantUsageMember&&e.enterVariantUsageMember(this)}exitRule(e){e.exitVariantUsageMember&&e.exitVariantUsageMember(this)}accept(e){return e.visitVariantUsageMember?e.visitVariantUsageMember(this):e.visitChildren(this)}},Nx=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}nonOccurrenceUsageElement(){return this.getRuleContext(0,wu)}get ruleIndex(){return l.RULE_nonOccurrenceUsageMember}enterRule(e){e.enterNonOccurrenceUsageMember&&e.enterNonOccurrenceUsageMember(this)}exitRule(e){e.exitNonOccurrenceUsageMember&&e.exitNonOccurrenceUsageMember(this)}accept(e){return e.visitNonOccurrenceUsageMember?e.visitNonOccurrenceUsageMember(this):e.visitChildren(this)}},aC=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}occurrenceUsageElement(){return this.getRuleContext(0,ku)}get ruleIndex(){return l.RULE_occurrenceUsageMember}enterRule(e){e.enterOccurrenceUsageMember&&e.enterOccurrenceUsageMember(this)}exitRule(e){e.exitOccurrenceUsageMember&&e.exitOccurrenceUsageMember(this)}accept(e){return e.visitOccurrenceUsageMember?e.visitOccurrenceUsageMember(this):e.visitChildren(this)}},Ix=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}structureUsageElement(){return this.getRuleContext(0,Au)}get ruleIndex(){return l.RULE_structureUsageMember}enterRule(e){e.enterStructureUsageMember&&e.enterStructureUsageMember(this)}exitRule(e){e.exitStructureUsageMember&&e.exitStructureUsageMember(this)}accept(e){return e.visitStructureUsageMember?e.visitStructureUsageMember(this):e.visitChildren(this)}},pd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}behaviorUsageElement(){return this.getRuleContext(0,va)}get ruleIndex(){return l.RULE_behaviorUsageMember}enterRule(e){e.enterBehaviorUsageMember&&e.enterBehaviorUsageMember(this)}exitRule(e){e.exitBehaviorUsageMember&&e.exitBehaviorUsageMember(this)}accept(e){return e.visitBehaviorUsageMember?e.visitBehaviorUsageMember(this):e.visitChildren(this)}},ba=class extends h{constructor(e,t){super(e,t)}featureDirection(){return this.getRuleContext(0,q1)}DERIVED(){return this.getToken(l.DERIVED,0)}CONSTANT(){return this.getToken(l.CONSTANT,0)}ABSTRACT(){return this.getToken(l.ABSTRACT,0)}VARIATION(){return this.getToken(l.VARIATION,0)}get ruleIndex(){return l.RULE_refPrefix}enterRule(e){e.enterRefPrefix&&e.enterRefPrefix(this)}exitRule(e){e.exitRefPrefix&&e.exitRefPrefix(this)}accept(e){return e.visitRefPrefix?e.visitRefPrefix(this):e.visitChildren(this)}},no=class extends h{constructor(e,t){super(e,t)}refPrefix(){return this.getRuleContext(0,ba)}REF(){return this.getToken(l.REF,0)}get ruleIndex(){return l.RULE_basicUsagePrefix}enterRule(e){e.enterBasicUsagePrefix&&e.enterBasicUsagePrefix(this)}exitRule(e){e.exitBasicUsagePrefix&&e.exitBasicUsagePrefix(this)}accept(e){return e.visitBasicUsagePrefix?e.visitBasicUsagePrefix(this):e.visitChildren(this)}},Pu=class extends h{constructor(e,t){super(e,t)}END(){return this.getToken(l.END,0)}ownedCrossFeatureMember(){return this.getRuleContext(0,j1)}get ruleIndex(){return l.RULE_endUsagePrefix}enterRule(e){e.enterEndUsagePrefix&&e.enterEndUsagePrefix(this)}exitRule(e){e.exitEndUsagePrefix&&e.exitEndUsagePrefix(this)}accept(e){return e.visitEndUsagePrefix?e.visitEndUsagePrefix(this):e.visitChildren(this)}},Ke=class extends h{constructor(e,t){super(e,t)}prefixMetadataMember(){return this.getRuleContext(0,tr)}get ruleIndex(){return l.RULE_usageExtensionKeyword}enterRule(e){e.enterUsageExtensionKeyword&&e.enterUsageExtensionKeyword(this)}exitRule(e){e.exitUsageExtensionKeyword&&e.exitUsageExtensionKeyword(this)}accept(e){return e.visitUsageExtensionKeyword?e.visitUsageExtensionKeyword(this):e.visitChildren(this)}},fd=class extends h{constructor(e,t){super(e,t)}endUsagePrefix(){return this.getRuleContext(0,Pu)}basicUsagePrefix(){return this.getRuleContext(0,no)}get ruleIndex(){return l.RULE_unextendedUsagePrefix}enterRule(e){e.enterUnextendedUsagePrefix&&e.enterUnextendedUsagePrefix(this)}exitRule(e){e.exitUnextendedUsagePrefix&&e.exitUnextendedUsagePrefix(this)}accept(e){return e.visitUnextendedUsagePrefix?e.visitUnextendedUsagePrefix(this):e.visitChildren(this)}},ya=class extends h{constructor(e,t){super(e,t)}unextendedUsagePrefix(){return this.getRuleContext(0,fd)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_usagePrefix}enterRule(e){e.enterUsagePrefix&&e.enterUsagePrefix(this)}exitRule(e){e.exitUsagePrefix&&e.exitUsagePrefix(this)}accept(e){return e.visitUsagePrefix?e.visitUsagePrefix(this):e.visitChildren(this)}},Ht=class extends h{constructor(e,t){super(e,t)}usageCompletion(){return this.getRuleContext(0,Lu)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_usage}enterRule(e){e.enterUsage&&e.enterUsage(this)}exitRule(e){e.exitUsage&&e.exitUsage(this)}accept(e){return e.visitUsage?e.visitUsage(this):e.visitChildren(this)}},Xe=class extends h{constructor(e,t){super(e,t)}identification(){return this.getRuleContext(0,ot)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}get ruleIndex(){return l.RULE_usageDeclaration}enterRule(e){e.enterUsageDeclaration&&e.enterUsageDeclaration(this)}exitRule(e){e.exitUsageDeclaration&&e.exitUsageDeclaration(this)}accept(e){return e.visitUsageDeclaration?e.visitUsageDeclaration(this):e.visitChildren(this)}},Lu=class extends h{constructor(e,t){super(e,t)}usageBody(){return this.getRuleContext(0,ki)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_usageCompletion}enterRule(e){e.enterUsageCompletion&&e.enterUsageCompletion(this)}exitRule(e){e.exitUsageCompletion&&e.exitUsageCompletion(this)}accept(e){return e.visitUsageCompletion?e.visitUsageCompletion(this):e.visitChildren(this)}},ki=class extends h{constructor(e,t){super(e,t)}definitionBody(){return this.getRuleContext(0,ro)}get ruleIndex(){return l.RULE_usageBody}enterRule(e){e.enterUsageBody&&e.enterUsageBody(this)}exitRule(e){e.exitUsageBody&&e.exitUsageBody(this)}accept(e){return e.visitUsageBody?e.visitUsageBody(this):e.visitChildren(this)}},Ux=class extends h{constructor(e,t){super(e,t)}refPrefix(){return this.getRuleContext(0,ba)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_defaultReferenceUsage}enterRule(e){e.enterDefaultReferenceUsage&&e.enterDefaultReferenceUsage(this)}exitRule(e){e.exitDefaultReferenceUsage&&e.exitDefaultReferenceUsage(this)}accept(e){return e.visitDefaultReferenceUsage?e.visitDefaultReferenceUsage(this):e.visitChildren(this)}},Tu=class extends h{constructor(e,t){super(e,t)}REF(){return this.getToken(l.REF,0)}usage(){return this.getRuleContext(0,Ht)}endUsagePrefix(){return this.getRuleContext(0,Pu)}refPrefix(){return this.getRuleContext(0,ba)}get ruleIndex(){return l.RULE_referenceUsage}enterRule(e){e.enterReferenceUsage&&e.enterReferenceUsage(this)}exitRule(e){e.exitReferenceUsage&&e.exitReferenceUsage(this)}accept(e){return e.visitReferenceUsage?e.visitReferenceUsage(this):e.visitChildren(this)}},Ox=class extends h{constructor(e,t){super(e,t)}endUsagePrefix(){return this.getRuleContext(0,Pu)}featureDeclaration(){return this.getRuleContext(0,Er)}usageCompletion(){return this.getRuleContext(0,Lu)}get ruleIndex(){return l.RULE_endFeatureUsage}enterRule(e){e.enterEndFeatureUsage&&e.enterEndFeatureUsage(this)}exitRule(e){e.exitEndFeatureUsage&&e.exitEndFeatureUsage(this)}accept(e){return e.visitEndFeatureUsage?e.visitEndFeatureUsage(this):e.visitChildren(this)}},Dx=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}usageBody(){return this.getRuleContext(0,ki)}featureSpecialization(e){return e===void 0?this.getRuleContexts(on):this.getRuleContext(e,on)}get ruleIndex(){return l.RULE_variantReference}enterRule(e){e.enterVariantReference&&e.enterVariantReference(this)}exitRule(e){e.exitVariantReference&&e.exitVariantReference(this)}accept(e){return e.visitVariantReference?e.visitVariantReference(this):e.visitChildren(this)}},wu=class extends h{constructor(e,t){super(e,t)}referenceUsage(){return this.getRuleContext(0,Tu)}endFeatureUsage(){return this.getRuleContext(0,Ox)}attributeUsage(){return this.getRuleContext(0,Mu)}enumerationUsage(){return this.getRuleContext(0,xd)}bindingConnectorAsUsage(){return this.getRuleContext(0,Nu)}successionAsUsage(){return this.getRuleContext(0,Iu)}extendedUsage(){return this.getRuleContext(0,Ry)}defaultReferenceUsage(){return this.getRuleContext(0,Ux)}get ruleIndex(){return l.RULE_nonOccurrenceUsageElement}enterRule(e){e.enterNonOccurrenceUsageElement&&e.enterNonOccurrenceUsageElement(this)}exitRule(e){e.exitNonOccurrenceUsageElement&&e.exitNonOccurrenceUsageElement(this)}accept(e){return e.visitNonOccurrenceUsageElement?e.visitNonOccurrenceUsageElement(this):e.visitChildren(this)}},ku=class extends h{constructor(e,t){super(e,t)}structureUsageElement(){return this.getRuleContext(0,Au)}behaviorUsageElement(){return this.getRuleContext(0,va)}get ruleIndex(){return l.RULE_occurrenceUsageElement}enterRule(e){e.enterOccurrenceUsageElement&&e.enterOccurrenceUsageElement(this)}exitRule(e){e.exitOccurrenceUsageElement&&e.exitOccurrenceUsageElement(this)}accept(e){return e.visitOccurrenceUsageElement?e.visitOccurrenceUsageElement(this):e.visitChildren(this)}},Au=class extends h{constructor(e,t){super(e,t)}occurrenceUsage(){return this.getRuleContext(0,yd)}individualUsage(){return this.getRuleContext(0,vd)}portionUsage(){return this.getRuleContext(0,Rd)}eventOccurrenceUsage(){return this.getRuleContext(0,Cd)}itemUsage(){return this.getRuleContext(0,Sd)}partUsage(){return this.getRuleContext(0,Pd)}viewUsage(){return this.getRuleContext(0,nh)}renderingUsage(){return this.getRuleContext(0,oh)}portUsage(){return this.getRuleContext(0,Ld)}connectionUsage(){return this.getRuleContext(0,Td)}interfaceUsage(){return this.getRuleContext(0,Md)}allocationUsage(){return this.getRuleContext(0,_d)}message(){return this.getRuleContext(0,Nd)}flowUsage(){return this.getRuleContext(0,Ud)}successionFlowUsage(){return this.getRuleContext(0,Od)}get ruleIndex(){return l.RULE_structureUsageElement}enterRule(e){e.enterStructureUsageElement&&e.enterStructureUsageElement(this)}exitRule(e){e.exitStructureUsageElement&&e.exitStructureUsageElement(this)}accept(e){return e.visitStructureUsageElement?e.visitStructureUsageElement(this):e.visitChildren(this)}},va=class extends h{constructor(e,t){super(e,t)}actionUsage(){return this.getRuleContext(0,Pb)}calculationUsage(){return this.getRuleContext(0,P4)}stateUsage(){return this.getRuleContext(0,h4)}constraintUsage(){return this.getRuleContext(0,w4)}requirementUsage(){return this.getRuleContext(0,H4)}concernUsage(){return this.getRuleContext(0,G4)}caseUsage(){return this.getRuleContext(0,K4)}analysisCaseUsage(){return this.getRuleContext(0,X4)}verificationCaseUsage(){return this.getRuleContext(0,ty)}useCaseUsage(){return this.getRuleContext(0,sy)}viewpointUsage(){return this.getRuleContext(0,my)}performActionUsage(){return this.getRuleContext(0,Lb)}exhibitStateUsage(){return this.getRuleContext(0,p4)}includeUseCaseUsage(){return this.getRuleContext(0,oy)}assertConstraintUsage(){return this.getRuleContext(0,k4)}satisfyRequirementUsage(){return this.getRuleContext(0,z4)}get ruleIndex(){return l.RULE_behaviorUsageElement}enterRule(e){e.enterBehaviorUsageElement&&e.enterBehaviorUsageElement(this)}exitRule(e){e.exitBehaviorUsageElement&&e.exitBehaviorUsageElement(this)}accept(e){return e.visitBehaviorUsageElement?e.visitBehaviorUsageElement(this):e.visitChildren(this)}},md=class extends h{constructor(e,t){super(e,t)}variantReference(){return this.getRuleContext(0,Dx)}referenceUsage(){return this.getRuleContext(0,Tu)}attributeUsage(){return this.getRuleContext(0,Mu)}bindingConnectorAsUsage(){return this.getRuleContext(0,Nu)}successionAsUsage(){return this.getRuleContext(0,Iu)}occurrenceUsage(){return this.getRuleContext(0,yd)}individualUsage(){return this.getRuleContext(0,vd)}portionUsage(){return this.getRuleContext(0,Rd)}eventOccurrenceUsage(){return this.getRuleContext(0,Cd)}itemUsage(){return this.getRuleContext(0,Sd)}partUsage(){return this.getRuleContext(0,Pd)}viewUsage(){return this.getRuleContext(0,nh)}renderingUsage(){return this.getRuleContext(0,oh)}portUsage(){return this.getRuleContext(0,Ld)}connectionUsage(){return this.getRuleContext(0,Td)}interfaceUsage(){return this.getRuleContext(0,Md)}allocationUsage(){return this.getRuleContext(0,_d)}message(){return this.getRuleContext(0,Nd)}flowUsage(){return this.getRuleContext(0,Ud)}successionFlowUsage(){return this.getRuleContext(0,Od)}behaviorUsageElement(){return this.getRuleContext(0,va)}get ruleIndex(){return l.RULE_variantUsageElement}enterRule(e){e.enterVariantUsageElement&&e.enterVariantUsageElement(this)}exitRule(e){e.exitVariantUsageElement&&e.exitVariantUsageElement(this)}accept(e){return e.visitVariantUsageElement?e.visitVariantUsageElement(this):e.visitChildren(this)}},$x=class extends h{constructor(e,t){super(e,t)}ownedSubclassification(e){return e===void 0?this.getRuleContexts(ca):this.getRuleContext(e,ca)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SPECIALIZES(){return this.getToken(l.SPECIALIZES,0)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_subclassificationPart}enterRule(e){e.enterSubclassificationPart&&e.enterSubclassificationPart(this)}exitRule(e){e.exitSubclassificationPart&&e.exitSubclassificationPart(this)}accept(e){return e.visitSubclassificationPart?e.visitSubclassificationPart(this):e.visitChildren(this)}},Fx=class extends h{constructor(e,t){super(e,t)}definitionPrefix(){return this.getRuleContext(0,dd)}ATTRIBUTE(){return this.getToken(l.ATTRIBUTE,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_attributeDefinition}enterRule(e){e.enterAttributeDefinition&&e.enterAttributeDefinition(this)}exitRule(e){e.exitAttributeDefinition&&e.exitAttributeDefinition(this)}accept(e){return e.visitAttributeDefinition?e.visitAttributeDefinition(this):e.visitChildren(this)}},Mu=class extends h{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,ya)}ATTRIBUTE(){return this.getToken(l.ATTRIBUTE,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_attributeUsage}enterRule(e){e.enterAttributeUsage&&e.enterAttributeUsage(this)}exitRule(e){e.exitAttributeUsage&&e.exitAttributeUsage(this)}accept(e){return e.visitAttributeUsage?e.visitAttributeUsage(this):e.visitChildren(this)}},Hx=class extends h{constructor(e,t){super(e,t)}ENUM(){return this.getToken(l.ENUM,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}enumerationBody(){return this.getRuleContext(0,zx)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_enumerationDefinition}enterRule(e){e.enterEnumerationDefinition&&e.enterEnumerationDefinition(this)}exitRule(e){e.exitEnumerationDefinition&&e.exitEnumerationDefinition(this)}accept(e){return e.visitEnumerationDefinition?e.visitEnumerationDefinition(this):e.visitChildren(this)}},zx=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}annotatingMember(e){return e===void 0?this.getRuleContexts(ud):this.getRuleContext(e,ud)}enumerationUsageMember(e){return e===void 0?this.getRuleContexts(gd):this.getRuleContext(e,gd)}get ruleIndex(){return l.RULE_enumerationBody}enterRule(e){e.enterEnumerationBody&&e.enterEnumerationBody(this)}exitRule(e){e.exitEnumerationBody&&e.exitEnumerationBody(this)}accept(e){return e.visitEnumerationBody?e.visitEnumerationBody(this):e.visitChildren(this)}},gd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}enumeratedValue(){return this.getRuleContext(0,Bx)}get ruleIndex(){return l.RULE_enumerationUsageMember}enterRule(e){e.enterEnumerationUsageMember&&e.enterEnumerationUsageMember(this)}exitRule(e){e.exitEnumerationUsageMember&&e.exitEnumerationUsageMember(this)}accept(e){return e.visitEnumerationUsageMember?e.visitEnumerationUsageMember(this):e.visitChildren(this)}},Bx=class extends h{constructor(e,t){super(e,t)}usage(){return this.getRuleContext(0,Ht)}ENUM(){return this.getToken(l.ENUM,0)}get ruleIndex(){return l.RULE_enumeratedValue}enterRule(e){e.enterEnumeratedValue&&e.enterEnumeratedValue(this)}exitRule(e){e.exitEnumeratedValue&&e.exitEnumeratedValue(this)}accept(e){return e.visitEnumeratedValue?e.visitEnumeratedValue(this):e.visitChildren(this)}},xd=class extends h{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,ya)}ENUM(){return this.getToken(l.ENUM,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_enumerationUsage}enterRule(e){e.enterEnumerationUsage&&e.enterEnumerationUsage(this)}exitRule(e){e.exitEnumerationUsage&&e.exitEnumerationUsage(this)}accept(e){return e.visitEnumerationUsage?e.visitEnumerationUsage(this):e.visitChildren(this)}},Mt=class extends h{constructor(e,t){super(e,t)}basicDefinitionPrefix(){return this.getRuleContext(0,ga)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}emptyMultiplicityMember(){return this.getRuleContext(0,bd)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_occurrenceDefinitionPrefix}enterRule(e){e.enterOccurrenceDefinitionPrefix&&e.enterOccurrenceDefinitionPrefix(this)}exitRule(e){e.exitOccurrenceDefinitionPrefix&&e.exitOccurrenceDefinitionPrefix(this)}accept(e){return e.visitOccurrenceDefinitionPrefix?e.visitOccurrenceDefinitionPrefix(this):e.visitChildren(this)}},jx=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}OCCURRENCE(){return this.getToken(l.OCCURRENCE,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_occurrenceDefinition}enterRule(e){e.enterOccurrenceDefinition&&e.enterOccurrenceDefinition(this)}exitRule(e){e.exitOccurrenceDefinition&&e.exitOccurrenceDefinition(this)}accept(e){return e.visitOccurrenceDefinition?e.visitOccurrenceDefinition(this):e.visitChildren(this)}},qx=class extends h{constructor(e,t){super(e,t)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}emptyMultiplicityMember(){return this.getRuleContext(0,bd)}basicDefinitionPrefix(){return this.getRuleContext(0,ga)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_individualDefinition}enterRule(e){e.enterIndividualDefinition&&e.enterIndividualDefinition(this)}exitRule(e){e.exitIndividualDefinition&&e.exitIndividualDefinition(this)}accept(e){return e.visitIndividualDefinition?e.visitIndividualDefinition(this):e.visitChildren(this)}},bd=class extends h{constructor(e,t){super(e,t)}emptyMultiplicity_(){return this.getRuleContext(0,Py)}get ruleIndex(){return l.RULE_emptyMultiplicityMember}enterRule(e){e.enterEmptyMultiplicityMember&&e.enterEmptyMultiplicityMember(this)}exitRule(e){e.exitEmptyMultiplicityMember&&e.exitEmptyMultiplicityMember(this)}accept(e){return e.visitEmptyMultiplicityMember?e.visitEmptyMultiplicityMember(this):e.visitChildren(this)}},Fe=class extends h{constructor(e,t){super(e,t)}basicUsagePrefix(){return this.getRuleContext(0,no)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}portionKind(){return this.getRuleContext(0,_u)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_occurrenceUsagePrefix}enterRule(e){e.enterOccurrenceUsagePrefix&&e.enterOccurrenceUsagePrefix(this)}exitRule(e){e.exitOccurrenceUsagePrefix&&e.exitOccurrenceUsagePrefix(this)}accept(e){return e.visitOccurrenceUsagePrefix?e.visitOccurrenceUsagePrefix(this):e.visitChildren(this)}},yd=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}OCCURRENCE(){return this.getToken(l.OCCURRENCE,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_occurrenceUsage}enterRule(e){e.enterOccurrenceUsage&&e.enterOccurrenceUsage(this)}exitRule(e){e.exitOccurrenceUsage&&e.exitOccurrenceUsage(this)}accept(e){return e.visitOccurrenceUsage?e.visitOccurrenceUsage(this):e.visitChildren(this)}},vd=class extends h{constructor(e,t){super(e,t)}basicUsagePrefix(){return this.getRuleContext(0,no)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}usage(){return this.getRuleContext(0,Ht)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_individualUsage}enterRule(e){e.enterIndividualUsage&&e.enterIndividualUsage(this)}exitRule(e){e.exitIndividualUsage&&e.exitIndividualUsage(this)}accept(e){return e.visitIndividualUsage?e.visitIndividualUsage(this):e.visitChildren(this)}},Rd=class extends h{constructor(e,t){super(e,t)}basicUsagePrefix(){return this.getRuleContext(0,no)}portionKind(){return this.getRuleContext(0,_u)}usage(){return this.getRuleContext(0,Ht)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_portionUsage}enterRule(e){e.enterPortionUsage&&e.enterPortionUsage(this)}exitRule(e){e.exitPortionUsage&&e.exitPortionUsage(this)}accept(e){return e.visitPortionUsage?e.visitPortionUsage(this):e.visitChildren(this)}},_u=class extends h{constructor(e,t){super(e,t)}SNAPSHOT(){return this.getToken(l.SNAPSHOT,0)}TIMESLICE(){return this.getToken(l.TIMESLICE,0)}get ruleIndex(){return l.RULE_portionKind}enterRule(e){e.enterPortionKind&&e.enterPortionKind(this)}exitRule(e){e.exitPortionKind&&e.exitPortionKind(this)}accept(e){return e.visitPortionKind?e.visitPortionKind(this):e.visitChildren(this)}},Cd=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}EVENT(){return this.getToken(l.EVENT,0)}usageCompletion(){return this.getRuleContext(0,Lu)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}OCCURRENCE(){return this.getToken(l.OCCURRENCE,0)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_eventOccurrenceUsage}enterRule(e){e.enterEventOccurrenceUsage&&e.enterEventOccurrenceUsage(this)}exitRule(e){e.exitEventOccurrenceUsage&&e.exitEventOccurrenceUsage(this)}accept(e){return e.visitEventOccurrenceUsage?e.visitEventOccurrenceUsage(this):e.visitChildren(this)}},so=class extends h{constructor(e,t){super(e,t)}THEN(){return this.getToken(l.THEN,0)}sourceSuccession(){return this.getRuleContext(0,Vx)}get ruleIndex(){return l.RULE_sourceSuccessionMember}enterRule(e){e.enterSourceSuccessionMember&&e.enterSourceSuccessionMember(this)}exitRule(e){e.exitSourceSuccessionMember&&e.exitSourceSuccessionMember(this)}accept(e){return e.visitSourceSuccessionMember?e.visitSourceSuccessionMember(this):e.visitChildren(this)}},Vx=class extends h{constructor(e,t){super(e,t)}sourceEndMember(){return this.getRuleContext(0,Ed)}get ruleIndex(){return l.RULE_sourceSuccession}enterRule(e){e.enterSourceSuccession&&e.enterSourceSuccession(this)}exitRule(e){e.exitSourceSuccession&&e.exitSourceSuccession(this)}accept(e){return e.visitSourceSuccession?e.visitSourceSuccession(this):e.visitChildren(this)}},Ed=class extends h{constructor(e,t){super(e,t)}sourceEnd(){return this.getRuleContext(0,Zx)}get ruleIndex(){return l.RULE_sourceEndMember}enterRule(e){e.enterSourceEndMember&&e.enterSourceEndMember(this)}exitRule(e){e.exitSourceEndMember&&e.exitSourceEndMember(this)}accept(e){return e.visitSourceEndMember?e.visitSourceEndMember(this):e.visitChildren(this)}},Zx=class extends h{constructor(e,t){super(e,t)}ownedMultiplicity(){return this.getRuleContext(0,os)}get ruleIndex(){return l.RULE_sourceEnd}enterRule(e){e.enterSourceEnd&&e.enterSourceEnd(this)}exitRule(e){e.exitSourceEnd&&e.exitSourceEnd(this)}accept(e){return e.visitSourceEnd?e.visitSourceEnd(this):e.visitChildren(this)}},Gx=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}ITEM(){return this.getToken(l.ITEM,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_itemDefinition}enterRule(e){e.enterItemDefinition&&e.enterItemDefinition(this)}exitRule(e){e.exitItemDefinition&&e.exitItemDefinition(this)}accept(e){return e.visitItemDefinition?e.visitItemDefinition(this):e.visitChildren(this)}},Sd=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}ITEM(){return this.getToken(l.ITEM,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_itemUsage}enterRule(e){e.enterItemUsage&&e.enterItemUsage(this)}exitRule(e){e.exitItemUsage&&e.exitItemUsage(this)}accept(e){return e.visitItemUsage?e.visitItemUsage(this):e.visitChildren(this)}},Wx=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}PART(){return this.getToken(l.PART,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_partDefinition}enterRule(e){e.enterPartDefinition&&e.enterPartDefinition(this)}exitRule(e){e.exitPartDefinition&&e.exitPartDefinition(this)}accept(e){return e.visitPartDefinition?e.visitPartDefinition(this):e.visitChildren(this)}},Pd=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}PART(){return this.getToken(l.PART,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_partUsage}enterRule(e){e.enterPartUsage&&e.enterPartUsage(this)}exitRule(e){e.exitPartUsage&&e.exitPartUsage(this)}accept(e){return e.visitPartUsage?e.visitPartUsage(this):e.visitChildren(this)}},Kx=class extends h{constructor(e,t){super(e,t)}definitionPrefix(){return this.getRuleContext(0,dd)}PORT(){return this.getToken(l.PORT,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}conjugatedPortDefinitionMember(){return this.getRuleContext(0,Jx)}get ruleIndex(){return l.RULE_portDefinition}enterRule(e){e.enterPortDefinition&&e.enterPortDefinition(this)}exitRule(e){e.exitPortDefinition&&e.exitPortDefinition(this)}accept(e){return e.visitPortDefinition?e.visitPortDefinition(this):e.visitChildren(this)}},Jx=class extends h{constructor(e,t){super(e,t)}conjugatedPortDefinition(){return this.getRuleContext(0,Qx)}get ruleIndex(){return l.RULE_conjugatedPortDefinitionMember}enterRule(e){e.enterConjugatedPortDefinitionMember&&e.enterConjugatedPortDefinitionMember(this)}exitRule(e){e.exitConjugatedPortDefinitionMember&&e.exitConjugatedPortDefinitionMember(this)}accept(e){return e.visitConjugatedPortDefinitionMember?e.visitConjugatedPortDefinitionMember(this):e.visitChildren(this)}},Qx=class extends h{constructor(e,t){super(e,t)}portConjugation(){return this.getRuleContext(0,ky)}get ruleIndex(){return l.RULE_conjugatedPortDefinition}enterRule(e){e.enterConjugatedPortDefinition&&e.enterConjugatedPortDefinition(this)}exitRule(e){e.exitConjugatedPortDefinition&&e.exitConjugatedPortDefinition(this)}accept(e){return e.visitConjugatedPortDefinition?e.visitConjugatedPortDefinition(this):e.visitChildren(this)}},Ld=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}PORT(){return this.getToken(l.PORT,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_portUsage}enterRule(e){e.enterPortUsage&&e.enterPortUsage(this)}exitRule(e){e.exitPortUsage&&e.exitPortUsage(this)}accept(e){return e.visitPortUsage?e.visitPortUsage(this):e.visitChildren(this)}},Yx=class extends h{constructor(e,t){super(e,t)}TILDE(){return this.getToken(l.TILDE,0)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_conjugatedPortTyping}enterRule(e){e.enterConjugatedPortTyping&&e.enterConjugatedPortTyping(this)}exitRule(e){e.exitConjugatedPortTyping&&e.exitConjugatedPortTyping(this)}accept(e){return e.visitConjugatedPortTyping?e.visitConjugatedPortTyping(this):e.visitChildren(this)}},Xx=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}CONNECTION(){return this.getToken(l.CONNECTION,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_connectionDefinition}enterRule(e){e.enterConnectionDefinition&&e.enterConnectionDefinition(this)}exitRule(e){e.exitConnectionDefinition&&e.exitConnectionDefinition(this)}accept(e){return e.visitConnectionDefinition?e.visitConnectionDefinition(this):e.visitChildren(this)}},Td=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}usageBody(){return this.getRuleContext(0,ki)}CONNECTION(){return this.getToken(l.CONNECTION,0)}CONNECT(){return this.getToken(l.CONNECT,0)}connectorPart(){return this.getRuleContext(0,wd)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_connectionUsage}enterRule(e){e.enterConnectionUsage&&e.enterConnectionUsage(this)}exitRule(e){e.exitConnectionUsage&&e.exitConnectionUsage(this)}accept(e){return e.visitConnectionUsage?e.visitConnectionUsage(this):e.visitChildren(this)}},wd=class extends h{constructor(e,t){super(e,t)}binaryConnectorPart(){return this.getRuleContext(0,eb)}naryConnectorPart(){return this.getRuleContext(0,tb)}get ruleIndex(){return l.RULE_connectorPart}enterRule(e){e.enterConnectorPart&&e.enterConnectorPart(this)}exitRule(e){e.exitConnectorPart&&e.exitConnectorPart(this)}accept(e){return e.visitConnectorPart?e.visitConnectorPart(this):e.visitChildren(this)}},eb=class extends h{constructor(e,t){super(e,t)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}TO(){return this.getToken(l.TO,0)}get ruleIndex(){return l.RULE_binaryConnectorPart}enterRule(e){e.enterBinaryConnectorPart&&e.enterBinaryConnectorPart(this)}exitRule(e){e.exitBinaryConnectorPart&&e.exitBinaryConnectorPart(this)}accept(e){return e.visitBinaryConnectorPart?e.visitBinaryConnectorPart(this):e.visitChildren(this)}},tb=class extends h{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(l.LPAREN,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}RPAREN(){return this.getToken(l.RPAREN,0)}get ruleIndex(){return l.RULE_naryConnectorPart}enterRule(e){e.enterNaryConnectorPart&&e.enterNaryConnectorPart(this)}exitRule(e){e.exitNaryConnectorPart&&e.exitNaryConnectorPart(this)}accept(e){return e.visitNaryConnectorPart?e.visitNaryConnectorPart(this):e.visitChildren(this)}},Nu=class extends h{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,ya)}BIND(){return this.getToken(l.BIND,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}EQ(){return this.getToken(l.EQ,0)}usageBody(){return this.getRuleContext(0,ki)}BINDING(){return this.getToken(l.BINDING,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_bindingConnectorAsUsage}enterRule(e){e.enterBindingConnectorAsUsage&&e.enterBindingConnectorAsUsage(this)}exitRule(e){e.exitBindingConnectorAsUsage&&e.exitBindingConnectorAsUsage(this)}accept(e){return e.visitBindingConnectorAsUsage?e.visitBindingConnectorAsUsage(this):e.visitChildren(this)}},Iu=class extends h{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,ya)}FIRST(){return this.getToken(l.FIRST,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}THEN(){return this.getToken(l.THEN,0)}usageBody(){return this.getRuleContext(0,ki)}SUCCESSION(){return this.getToken(l.SUCCESSION,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_successionAsUsage}enterRule(e){e.enterSuccessionAsUsage&&e.enterSuccessionAsUsage(this)}exitRule(e){e.exitSuccessionAsUsage&&e.exitSuccessionAsUsage(this)}accept(e){return e.visitSuccessionAsUsage?e.visitSuccessionAsUsage(this):e.visitChildren(this)}},rb=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}INTERFACE(){return this.getToken(l.INTERFACE,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}interfaceBody(){return this.getRuleContext(0,kd)}get ruleIndex(){return l.RULE_interfaceDefinition}enterRule(e){e.enterInterfaceDefinition&&e.enterInterfaceDefinition(this)}exitRule(e){e.exitInterfaceDefinition&&e.exitInterfaceDefinition(this)}accept(e){return e.visitInterfaceDefinition?e.visitInterfaceDefinition(this):e.visitChildren(this)}},kd=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}interfaceBodyItem(e){return e===void 0?this.getRuleContexts(Ad):this.getRuleContext(e,Ad)}get ruleIndex(){return l.RULE_interfaceBody}enterRule(e){e.enterInterfaceBody&&e.enterInterfaceBody(this)}exitRule(e){e.exitInterfaceBody&&e.exitInterfaceBody(this)}accept(e){return e.visitInterfaceBody?e.visitInterfaceBody(this):e.visitChildren(this)}},Ad=class extends h{constructor(e,t){super(e,t)}definitionMember(){return this.getRuleContext(0,xa)}variantUsageMember(){return this.getRuleContext(0,hd)}interfaceNonOccurrenceUsageMember(){return this.getRuleContext(0,ib)}interfaceOccurrenceUsageMember(){return this.getRuleContext(0,sb)}sourceSuccessionMember(){return this.getRuleContext(0,so)}aliasMember(){return this.getRuleContext(0,sn)}importRule(){return this.getRuleContext(0,wi)}get ruleIndex(){return l.RULE_interfaceBodyItem}enterRule(e){e.enterInterfaceBodyItem&&e.enterInterfaceBodyItem(this)}exitRule(e){e.exitInterfaceBodyItem&&e.exitInterfaceBodyItem(this)}accept(e){return e.visitInterfaceBodyItem?e.visitInterfaceBodyItem(this):e.visitChildren(this)}},ib=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}interfaceNonOccurrenceUsageElement(){return this.getRuleContext(0,nb)}get ruleIndex(){return l.RULE_interfaceNonOccurrenceUsageMember}enterRule(e){e.enterInterfaceNonOccurrenceUsageMember&&e.enterInterfaceNonOccurrenceUsageMember(this)}exitRule(e){e.exitInterfaceNonOccurrenceUsageMember&&e.exitInterfaceNonOccurrenceUsageMember(this)}accept(e){return e.visitInterfaceNonOccurrenceUsageMember?e.visitInterfaceNonOccurrenceUsageMember(this):e.visitChildren(this)}},nb=class extends h{constructor(e,t){super(e,t)}referenceUsage(){return this.getRuleContext(0,Tu)}attributeUsage(){return this.getRuleContext(0,Mu)}enumerationUsage(){return this.getRuleContext(0,xd)}bindingConnectorAsUsage(){return this.getRuleContext(0,Nu)}successionAsUsage(){return this.getRuleContext(0,Iu)}get ruleIndex(){return l.RULE_interfaceNonOccurrenceUsageElement}enterRule(e){e.enterInterfaceNonOccurrenceUsageElement&&e.enterInterfaceNonOccurrenceUsageElement(this)}exitRule(e){e.exitInterfaceNonOccurrenceUsageElement&&e.exitInterfaceNonOccurrenceUsageElement(this)}accept(e){return e.visitInterfaceNonOccurrenceUsageElement?e.visitInterfaceNonOccurrenceUsageElement(this):e.visitChildren(this)}},sb=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}interfaceOccurrenceUsageElement(){return this.getRuleContext(0,ob)}get ruleIndex(){return l.RULE_interfaceOccurrenceUsageMember}enterRule(e){e.enterInterfaceOccurrenceUsageMember&&e.enterInterfaceOccurrenceUsageMember(this)}exitRule(e){e.exitInterfaceOccurrenceUsageMember&&e.exitInterfaceOccurrenceUsageMember(this)}accept(e){return e.visitInterfaceOccurrenceUsageMember?e.visitInterfaceOccurrenceUsageMember(this):e.visitChildren(this)}},ob=class extends h{constructor(e,t){super(e,t)}defaultInterfaceEnd(){return this.getRuleContext(0,ab)}structureUsageElement(){return this.getRuleContext(0,Au)}behaviorUsageElement(){return this.getRuleContext(0,va)}get ruleIndex(){return l.RULE_interfaceOccurrenceUsageElement}enterRule(e){e.enterInterfaceOccurrenceUsageElement&&e.enterInterfaceOccurrenceUsageElement(this)}exitRule(e){e.exitInterfaceOccurrenceUsageElement&&e.exitInterfaceOccurrenceUsageElement(this)}accept(e){return e.visitInterfaceOccurrenceUsageElement?e.visitInterfaceOccurrenceUsageElement(this):e.visitChildren(this)}},ab=class extends h{constructor(e,t){super(e,t)}END(){return this.getToken(l.END,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_defaultInterfaceEnd}enterRule(e){e.enterDefaultInterfaceEnd&&e.enterDefaultInterfaceEnd(this)}exitRule(e){e.exitDefaultInterfaceEnd&&e.exitDefaultInterfaceEnd(this)}accept(e){return e.visitDefaultInterfaceEnd?e.visitDefaultInterfaceEnd(this):e.visitChildren(this)}},Md=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}INTERFACE(){return this.getToken(l.INTERFACE,0)}interfaceUsageDeclaration(){return this.getRuleContext(0,lb)}interfaceBody(){return this.getRuleContext(0,kd)}get ruleIndex(){return l.RULE_interfaceUsage}enterRule(e){e.enterInterfaceUsage&&e.enterInterfaceUsage(this)}exitRule(e){e.exitInterfaceUsage&&e.exitInterfaceUsage(this)}accept(e){return e.visitInterfaceUsage?e.visitInterfaceUsage(this):e.visitChildren(this)}},lb=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}CONNECT(){return this.getToken(l.CONNECT,0)}interfacePart(){return this.getRuleContext(0,ub)}get ruleIndex(){return l.RULE_interfaceUsageDeclaration}enterRule(e){e.enterInterfaceUsageDeclaration&&e.enterInterfaceUsageDeclaration(this)}exitRule(e){e.exitInterfaceUsageDeclaration&&e.exitInterfaceUsageDeclaration(this)}accept(e){return e.visitInterfaceUsageDeclaration?e.visitInterfaceUsageDeclaration(this):e.visitChildren(this)}},ub=class extends h{constructor(e,t){super(e,t)}binaryInterfacePart(){return this.getRuleContext(0,cb)}naryInterfacePart(){return this.getRuleContext(0,db)}get ruleIndex(){return l.RULE_interfacePart}enterRule(e){e.enterInterfacePart&&e.enterInterfacePart(this)}exitRule(e){e.exitInterfacePart&&e.exitInterfacePart(this)}accept(e){return e.visitInterfacePart?e.visitInterfacePart(this):e.visitChildren(this)}},cb=class extends h{constructor(e,t){super(e,t)}interfaceEndMember(e){return e===void 0?this.getRuleContexts(Ra):this.getRuleContext(e,Ra)}TO(){return this.getToken(l.TO,0)}get ruleIndex(){return l.RULE_binaryInterfacePart}enterRule(e){e.enterBinaryInterfacePart&&e.enterBinaryInterfacePart(this)}exitRule(e){e.exitBinaryInterfacePart&&e.exitBinaryInterfacePart(this)}accept(e){return e.visitBinaryInterfacePart?e.visitBinaryInterfacePart(this):e.visitChildren(this)}},db=class extends h{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(l.LPAREN,0)}interfaceEndMember(e){return e===void 0?this.getRuleContexts(Ra):this.getRuleContext(e,Ra)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}RPAREN(){return this.getToken(l.RPAREN,0)}get ruleIndex(){return l.RULE_naryInterfacePart}enterRule(e){e.enterNaryInterfacePart&&e.enterNaryInterfacePart(this)}exitRule(e){e.exitNaryInterfacePart&&e.exitNaryInterfacePart(this)}accept(e){return e.visitNaryInterfacePart?e.visitNaryInterfacePart(this):e.visitChildren(this)}},Ra=class extends h{constructor(e,t){super(e,t)}interfaceEnd(){return this.getRuleContext(0,hb)}get ruleIndex(){return l.RULE_interfaceEndMember}enterRule(e){e.enterInterfaceEndMember&&e.enterInterfaceEndMember(this)}exitRule(e){e.exitInterfaceEndMember&&e.exitInterfaceEndMember(this)}accept(e){return e.visitInterfaceEndMember?e.visitInterfaceEndMember(this):e.visitChildren(this)}},hb=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}ownedCrossMultiplicityMember(){return this.getRuleContext(0,J1)}name(){return this.getRuleContext(0,Or)}COLON_COLON_GT(){return this.getToken(l.COLON_COLON_GT,0)}REFERENCES(){return this.getToken(l.REFERENCES,0)}get ruleIndex(){return l.RULE_interfaceEnd}enterRule(e){e.enterInterfaceEnd&&e.enterInterfaceEnd(this)}exitRule(e){e.exitInterfaceEnd&&e.exitInterfaceEnd(this)}accept(e){return e.visitInterfaceEnd?e.visitInterfaceEnd(this):e.visitChildren(this)}},pb=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}ALLOCATION(){return this.getToken(l.ALLOCATION,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_allocationDefinition}enterRule(e){e.enterAllocationDefinition&&e.enterAllocationDefinition(this)}exitRule(e){e.exitAllocationDefinition&&e.exitAllocationDefinition(this)}accept(e){return e.visitAllocationDefinition?e.visitAllocationDefinition(this):e.visitChildren(this)}},_d=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}allocationUsageDeclaration(){return this.getRuleContext(0,fb)}usageBody(){return this.getRuleContext(0,ki)}get ruleIndex(){return l.RULE_allocationUsage}enterRule(e){e.enterAllocationUsage&&e.enterAllocationUsage(this)}exitRule(e){e.exitAllocationUsage&&e.exitAllocationUsage(this)}accept(e){return e.visitAllocationUsage?e.visitAllocationUsage(this):e.visitChildren(this)}},fb=class extends h{constructor(e,t){super(e,t)}ALLOCATION(){return this.getToken(l.ALLOCATION,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}ALLOCATE(){return this.getToken(l.ALLOCATE,0)}connectorPart(){return this.getRuleContext(0,wd)}get ruleIndex(){return l.RULE_allocationUsageDeclaration}enterRule(e){e.enterAllocationUsageDeclaration&&e.enterAllocationUsageDeclaration(this)}exitRule(e){e.exitAllocationUsageDeclaration&&e.exitAllocationUsageDeclaration(this)}accept(e){return e.visitAllocationUsageDeclaration?e.visitAllocationUsageDeclaration(this):e.visitChildren(this)}},mb=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}FLOW(){return this.getToken(l.FLOW,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_flowDefinition}enterRule(e){e.enterFlowDefinition&&e.enterFlowDefinition(this)}exitRule(e){e.exitFlowDefinition&&e.exitFlowDefinition(this)}accept(e){return e.visitFlowDefinition?e.visitFlowDefinition(this):e.visitChildren(this)}},Nd=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}MESSAGE(){return this.getToken(l.MESSAGE,0)}messageDeclaration(){return this.getRuleContext(0,gb)}definitionBody(){return this.getRuleContext(0,ro)}get ruleIndex(){return l.RULE_message}enterRule(e){e.enterMessage&&e.enterMessage(this)}exitRule(e){e.exitMessage&&e.exitMessage(this)}accept(e){return e.visitMessage?e.visitMessage(this):e.visitChildren(this)}},gb=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}OF(){return this.getToken(l.OF,0)}flowPayloadFeatureMember(){return this.getRuleContext(0,Dd)}FROM(){return this.getToken(l.FROM,0)}messageEventMember(e){return e===void 0?this.getRuleContexts(Id):this.getRuleContext(e,Id)}TO(){return this.getToken(l.TO,0)}get ruleIndex(){return l.RULE_messageDeclaration}enterRule(e){e.enterMessageDeclaration&&e.enterMessageDeclaration(this)}exitRule(e){e.exitMessageDeclaration&&e.exitMessageDeclaration(this)}accept(e){return e.visitMessageDeclaration?e.visitMessageDeclaration(this):e.visitChildren(this)}},Id=class extends h{constructor(e,t){super(e,t)}messageEvent(){return this.getRuleContext(0,xb)}get ruleIndex(){return l.RULE_messageEventMember}enterRule(e){e.enterMessageEventMember&&e.enterMessageEventMember(this)}exitRule(e){e.exitMessageEventMember&&e.exitMessageEventMember(this)}accept(e){return e.visitMessageEventMember?e.visitMessageEventMember(this):e.visitChildren(this)}},xb=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}get ruleIndex(){return l.RULE_messageEvent}enterRule(e){e.enterMessageEvent&&e.enterMessageEvent(this)}exitRule(e){e.exitMessageEvent&&e.exitMessageEvent(this)}accept(e){return e.visitMessageEvent?e.visitMessageEvent(this):e.visitChildren(this)}},Ud=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}FLOW(){return this.getToken(l.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,pa)}definitionBody(){return this.getRuleContext(0,ro)}get ruleIndex(){return l.RULE_flowUsage}enterRule(e){e.enterFlowUsage&&e.enterFlowUsage(this)}exitRule(e){e.exitFlowUsage&&e.exitFlowUsage(this)}accept(e){return e.visitFlowUsage?e.visitFlowUsage(this):e.visitChildren(this)}},Od=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}SUCCESSION(){return this.getToken(l.SUCCESSION,0)}FLOW(){return this.getToken(l.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,pa)}definitionBody(){return this.getRuleContext(0,ro)}get ruleIndex(){return l.RULE_successionFlowUsage}enterRule(e){e.enterSuccessionFlowUsage&&e.enterSuccessionFlowUsage(this)}exitRule(e){e.exitSuccessionFlowUsage&&e.exitSuccessionFlowUsage(this)}accept(e){return e.visitSuccessionFlowUsage?e.visitSuccessionFlowUsage(this):e.visitChildren(this)}},Dd=class extends h{constructor(e,t){super(e,t)}flowPayloadFeature(){return this.getRuleContext(0,bb)}get ruleIndex(){return l.RULE_flowPayloadFeatureMember}enterRule(e){e.enterFlowPayloadFeatureMember&&e.enterFlowPayloadFeatureMember(this)}exitRule(e){e.exitFlowPayloadFeatureMember&&e.exitFlowPayloadFeatureMember(this)}accept(e){return e.visitFlowPayloadFeatureMember?e.visitFlowPayloadFeatureMember(this):e.visitChildren(this)}},bb=class extends h{constructor(e,t){super(e,t)}payloadFeature(){return this.getRuleContext(0,Cu)}get ruleIndex(){return l.RULE_flowPayloadFeature}enterRule(e){e.enterFlowPayloadFeature&&e.enterFlowPayloadFeature(this)}exitRule(e){e.exitFlowPayloadFeature&&e.exitFlowPayloadFeature(this)}accept(e){return e.visitFlowPayloadFeature?e.visitFlowPayloadFeature(this):e.visitChildren(this)}},lC=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}featureChainPrefix(){return this.getRuleContext(0,yb)}get ruleIndex(){return l.RULE_flowEndSubsetting}enterRule(e){e.enterFlowEndSubsetting&&e.enterFlowEndSubsetting(this)}exitRule(e){e.exitFlowEndSubsetting&&e.exitFlowEndSubsetting(this)}accept(e){return e.visitFlowEndSubsetting?e.visitFlowEndSubsetting(this):e.visitChildren(this)}},yb=class extends h{constructor(e,t){super(e,t)}ownedFeatureChaining(e){return e===void 0?this.getRuleContexts(ss):this.getRuleContext(e,ss)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_featureChainPrefix}enterRule(e){e.enterFeatureChainPrefix&&e.enterFeatureChainPrefix(this)}exitRule(e){e.exitFeatureChainPrefix&&e.exitFeatureChainPrefix(this)}accept(e){return e.visitFeatureChainPrefix?e.visitFeatureChainPrefix(this):e.visitChildren(this)}},vb=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}ACTION(){return this.getToken(l.ACTION,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_actionDefinition}enterRule(e){e.enterActionDefinition&&e.enterActionDefinition(this)}exitRule(e){e.exitActionDefinition&&e.exitActionDefinition(this)}accept(e){return e.visitActionDefinition?e.visitActionDefinition(this):e.visitChildren(this)}},Bt=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}get ruleIndex(){return l.RULE_actionBody}enterRule(e){e.enterActionBody&&e.enterActionBody(this)}exitRule(e){e.exitActionBody&&e.exitActionBody(this)}accept(e){return e.visitActionBody?e.visitActionBody(this):e.visitChildren(this)}},fr=class extends h{constructor(e,t){super(e,t)}nonBehaviorBodyItem(){return this.getRuleContext(0,$d)}initialNodeMember(){return this.getRuleContext(0,Cb)}actionTargetSuccessionMember(e){return e===void 0?this.getRuleContexts(Fd):this.getRuleContext(e,Fd)}actionBehaviorMember(){return this.getRuleContext(0,Rb)}sourceSuccessionMember(){return this.getRuleContext(0,so)}guardedSuccessionMember(){return this.getRuleContext(0,Sb)}get ruleIndex(){return l.RULE_actionBodyItem}enterRule(e){e.enterActionBodyItem&&e.enterActionBodyItem(this)}exitRule(e){e.exitActionBodyItem&&e.exitActionBodyItem(this)}accept(e){return e.visitActionBodyItem?e.visitActionBodyItem(this):e.visitChildren(this)}},$d=class extends h{constructor(e,t){super(e,t)}importRule(){return this.getRuleContext(0,wi)}aliasMember(){return this.getRuleContext(0,sn)}definitionMember(){return this.getRuleContext(0,xa)}variantUsageMember(){return this.getRuleContext(0,hd)}nonOccurrenceUsageMember(){return this.getRuleContext(0,Nx)}structureUsageMember(){return this.getRuleContext(0,Ix)}sourceSuccessionMember(){return this.getRuleContext(0,so)}get ruleIndex(){return l.RULE_nonBehaviorBodyItem}enterRule(e){e.enterNonBehaviorBodyItem&&e.enterNonBehaviorBodyItem(this)}exitRule(e){e.exitNonBehaviorBodyItem&&e.exitNonBehaviorBodyItem(this)}accept(e){return e.visitNonBehaviorBodyItem?e.visitNonBehaviorBodyItem(this):e.visitChildren(this)}},Rb=class extends h{constructor(e,t){super(e,t)}behaviorUsageMember(){return this.getRuleContext(0,pd)}actionNodeMember(){return this.getRuleContext(0,Eb)}get ruleIndex(){return l.RULE_actionBehaviorMember}enterRule(e){e.enterActionBehaviorMember&&e.enterActionBehaviorMember(this)}exitRule(e){e.exitActionBehaviorMember&&e.exitActionBehaviorMember(this)}accept(e){return e.visitActionBehaviorMember?e.visitActionBehaviorMember(this):e.visitChildren(this)}},Cb=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}FIRST(){return this.getToken(l.FIRST,0)}qualifiedName(){return this.getRuleContext(0,Y)}relationshipBody(){return this.getRuleContext(0,Xt)}get ruleIndex(){return l.RULE_initialNodeMember}enterRule(e){e.enterInitialNodeMember&&e.enterInitialNodeMember(this)}exitRule(e){e.exitInitialNodeMember&&e.exitInitialNodeMember(this)}accept(e){return e.visitInitialNodeMember?e.visitInitialNodeMember(this):e.visitChildren(this)}},Eb=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}actionNode(){return this.getRuleContext(0,Tb)}get ruleIndex(){return l.RULE_actionNodeMember}enterRule(e){e.enterActionNodeMember&&e.enterActionNodeMember(this)}exitRule(e){e.exitActionNodeMember&&e.exitActionNodeMember(this)}accept(e){return e.visitActionNodeMember?e.visitActionNodeMember(this):e.visitChildren(this)}},Fd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}actionTargetSuccession(){return this.getRuleContext(0,Yb)}get ruleIndex(){return l.RULE_actionTargetSuccessionMember}enterRule(e){e.enterActionTargetSuccessionMember&&e.enterActionTargetSuccessionMember(this)}exitRule(e){e.exitActionTargetSuccessionMember&&e.exitActionTargetSuccessionMember(this)}accept(e){return e.visitActionTargetSuccessionMember?e.visitActionTargetSuccessionMember(this):e.visitChildren(this)}},Sb=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}guardedSuccession(){return this.getRuleContext(0,t4)}get ruleIndex(){return l.RULE_guardedSuccessionMember}enterRule(e){e.enterGuardedSuccessionMember&&e.enterGuardedSuccessionMember(this)}exitRule(e){e.exitGuardedSuccessionMember&&e.exitGuardedSuccessionMember(this)}accept(e){return e.visitGuardedSuccessionMember?e.visitGuardedSuccessionMember(this):e.visitChildren(this)}},Pb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}ACTION(){return this.getToken(l.ACTION,0)}actionUsageDeclaration(){return this.getRuleContext(0,Ca)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_actionUsage}enterRule(e){e.enterActionUsage&&e.enterActionUsage(this)}exitRule(e){e.exitActionUsage&&e.exitActionUsage(this)}accept(e){return e.visitActionUsage?e.visitActionUsage(this):e.visitChildren(this)}},Ca=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_actionUsageDeclaration}enterRule(e){e.enterActionUsageDeclaration&&e.enterActionUsageDeclaration(this)}exitRule(e){e.exitActionUsageDeclaration&&e.exitActionUsageDeclaration(this)}accept(e){return e.visitActionUsageDeclaration?e.visitActionUsageDeclaration(this):e.visitChildren(this)}},Lb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}PERFORM(){return this.getToken(l.PERFORM,0)}performActionUsageDeclaration(){return this.getRuleContext(0,Uu)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_performActionUsage}enterRule(e){e.enterPerformActionUsage&&e.enterPerformActionUsage(this)}exitRule(e){e.exitPerformActionUsage&&e.exitPerformActionUsage(this)}accept(e){return e.visitPerformActionUsage?e.visitPerformActionUsage(this):e.visitChildren(this)}},Uu=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}ACTION(){return this.getToken(l.ACTION,0)}valuePart(){return this.getRuleContext(0,St)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_performActionUsageDeclaration}enterRule(e){e.enterPerformActionUsageDeclaration&&e.enterPerformActionUsageDeclaration(this)}exitRule(e){e.exitPerformActionUsageDeclaration&&e.exitPerformActionUsageDeclaration(this)}accept(e){return e.visitPerformActionUsageDeclaration?e.visitPerformActionUsageDeclaration(this):e.visitChildren(this)}},Tb=class extends h{constructor(e,t){super(e,t)}controlNode(){return this.getRuleContext(0,wb)}sendNode(){return this.getRuleContext(0,Fb)}acceptNode(){return this.getRuleContext(0,Nb)}assignmentNode(){return this.getRuleContext(0,Bb)}terminateNode(){return this.getRuleContext(0,Zb)}ifNode(){return this.getRuleContext(0,jd)}whileLoopNode(){return this.getRuleContext(0,Kb)}forLoopNode(){return this.getRuleContext(0,Jb)}get ruleIndex(){return l.RULE_actionNode}enterRule(e){e.enterActionNode&&e.enterActionNode(this)}exitRule(e){e.exitActionNode&&e.exitActionNode(this)}accept(e){return e.visitActionNode?e.visitActionNode(this):e.visitChildren(this)}},as=class extends h{constructor(e,t){super(e,t)}ACTION(){return this.getToken(l.ACTION,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_actionNodeUsageDeclaration}enterRule(e){e.enterActionNodeUsageDeclaration&&e.enterActionNodeUsageDeclaration(this)}exitRule(e){e.exitActionNodeUsageDeclaration&&e.exitActionNodeUsageDeclaration(this)}accept(e){return e.visitActionNodeUsageDeclaration?e.visitActionNodeUsageDeclaration(this):e.visitChildren(this)}},Ou=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}get ruleIndex(){return l.RULE_actionNodePrefix}enterRule(e){e.enterActionNodePrefix&&e.enterActionNodePrefix(this)}exitRule(e){e.exitActionNodePrefix&&e.exitActionNodePrefix(this)}accept(e){return e.visitActionNodePrefix?e.visitActionNodePrefix(this):e.visitChildren(this)}},wb=class extends h{constructor(e,t){super(e,t)}mergeNode(){return this.getRuleContext(0,kb)}decisionNode(){return this.getRuleContext(0,Ab)}joinNode(){return this.getRuleContext(0,Mb)}forkNode(){return this.getRuleContext(0,_b)}get ruleIndex(){return l.RULE_controlNode}enterRule(e){e.enterControlNode&&e.enterControlNode(this)}exitRule(e){e.exitControlNode&&e.exitControlNode(this)}accept(e){return e.visitControlNode?e.visitControlNode(this):e.visitChildren(this)}},Ea=class extends h{constructor(e,t){super(e,t)}refPrefix(){return this.getRuleContext(0,ba)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}portionKind(){return this.getRuleContext(0,_u)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_controlNodePrefix}enterRule(e){e.enterControlNodePrefix&&e.enterControlNodePrefix(this)}exitRule(e){e.exitControlNodePrefix&&e.exitControlNodePrefix(this)}accept(e){return e.visitControlNodePrefix?e.visitControlNodePrefix(this):e.visitChildren(this)}},kb=class extends h{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ea)}MERGE(){return this.getToken(l.MERGE,0)}actionBody(){return this.getRuleContext(0,Bt)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_mergeNode}enterRule(e){e.enterMergeNode&&e.enterMergeNode(this)}exitRule(e){e.exitMergeNode&&e.exitMergeNode(this)}accept(e){return e.visitMergeNode?e.visitMergeNode(this):e.visitChildren(this)}},Ab=class extends h{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ea)}DECIDE(){return this.getToken(l.DECIDE,0)}actionBody(){return this.getRuleContext(0,Bt)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_decisionNode}enterRule(e){e.enterDecisionNode&&e.enterDecisionNode(this)}exitRule(e){e.exitDecisionNode&&e.exitDecisionNode(this)}accept(e){return e.visitDecisionNode?e.visitDecisionNode(this):e.visitChildren(this)}},Mb=class extends h{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ea)}JOIN(){return this.getToken(l.JOIN,0)}actionBody(){return this.getRuleContext(0,Bt)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_joinNode}enterRule(e){e.enterJoinNode&&e.enterJoinNode(this)}exitRule(e){e.exitJoinNode&&e.exitJoinNode(this)}accept(e){return e.visitJoinNode?e.visitJoinNode(this):e.visitChildren(this)}},_b=class extends h{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ea)}FORK(){return this.getToken(l.FORK,0)}actionBody(){return this.getRuleContext(0,Bt)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_forkNode}enterRule(e){e.enterForkNode&&e.enterForkNode(this)}exitRule(e){e.exitForkNode&&e.exitForkNode(this)}accept(e){return e.visitForkNode?e.visitForkNode(this):e.visitChildren(this)}},Nb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}acceptNodeDeclaration(){return this.getRuleContext(0,Du)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_acceptNode}enterRule(e){e.enterAcceptNode&&e.enterAcceptNode(this)}exitRule(e){e.exitAcceptNode&&e.exitAcceptNode(this)}accept(e){return e.visitAcceptNode?e.visitAcceptNode(this):e.visitChildren(this)}},Du=class extends h{constructor(e,t){super(e,t)}ACCEPT(){return this.getToken(l.ACCEPT,0)}acceptParameterPart(){return this.getRuleContext(0,Hd)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}get ruleIndex(){return l.RULE_acceptNodeDeclaration}enterRule(e){e.enterAcceptNodeDeclaration&&e.enterAcceptNodeDeclaration(this)}exitRule(e){e.exitAcceptNodeDeclaration&&e.exitAcceptNodeDeclaration(this)}accept(e){return e.visitAcceptNodeDeclaration?e.visitAcceptNodeDeclaration(this):e.visitChildren(this)}},Hd=class extends h{constructor(e,t){super(e,t)}payloadParameterMember(){return this.getRuleContext(0,Ib)}VIA(){return this.getToken(l.VIA,0)}nodeParameterMember(){return this.getRuleContext(0,an)}get ruleIndex(){return l.RULE_acceptParameterPart}enterRule(e){e.enterAcceptParameterPart&&e.enterAcceptParameterPart(this)}exitRule(e){e.exitAcceptParameterPart&&e.exitAcceptParameterPart(this)}accept(e){return e.visitAcceptParameterPart?e.visitAcceptParameterPart(this):e.visitChildren(this)}},Ib=class extends h{constructor(e,t){super(e,t)}payloadParameter(){return this.getRuleContext(0,Ub)}get ruleIndex(){return l.RULE_payloadParameterMember}enterRule(e){e.enterPayloadParameterMember&&e.enterPayloadParameterMember(this)}exitRule(e){e.exitPayloadParameterMember&&e.exitPayloadParameterMember(this)}accept(e){return e.visitPayloadParameterMember?e.visitPayloadParameterMember(this):e.visitChildren(this)}},Ub=class extends h{constructor(e,t){super(e,t)}payloadFeature(){return this.getRuleContext(0,Cu)}triggerValuePart(){return this.getRuleContext(0,Ob)}identification(){return this.getRuleContext(0,ot)}payloadFeatureSpecializationPart(){return this.getRuleContext(0,Y1)}get ruleIndex(){return l.RULE_payloadParameter}enterRule(e){e.enterPayloadParameter&&e.enterPayloadParameter(this)}exitRule(e){e.exitPayloadParameter&&e.exitPayloadParameter(this)}accept(e){return e.visitPayloadParameter?e.visitPayloadParameter(this):e.visitChildren(this)}},Ob=class extends h{constructor(e,t){super(e,t)}triggerFeatureValue(){return this.getRuleContext(0,Db)}get ruleIndex(){return l.RULE_triggerValuePart}enterRule(e){e.enterTriggerValuePart&&e.enterTriggerValuePart(this)}exitRule(e){e.exitTriggerValuePart&&e.exitTriggerValuePart(this)}accept(e){return e.visitTriggerValuePart?e.visitTriggerValuePart(this):e.visitChildren(this)}},Db=class extends h{constructor(e,t){super(e,t)}triggerExpression(){return this.getRuleContext(0,$b)}get ruleIndex(){return l.RULE_triggerFeatureValue}enterRule(e){e.enterTriggerFeatureValue&&e.enterTriggerFeatureValue(this)}exitRule(e){e.exitTriggerFeatureValue&&e.exitTriggerFeatureValue(this)}accept(e){return e.visitTriggerFeatureValue?e.visitTriggerFeatureValue(this):e.visitChildren(this)}},$b=class extends h{constructor(e,t){super(e,t)}argumentMember(){return this.getRuleContext(0,Ug)}AT(){return this.getToken(l.AT,0)}AFTER(){return this.getToken(l.AFTER,0)}WHEN(){return this.getToken(l.WHEN,0)}argumentExpressionMember(){return this.getRuleContext(0,Og)}get ruleIndex(){return l.RULE_triggerExpression}enterRule(e){e.enterTriggerExpression&&e.enterTriggerExpression(this)}exitRule(e){e.exitTriggerExpression&&e.exitTriggerExpression(this)}accept(e){return e.visitTriggerExpression?e.visitTriggerExpression(this):e.visitChildren(this)}},Fb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}SEND(){return this.getToken(l.SEND,0)}actionBody(){return this.getRuleContext(0,Bt)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}actionUsageDeclaration(){return this.getRuleContext(0,Ca)}nodeParameterMember(){return this.getRuleContext(0,an)}emptyParameterMember(){return this.getRuleContext(0,kn)}senderReceiverPart(){return this.getRuleContext(0,Bd)}get ruleIndex(){return l.RULE_sendNode}enterRule(e){e.enterSendNode&&e.enterSendNode(this)}exitRule(e){e.exitSendNode&&e.exitSendNode(this)}accept(e){return e.visitSendNode?e.visitSendNode(this):e.visitChildren(this)}},zd=class extends h{constructor(e,t){super(e,t)}SEND(){return this.getToken(l.SEND,0)}nodeParameterMember(){return this.getRuleContext(0,an)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}senderReceiverPart(){return this.getRuleContext(0,Bd)}get ruleIndex(){return l.RULE_sendNodeDeclaration}enterRule(e){e.enterSendNodeDeclaration&&e.enterSendNodeDeclaration(this)}exitRule(e){e.exitSendNodeDeclaration&&e.exitSendNodeDeclaration(this)}accept(e){return e.visitSendNodeDeclaration?e.visitSendNodeDeclaration(this):e.visitChildren(this)}},Bd=class extends h{constructor(e,t){super(e,t)}VIA(){return this.getToken(l.VIA,0)}nodeParameterMember(e){return e===void 0?this.getRuleContexts(an):this.getRuleContext(e,an)}TO(){return this.getToken(l.TO,0)}emptyParameterMember(){return this.getRuleContext(0,kn)}get ruleIndex(){return l.RULE_senderReceiverPart}enterRule(e){e.enterSenderReceiverPart&&e.enterSenderReceiverPart(this)}exitRule(e){e.exitSenderReceiverPart&&e.exitSenderReceiverPart(this)}accept(e){return e.visitSenderReceiverPart?e.visitSenderReceiverPart(this):e.visitChildren(this)}},an=class extends h{constructor(e,t){super(e,t)}nodeParameter(){return this.getRuleContext(0,Hb)}get ruleIndex(){return l.RULE_nodeParameterMember}enterRule(e){e.enterNodeParameterMember&&e.enterNodeParameterMember(this)}exitRule(e){e.exitNodeParameterMember&&e.exitNodeParameterMember(this)}accept(e){return e.visitNodeParameterMember?e.visitNodeParameterMember(this):e.visitChildren(this)}},Hb=class extends h{constructor(e,t){super(e,t)}featureBinding(){return this.getRuleContext(0,zb)}get ruleIndex(){return l.RULE_nodeParameter}enterRule(e){e.enterNodeParameter&&e.enterNodeParameter(this)}exitRule(e){e.exitNodeParameter&&e.exitNodeParameter(this)}accept(e){return e.visitNodeParameter?e.visitNodeParameter(this):e.visitChildren(this)}},zb=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_featureBinding}enterRule(e){e.enterFeatureBinding&&e.enterFeatureBinding(this)}exitRule(e){e.exitFeatureBinding&&e.exitFeatureBinding(this)}accept(e){return e.visitFeatureBinding?e.visitFeatureBinding(this):e.visitChildren(this)}},kn=class extends h{constructor(e,t){super(e,t)}emptyUsage_(){return this.getRuleContext(0,Ly)}get ruleIndex(){return l.RULE_emptyParameterMember}enterRule(e){e.enterEmptyParameterMember&&e.enterEmptyParameterMember(this)}exitRule(e){e.exitEmptyParameterMember&&e.exitEmptyParameterMember(this)}accept(e){return e.visitEmptyParameterMember?e.visitEmptyParameterMember(this):e.visitChildren(this)}},Bb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}assignmentNodeDeclaration(){return this.getRuleContext(0,$u)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_assignmentNode}enterRule(e){e.enterAssignmentNode&&e.enterAssignmentNode(this)}exitRule(e){e.exitAssignmentNode&&e.exitAssignmentNode(this)}accept(e){return e.visitAssignmentNode?e.visitAssignmentNode(this):e.visitChildren(this)}},$u=class extends h{constructor(e,t){super(e,t)}ASSIGN(){return this.getToken(l.ASSIGN,0)}assignmentTargetMember(){return this.getRuleContext(0,jb)}featureChainMember(){return this.getRuleContext(0,ha)}COLON_EQ(){return this.getToken(l.COLON_EQ,0)}nodeParameterMember(){return this.getRuleContext(0,an)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}get ruleIndex(){return l.RULE_assignmentNodeDeclaration}enterRule(e){e.enterAssignmentNodeDeclaration&&e.enterAssignmentNodeDeclaration(this)}exitRule(e){e.exitAssignmentNodeDeclaration&&e.exitAssignmentNodeDeclaration(this)}accept(e){return e.visitAssignmentNodeDeclaration?e.visitAssignmentNodeDeclaration(this):e.visitChildren(this)}},jb=class extends h{constructor(e,t){super(e,t)}assignmentTargetParameter(){return this.getRuleContext(0,qb)}get ruleIndex(){return l.RULE_assignmentTargetMember}enterRule(e){e.enterAssignmentTargetMember&&e.enterAssignmentTargetMember(this)}exitRule(e){e.exitAssignmentTargetMember&&e.exitAssignmentTargetMember(this)}accept(e){return e.visitAssignmentTargetMember?e.visitAssignmentTargetMember(this):e.visitChildren(this)}},qb=class extends h{constructor(e,t){super(e,t)}assignmentTargetBinding(){return this.getRuleContext(0,Vb)}DOT(){return this.getToken(l.DOT,0)}get ruleIndex(){return l.RULE_assignmentTargetParameter}enterRule(e){e.enterAssignmentTargetParameter&&e.enterAssignmentTargetParameter(this)}exitRule(e){e.exitAssignmentTargetParameter&&e.exitAssignmentTargetParameter(this)}accept(e){return e.visitAssignmentTargetParameter?e.visitAssignmentTargetParameter(this):e.visitChildren(this)}},Vb=class extends h{constructor(e,t){super(e,t)}nonFeatureChainPrimaryExpression(){return this.getRuleContext(0,wy)}get ruleIndex(){return l.RULE_assignmentTargetBinding}enterRule(e){e.enterAssignmentTargetBinding&&e.enterAssignmentTargetBinding(this)}exitRule(e){e.exitAssignmentTargetBinding&&e.exitAssignmentTargetBinding(this)}accept(e){return e.visitAssignmentTargetBinding?e.visitAssignmentTargetBinding(this):e.visitChildren(this)}},Zb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}TERMINATE(){return this.getToken(l.TERMINATE,0)}actionBody(){return this.getRuleContext(0,Bt)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}nodeParameterMember(){return this.getRuleContext(0,an)}get ruleIndex(){return l.RULE_terminateNode}enterRule(e){e.enterTerminateNode&&e.enterTerminateNode(this)}exitRule(e){e.exitTerminateNode&&e.exitTerminateNode(this)}accept(e){return e.visitTerminateNode?e.visitTerminateNode(this):e.visitChildren(this)}},jd=class extends h{constructor(e,t){super(e,t)}actionNodePrefix(){return this.getRuleContext(0,Ou)}IF(){return this.getToken(l.IF,0)}expressionParameterMember(){return this.getRuleContext(0,Fu)}actionBodyParameterMember(e){return e===void 0?this.getRuleContexts(Sa):this.getRuleContext(e,Sa)}ELSE(){return this.getToken(l.ELSE,0)}ifNodeParameterMember(){return this.getRuleContext(0,Wb)}get ruleIndex(){return l.RULE_ifNode}enterRule(e){e.enterIfNode&&e.enterIfNode(this)}exitRule(e){e.exitIfNode&&e.exitIfNode(this)}accept(e){return e.visitIfNode?e.visitIfNode(this):e.visitChildren(this)}},Fu=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_expressionParameterMember}enterRule(e){e.enterExpressionParameterMember&&e.enterExpressionParameterMember(this)}exitRule(e){e.exitExpressionParameterMember&&e.exitExpressionParameterMember(this)}accept(e){return e.visitExpressionParameterMember?e.visitExpressionParameterMember(this):e.visitChildren(this)}},Sa=class extends h{constructor(e,t){super(e,t)}actionBodyParameter(){return this.getRuleContext(0,Gb)}get ruleIndex(){return l.RULE_actionBodyParameterMember}enterRule(e){e.enterActionBodyParameterMember&&e.enterActionBodyParameterMember(this)}exitRule(e){e.exitActionBodyParameterMember&&e.exitActionBodyParameterMember(this)}accept(e){return e.visitActionBodyParameterMember?e.visitActionBodyParameterMember(this):e.visitChildren(this)}},Gb=class extends h{constructor(e,t){super(e,t)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}ACTION(){return this.getToken(l.ACTION,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_actionBodyParameter}enterRule(e){e.enterActionBodyParameter&&e.enterActionBodyParameter(this)}exitRule(e){e.exitActionBodyParameter&&e.exitActionBodyParameter(this)}accept(e){return e.visitActionBodyParameter?e.visitActionBodyParameter(this):e.visitChildren(this)}},Wb=class extends h{constructor(e,t){super(e,t)}ifNode(){return this.getRuleContext(0,jd)}get ruleIndex(){return l.RULE_ifNodeParameterMember}enterRule(e){e.enterIfNodeParameterMember&&e.enterIfNodeParameterMember(this)}exitRule(e){e.exitIfNodeParameterMember&&e.exitIfNodeParameterMember(this)}accept(e){return e.visitIfNodeParameterMember?e.visitIfNodeParameterMember(this):e.visitChildren(this)}},Kb=class extends h{constructor(e,t){super(e,t)}actionNodePrefix(){return this.getRuleContext(0,Ou)}actionBodyParameterMember(){return this.getRuleContext(0,Sa)}WHILE(){return this.getToken(l.WHILE,0)}expressionParameterMember(e){return e===void 0?this.getRuleContexts(Fu):this.getRuleContext(e,Fu)}LOOP(){return this.getToken(l.LOOP,0)}emptyParameterMember(){return this.getRuleContext(0,kn)}UNTIL(){return this.getToken(l.UNTIL,0)}SEMI(){return this.getToken(l.SEMI,0)}get ruleIndex(){return l.RULE_whileLoopNode}enterRule(e){e.enterWhileLoopNode&&e.enterWhileLoopNode(this)}exitRule(e){e.exitWhileLoopNode&&e.exitWhileLoopNode(this)}accept(e){return e.visitWhileLoopNode?e.visitWhileLoopNode(this):e.visitChildren(this)}},Jb=class extends h{constructor(e,t){super(e,t)}actionNodePrefix(){return this.getRuleContext(0,Ou)}FOR(){return this.getToken(l.FOR,0)}forVariableDeclarationMember(){return this.getRuleContext(0,Qb)}IN(){return this.getToken(l.IN,0)}nodeParameterMember(){return this.getRuleContext(0,an)}actionBodyParameterMember(){return this.getRuleContext(0,Sa)}get ruleIndex(){return l.RULE_forLoopNode}enterRule(e){e.enterForLoopNode&&e.enterForLoopNode(this)}exitRule(e){e.exitForLoopNode&&e.exitForLoopNode(this)}accept(e){return e.visitForLoopNode?e.visitForLoopNode(this):e.visitChildren(this)}},Qb=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_forVariableDeclarationMember}enterRule(e){e.enterForVariableDeclarationMember&&e.enterForVariableDeclarationMember(this)}exitRule(e){e.exitForVariableDeclarationMember&&e.exitForVariableDeclarationMember(this)}accept(e){return e.visitForVariableDeclarationMember?e.visitForVariableDeclarationMember(this):e.visitChildren(this)}},uC=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_forVariableDeclaration}enterRule(e){e.enterForVariableDeclaration&&e.enterForVariableDeclaration(this)}exitRule(e){e.exitForVariableDeclaration&&e.exitForVariableDeclaration(this)}accept(e){return e.visitForVariableDeclaration?e.visitForVariableDeclaration(this):e.visitChildren(this)}},Yb=class extends h{constructor(e,t){super(e,t)}usageBody(){return this.getRuleContext(0,ki)}targetSuccession(){return this.getRuleContext(0,Xb)}guardedTargetSuccession(){return this.getRuleContext(0,qd)}defaultTargetSuccession(){return this.getRuleContext(0,e4)}get ruleIndex(){return l.RULE_actionTargetSuccession}enterRule(e){e.enterActionTargetSuccession&&e.enterActionTargetSuccession(this)}exitRule(e){e.exitActionTargetSuccession&&e.exitActionTargetSuccession(this)}accept(e){return e.visitActionTargetSuccession?e.visitActionTargetSuccession(this):e.visitChildren(this)}},Xb=class extends h{constructor(e,t){super(e,t)}sourceEndMember(){return this.getRuleContext(0,Ed)}THEN(){return this.getToken(l.THEN,0)}connectorEndMember(){return this.getRuleContext(0,Ft)}get ruleIndex(){return l.RULE_targetSuccession}enterRule(e){e.enterTargetSuccession&&e.enterTargetSuccession(this)}exitRule(e){e.exitTargetSuccession&&e.exitTargetSuccession(this)}accept(e){return e.visitTargetSuccession?e.visitTargetSuccession(this):e.visitChildren(this)}},qd=class extends h{constructor(e,t){super(e,t)}guardExpressionMember(){return this.getRuleContext(0,La)}THEN(){return this.getToken(l.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}get ruleIndex(){return l.RULE_guardedTargetSuccession}enterRule(e){e.enterGuardedTargetSuccession&&e.enterGuardedTargetSuccession(this)}exitRule(e){e.exitGuardedTargetSuccession&&e.exitGuardedTargetSuccession(this)}accept(e){return e.visitGuardedTargetSuccession?e.visitGuardedTargetSuccession(this):e.visitChildren(this)}},e4=class extends h{constructor(e,t){super(e,t)}ELSE(){return this.getToken(l.ELSE,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}get ruleIndex(){return l.RULE_defaultTargetSuccession}enterRule(e){e.enterDefaultTargetSuccession&&e.enterDefaultTargetSuccession(this)}exitRule(e){e.exitDefaultTargetSuccession&&e.exitDefaultTargetSuccession(this)}accept(e){return e.visitDefaultTargetSuccession?e.visitDefaultTargetSuccession(this):e.visitChildren(this)}},t4=class extends h{constructor(e,t){super(e,t)}FIRST(){return this.getToken(l.FIRST,0)}featureChainMember(){return this.getRuleContext(0,ha)}guardExpressionMember(){return this.getRuleContext(0,La)}THEN(){return this.getToken(l.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}usageBody(){return this.getRuleContext(0,ki)}SUCCESSION(){return this.getToken(l.SUCCESSION,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_guardedSuccession}enterRule(e){e.enterGuardedSuccession&&e.enterGuardedSuccession(this)}exitRule(e){e.exitGuardedSuccession&&e.exitGuardedSuccession(this)}accept(e){return e.visitGuardedSuccession?e.visitGuardedSuccession(this):e.visitChildren(this)}},r4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}STATE(){return this.getToken(l.STATE,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}stateDefBody(){return this.getRuleContext(0,i4)}get ruleIndex(){return l.RULE_stateDefinition}enterRule(e){e.enterStateDefinition&&e.enterStateDefinition(this)}exitRule(e){e.exitStateDefinition&&e.exitStateDefinition(this)}accept(e){return e.visitStateDefinition?e.visitStateDefinition(this):e.visitChildren(this)}},i4=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}PARALLEL(){return this.getToken(l.PARALLEL,0)}stateBodyItem(e){return e===void 0?this.getRuleContexts(Pa):this.getRuleContext(e,Pa)}get ruleIndex(){return l.RULE_stateDefBody}enterRule(e){e.enterStateDefBody&&e.enterStateDefBody(this)}exitRule(e){e.exitStateDefBody&&e.exitStateDefBody(this)}accept(e){return e.visitStateDefBody?e.visitStateDefBody(this):e.visitChildren(this)}},Pa=class extends h{constructor(e,t){super(e,t)}nonBehaviorBodyItem(){return this.getRuleContext(0,$d)}behaviorUsageMember(){return this.getRuleContext(0,pd)}sourceSuccessionMember(){return this.getRuleContext(0,so)}targetTransitionUsageMember(e){return e===void 0?this.getRuleContexts(Zd):this.getRuleContext(e,Zd)}transitionUsageMember(){return this.getRuleContext(0,d4)}entryActionMember(){return this.getRuleContext(0,n4)}entryTransitionMember(e){return e===void 0?this.getRuleContexts(Vd):this.getRuleContext(e,Vd)}doActionMember(){return this.getRuleContext(0,s4)}exitActionMember(){return this.getRuleContext(0,o4)}get ruleIndex(){return l.RULE_stateBodyItem}enterRule(e){e.enterStateBodyItem&&e.enterStateBodyItem(this)}exitRule(e){e.exitStateBodyItem&&e.exitStateBodyItem(this)}accept(e){return e.visitStateBodyItem?e.visitStateBodyItem(this):e.visitChildren(this)}},n4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}ENTRY(){return this.getToken(l.ENTRY,0)}stateActionUsage(){return this.getRuleContext(0,Hu)}get ruleIndex(){return l.RULE_entryActionMember}enterRule(e){e.enterEntryActionMember&&e.enterEntryActionMember(this)}exitRule(e){e.exitEntryActionMember&&e.exitEntryActionMember(this)}accept(e){return e.visitEntryActionMember?e.visitEntryActionMember(this):e.visitChildren(this)}},s4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}DO(){return this.getToken(l.DO,0)}stateActionUsage(){return this.getRuleContext(0,Hu)}get ruleIndex(){return l.RULE_doActionMember}enterRule(e){e.enterDoActionMember&&e.enterDoActionMember(this)}exitRule(e){e.exitDoActionMember&&e.exitDoActionMember(this)}accept(e){return e.visitDoActionMember?e.visitDoActionMember(this):e.visitChildren(this)}},o4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}EXIT(){return this.getToken(l.EXIT,0)}stateActionUsage(){return this.getRuleContext(0,Hu)}get ruleIndex(){return l.RULE_exitActionMember}enterRule(e){e.enterExitActionMember&&e.enterExitActionMember(this)}exitRule(e){e.exitExitActionMember&&e.exitExitActionMember(this)}accept(e){return e.visitExitActionMember?e.visitExitActionMember(this):e.visitChildren(this)}},Vd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}SEMI(){return this.getToken(l.SEMI,0)}guardedTargetSuccession(){return this.getRuleContext(0,qd)}THEN(){return this.getToken(l.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}get ruleIndex(){return l.RULE_entryTransitionMember}enterRule(e){e.enterEntryTransitionMember&&e.enterEntryTransitionMember(this)}exitRule(e){e.exitEntryTransitionMember&&e.exitEntryTransitionMember(this)}accept(e){return e.visitEntryTransitionMember?e.visitEntryTransitionMember(this):e.visitChildren(this)}},Hu=class extends h{constructor(e,t){super(e,t)}emptyActionUsage_(){return this.getRuleContext(0,uh)}SEMI(){return this.getToken(l.SEMI,0)}statePerformActionUsage(){return this.getRuleContext(0,a4)}stateAcceptActionUsage(){return this.getRuleContext(0,l4)}stateSendActionUsage(){return this.getRuleContext(0,u4)}stateAssignmentActionUsage(){return this.getRuleContext(0,c4)}get ruleIndex(){return l.RULE_stateActionUsage}enterRule(e){e.enterStateActionUsage&&e.enterStateActionUsage(this)}exitRule(e){e.exitStateActionUsage&&e.exitStateActionUsage(this)}accept(e){return e.visitStateActionUsage?e.visitStateActionUsage(this):e.visitChildren(this)}},a4=class extends h{constructor(e,t){super(e,t)}performActionUsageDeclaration(){return this.getRuleContext(0,Uu)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_statePerformActionUsage}enterRule(e){e.enterStatePerformActionUsage&&e.enterStatePerformActionUsage(this)}exitRule(e){e.exitStatePerformActionUsage&&e.exitStatePerformActionUsage(this)}accept(e){return e.visitStatePerformActionUsage?e.visitStatePerformActionUsage(this):e.visitChildren(this)}},l4=class extends h{constructor(e,t){super(e,t)}acceptNodeDeclaration(){return this.getRuleContext(0,Du)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_stateAcceptActionUsage}enterRule(e){e.enterStateAcceptActionUsage&&e.enterStateAcceptActionUsage(this)}exitRule(e){e.exitStateAcceptActionUsage&&e.exitStateAcceptActionUsage(this)}accept(e){return e.visitStateAcceptActionUsage?e.visitStateAcceptActionUsage(this):e.visitChildren(this)}},u4=class extends h{constructor(e,t){super(e,t)}sendNodeDeclaration(){return this.getRuleContext(0,zd)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_stateSendActionUsage}enterRule(e){e.enterStateSendActionUsage&&e.enterStateSendActionUsage(this)}exitRule(e){e.exitStateSendActionUsage&&e.exitStateSendActionUsage(this)}accept(e){return e.visitStateSendActionUsage?e.visitStateSendActionUsage(this):e.visitChildren(this)}},c4=class extends h{constructor(e,t){super(e,t)}assignmentNodeDeclaration(){return this.getRuleContext(0,$u)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_stateAssignmentActionUsage}enterRule(e){e.enterStateAssignmentActionUsage&&e.enterStateAssignmentActionUsage(this)}exitRule(e){e.exitStateAssignmentActionUsage&&e.exitStateAssignmentActionUsage(this)}accept(e){return e.visitStateAssignmentActionUsage?e.visitStateAssignmentActionUsage(this):e.visitChildren(this)}},d4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}transitionUsage(){return this.getRuleContext(0,f4)}get ruleIndex(){return l.RULE_transitionUsageMember}enterRule(e){e.enterTransitionUsageMember&&e.enterTransitionUsageMember(this)}exitRule(e){e.exitTransitionUsageMember&&e.exitTransitionUsageMember(this)}accept(e){return e.visitTransitionUsageMember?e.visitTransitionUsageMember(this):e.visitChildren(this)}},Zd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}targetTransitionUsage(){return this.getRuleContext(0,m4)}get ruleIndex(){return l.RULE_targetTransitionUsageMember}enterRule(e){e.enterTargetTransitionUsageMember&&e.enterTargetTransitionUsageMember(this)}exitRule(e){e.exitTargetTransitionUsageMember&&e.exitTargetTransitionUsageMember(this)}accept(e){return e.visitTargetTransitionUsageMember?e.visitTargetTransitionUsageMember(this):e.visitChildren(this)}},h4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}STATE(){return this.getToken(l.STATE,0)}actionUsageDeclaration(){return this.getRuleContext(0,Ca)}stateUsageBody(){return this.getRuleContext(0,Gd)}get ruleIndex(){return l.RULE_stateUsage}enterRule(e){e.enterStateUsage&&e.enterStateUsage(this)}exitRule(e){e.exitStateUsage&&e.exitStateUsage(this)}accept(e){return e.visitStateUsage?e.visitStateUsage(this):e.visitChildren(this)}},Gd=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}PARALLEL(){return this.getToken(l.PARALLEL,0)}stateBodyItem(e){return e===void 0?this.getRuleContexts(Pa):this.getRuleContext(e,Pa)}get ruleIndex(){return l.RULE_stateUsageBody}enterRule(e){e.enterStateUsageBody&&e.enterStateUsageBody(this)}exitRule(e){e.exitStateUsageBody&&e.exitStateUsageBody(this)}accept(e){return e.visitStateUsageBody?e.visitStateUsageBody(this):e.visitChildren(this)}},p4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}EXHIBIT(){return this.getToken(l.EXHIBIT,0)}stateUsageBody(){return this.getRuleContext(0,Gd)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}STATE(){return this.getToken(l.STATE,0)}valuePart(){return this.getRuleContext(0,St)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_exhibitStateUsage}enterRule(e){e.enterExhibitStateUsage&&e.enterExhibitStateUsage(this)}exitRule(e){e.exitExhibitStateUsage&&e.exitExhibitStateUsage(this)}accept(e){return e.visitExhibitStateUsage?e.visitExhibitStateUsage(this):e.visitChildren(this)}},f4=class extends h{constructor(e,t){super(e,t)}TRANSITION(){return this.getToken(l.TRANSITION,0)}featureChainMember(){return this.getRuleContext(0,ha)}emptyParameterMember(e){return e===void 0?this.getRuleContexts(kn):this.getRuleContext(e,kn)}THEN(){return this.getToken(l.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}actionBody(){return this.getRuleContext(0,Bt)}FIRST(){return this.getToken(l.FIRST,0)}triggerActionMember(){return this.getRuleContext(0,Wd)}guardExpressionMember(){return this.getRuleContext(0,La)}effectBehaviorMember(){return this.getRuleContext(0,Kd)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_transitionUsage}enterRule(e){e.enterTransitionUsage&&e.enterTransitionUsage(this)}exitRule(e){e.exitTransitionUsage&&e.exitTransitionUsage(this)}accept(e){return e.visitTransitionUsage?e.visitTransitionUsage(this):e.visitChildren(this)}},m4=class extends h{constructor(e,t){super(e,t)}emptyParameterMember(e){return e===void 0?this.getRuleContexts(kn):this.getRuleContext(e,kn)}THEN(){return this.getToken(l.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}actionBody(){return this.getRuleContext(0,Bt)}TRANSITION(){return this.getToken(l.TRANSITION,0)}triggerActionMember(){return this.getRuleContext(0,Wd)}guardExpressionMember(){return this.getRuleContext(0,La)}effectBehaviorMember(){return this.getRuleContext(0,Kd)}get ruleIndex(){return l.RULE_targetTransitionUsage}enterRule(e){e.enterTargetTransitionUsage&&e.enterTargetTransitionUsage(this)}exitRule(e){e.exitTargetTransitionUsage&&e.exitTargetTransitionUsage(this)}accept(e){return e.visitTargetTransitionUsage?e.visitTargetTransitionUsage(this):e.visitChildren(this)}},Wd=class extends h{constructor(e,t){super(e,t)}ACCEPT(){return this.getToken(l.ACCEPT,0)}triggerAction(){return this.getRuleContext(0,g4)}get ruleIndex(){return l.RULE_triggerActionMember}enterRule(e){e.enterTriggerActionMember&&e.enterTriggerActionMember(this)}exitRule(e){e.exitTriggerActionMember&&e.exitTriggerActionMember(this)}accept(e){return e.visitTriggerActionMember?e.visitTriggerActionMember(this):e.visitChildren(this)}},g4=class extends h{constructor(e,t){super(e,t)}acceptParameterPart(){return this.getRuleContext(0,Hd)}get ruleIndex(){return l.RULE_triggerAction}enterRule(e){e.enterTriggerAction&&e.enterTriggerAction(this)}exitRule(e){e.exitTriggerAction&&e.exitTriggerAction(this)}accept(e){return e.visitTriggerAction?e.visitTriggerAction(this):e.visitChildren(this)}},La=class extends h{constructor(e,t){super(e,t)}IF(){return this.getToken(l.IF,0)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_guardExpressionMember}enterRule(e){e.enterGuardExpressionMember&&e.enterGuardExpressionMember(this)}exitRule(e){e.exitGuardExpressionMember&&e.exitGuardExpressionMember(this)}accept(e){return e.visitGuardExpressionMember?e.visitGuardExpressionMember(this):e.visitChildren(this)}},Kd=class extends h{constructor(e,t){super(e,t)}DO(){return this.getToken(l.DO,0)}effectBehaviorUsage(){return this.getRuleContext(0,x4)}get ruleIndex(){return l.RULE_effectBehaviorMember}enterRule(e){e.enterEffectBehaviorMember&&e.enterEffectBehaviorMember(this)}exitRule(e){e.exitEffectBehaviorMember&&e.exitEffectBehaviorMember(this)}accept(e){return e.visitEffectBehaviorMember?e.visitEffectBehaviorMember(this):e.visitChildren(this)}},x4=class extends h{constructor(e,t){super(e,t)}emptyActionUsage_(){return this.getRuleContext(0,uh)}transitionPerformActionUsage(){return this.getRuleContext(0,b4)}transitionAcceptActionUsage(){return this.getRuleContext(0,y4)}transitionSendActionUsage(){return this.getRuleContext(0,v4)}transitionAssignmentActionUsage(){return this.getRuleContext(0,R4)}get ruleIndex(){return l.RULE_effectBehaviorUsage}enterRule(e){e.enterEffectBehaviorUsage&&e.enterEffectBehaviorUsage(this)}exitRule(e){e.exitEffectBehaviorUsage&&e.exitEffectBehaviorUsage(this)}accept(e){return e.visitEffectBehaviorUsage?e.visitEffectBehaviorUsage(this):e.visitChildren(this)}},b4=class extends h{constructor(e,t){super(e,t)}performActionUsageDeclaration(){return this.getRuleContext(0,Uu)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}get ruleIndex(){return l.RULE_transitionPerformActionUsage}enterRule(e){e.enterTransitionPerformActionUsage&&e.enterTransitionPerformActionUsage(this)}exitRule(e){e.exitTransitionPerformActionUsage&&e.exitTransitionPerformActionUsage(this)}accept(e){return e.visitTransitionPerformActionUsage?e.visitTransitionPerformActionUsage(this):e.visitChildren(this)}},y4=class extends h{constructor(e,t){super(e,t)}acceptNodeDeclaration(){return this.getRuleContext(0,Du)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}get ruleIndex(){return l.RULE_transitionAcceptActionUsage}enterRule(e){e.enterTransitionAcceptActionUsage&&e.enterTransitionAcceptActionUsage(this)}exitRule(e){e.exitTransitionAcceptActionUsage&&e.exitTransitionAcceptActionUsage(this)}accept(e){return e.visitTransitionAcceptActionUsage?e.visitTransitionAcceptActionUsage(this):e.visitChildren(this)}},v4=class extends h{constructor(e,t){super(e,t)}sendNodeDeclaration(){return this.getRuleContext(0,zd)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}get ruleIndex(){return l.RULE_transitionSendActionUsage}enterRule(e){e.enterTransitionSendActionUsage&&e.enterTransitionSendActionUsage(this)}exitRule(e){e.exitTransitionSendActionUsage&&e.exitTransitionSendActionUsage(this)}accept(e){return e.visitTransitionSendActionUsage?e.visitTransitionSendActionUsage(this):e.visitChildren(this)}},R4=class extends h{constructor(e,t){super(e,t)}assignmentNodeDeclaration(){return this.getRuleContext(0,$u)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}get ruleIndex(){return l.RULE_transitionAssignmentActionUsage}enterRule(e){e.enterTransitionAssignmentActionUsage&&e.enterTransitionAssignmentActionUsage(this)}exitRule(e){e.exitTransitionAssignmentActionUsage&&e.exitTransitionAssignmentActionUsage(this)}accept(e){return e.visitTransitionAssignmentActionUsage?e.visitTransitionAssignmentActionUsage(this):e.visitChildren(this)}},ls=class extends h{constructor(e,t){super(e,t)}transitionSuccession(){return this.getRuleContext(0,C4)}get ruleIndex(){return l.RULE_transitionSuccessionMember}enterRule(e){e.enterTransitionSuccessionMember&&e.enterTransitionSuccessionMember(this)}exitRule(e){e.exitTransitionSuccessionMember&&e.exitTransitionSuccessionMember(this)}accept(e){return e.visitTransitionSuccessionMember?e.visitTransitionSuccessionMember(this):e.visitChildren(this)}},C4=class extends h{constructor(e,t){super(e,t)}emptyEndMember(){return this.getRuleContext(0,E4)}connectorEndMember(){return this.getRuleContext(0,Ft)}get ruleIndex(){return l.RULE_transitionSuccession}enterRule(e){e.enterTransitionSuccession&&e.enterTransitionSuccession(this)}exitRule(e){e.exitTransitionSuccession&&e.exitTransitionSuccession(this)}accept(e){return e.visitTransitionSuccession?e.visitTransitionSuccession(this):e.visitChildren(this)}},E4=class extends h{constructor(e,t){super(e,t)}emptyFeature_(){return this.getRuleContext(0,ch)}get ruleIndex(){return l.RULE_emptyEndMember}enterRule(e){e.enterEmptyEndMember&&e.enterEmptyEndMember(this)}exitRule(e){e.exitEmptyEndMember&&e.exitEmptyEndMember(this)}accept(e){return e.visitEmptyEndMember?e.visitEmptyEndMember(this):e.visitChildren(this)}},S4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}CALC(){return this.getToken(l.CALC,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}calculationBody(){return this.getRuleContext(0,An)}get ruleIndex(){return l.RULE_calculationDefinition}enterRule(e){e.enterCalculationDefinition&&e.enterCalculationDefinition(this)}exitRule(e){e.exitCalculationDefinition&&e.exitCalculationDefinition(this)}accept(e){return e.visitCalculationDefinition?e.visitCalculationDefinition(this):e.visitChildren(this)}},P4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}CALC(){return this.getToken(l.CALC,0)}actionUsageDeclaration(){return this.getRuleContext(0,Ca)}calculationBody(){return this.getRuleContext(0,An)}get ruleIndex(){return l.RULE_calculationUsage}enterRule(e){e.enterCalculationUsage&&e.enterCalculationUsage(this)}exitRule(e){e.exitCalculationUsage&&e.exitCalculationUsage(this)}accept(e){return e.visitCalculationUsage?e.visitCalculationUsage(this):e.visitChildren(this)}},An=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}calculationBodyPart(){return this.getRuleContext(0,L4)}RBRACE(){return this.getToken(l.RBRACE,0)}get ruleIndex(){return l.RULE_calculationBody}enterRule(e){e.enterCalculationBody&&e.enterCalculationBody(this)}exitRule(e){e.exitCalculationBody&&e.exitCalculationBody(this)}accept(e){return e.visitCalculationBody?e.visitCalculationBody(this):e.visitChildren(this)}},L4=class extends h{constructor(e,t){super(e,t)}calculationBodyItem(e){return e===void 0?this.getRuleContexts(Jd):this.getRuleContext(e,Jd)}resultExpressionMember(){return this.getRuleContext(0,Ru)}get ruleIndex(){return l.RULE_calculationBodyPart}enterRule(e){e.enterCalculationBodyPart&&e.enterCalculationBodyPart(this)}exitRule(e){e.exitCalculationBodyPart&&e.exitCalculationBodyPart(this)}accept(e){return e.visitCalculationBodyPart?e.visitCalculationBodyPart(this):e.visitChildren(this)}},Jd=class extends h{constructor(e,t){super(e,t)}actionBodyItem(){return this.getRuleContext(0,fr)}returnParameterMember(){return this.getRuleContext(0,Qd)}get ruleIndex(){return l.RULE_calculationBodyItem}enterRule(e){e.enterCalculationBodyItem&&e.enterCalculationBodyItem(this)}exitRule(e){e.exitCalculationBodyItem&&e.exitCalculationBodyItem(this)}accept(e){return e.visitCalculationBodyItem?e.visitCalculationBodyItem(this):e.visitChildren(this)}},Qd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}RETURN(){return this.getToken(l.RETURN,0)}usageElement(){return this.getRuleContext(0,cd)}get ruleIndex(){return l.RULE_returnParameterMember}enterRule(e){e.enterReturnParameterMember&&e.enterReturnParameterMember(this)}exitRule(e){e.exitReturnParameterMember&&e.exitReturnParameterMember(this)}accept(e){return e.visitReturnParameterMember?e.visitReturnParameterMember(this):e.visitChildren(this)}},T4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}CONSTRAINT(){return this.getToken(l.CONSTRAINT,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}calculationBody(){return this.getRuleContext(0,An)}get ruleIndex(){return l.RULE_constraintDefinition}enterRule(e){e.enterConstraintDefinition&&e.enterConstraintDefinition(this)}exitRule(e){e.exitConstraintDefinition&&e.exitConstraintDefinition(this)}accept(e){return e.visitConstraintDefinition?e.visitConstraintDefinition(this):e.visitChildren(this)}},w4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}CONSTRAINT(){return this.getToken(l.CONSTRAINT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}calculationBody(){return this.getRuleContext(0,An)}get ruleIndex(){return l.RULE_constraintUsage}enterRule(e){e.enterConstraintUsage&&e.enterConstraintUsage(this)}exitRule(e){e.exitConstraintUsage&&e.exitConstraintUsage(this)}accept(e){return e.visitConstraintUsage?e.visitConstraintUsage(this):e.visitChildren(this)}},k4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}ASSERT(){return this.getToken(l.ASSERT,0)}calculationBody(){return this.getRuleContext(0,An)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}CONSTRAINT(){return this.getToken(l.CONSTRAINT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}NOT(){return this.getToken(l.NOT,0)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}get ruleIndex(){return l.RULE_assertConstraintUsage}enterRule(e){e.enterAssertConstraintUsage&&e.enterAssertConstraintUsage(this)}exitRule(e){e.exitAssertConstraintUsage&&e.exitAssertConstraintUsage(this)}accept(e){return e.visitAssertConstraintUsage?e.visitAssertConstraintUsage(this):e.visitChildren(this)}},Hr=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_constraintUsageDeclaration}enterRule(e){e.enterConstraintUsageDeclaration&&e.enterConstraintUsageDeclaration(this)}exitRule(e){e.exitConstraintUsageDeclaration&&e.exitConstraintUsageDeclaration(this)}accept(e){return e.visitConstraintUsageDeclaration?e.visitConstraintUsageDeclaration(this):e.visitChildren(this)}},A4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}REQUIREMENT(){return this.getToken(l.REQUIREMENT,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_requirementDefinition}enterRule(e){e.enterRequirementDefinition&&e.enterRequirementDefinition(this)}exitRule(e){e.exitRequirementDefinition&&e.exitRequirementDefinition(this)}accept(e){return e.visitRequirementDefinition?e.visitRequirementDefinition(this):e.visitChildren(this)}},di=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}requirementBodyItem(e){return e===void 0?this.getRuleContexts(Yd):this.getRuleContext(e,Yd)}get ruleIndex(){return l.RULE_requirementBody}enterRule(e){e.enterRequirementBody&&e.enterRequirementBody(this)}exitRule(e){e.exitRequirementBody&&e.exitRequirementBody(this)}accept(e){return e.visitRequirementBody?e.visitRequirementBody(this):e.visitChildren(this)}},Yd=class extends h{constructor(e,t){super(e,t)}definitionBodyItem(){return this.getRuleContext(0,io)}subjectMember(){return this.getRuleContext(0,Xd)}requirementConstraintMember(){return this.getRuleContext(0,_4)}framedConcernMember(){return this.getRuleContext(0,U4)}requirementVerificationMember(){return this.getRuleContext(0,ry)}actorMember(){return this.getRuleContext(0,eh)}stakeholderMember(){return this.getRuleContext(0,$4)}get ruleIndex(){return l.RULE_requirementBodyItem}enterRule(e){e.enterRequirementBodyItem&&e.enterRequirementBodyItem(this)}exitRule(e){e.exitRequirementBodyItem&&e.exitRequirementBodyItem(this)}accept(e){return e.visitRequirementBodyItem?e.visitRequirementBodyItem(this):e.visitChildren(this)}},Xd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}subjectUsage(){return this.getRuleContext(0,M4)}get ruleIndex(){return l.RULE_subjectMember}enterRule(e){e.enterSubjectMember&&e.enterSubjectMember(this)}exitRule(e){e.exitSubjectMember&&e.exitSubjectMember(this)}accept(e){return e.visitSubjectMember?e.visitSubjectMember(this):e.visitChildren(this)}},M4=class extends h{constructor(e,t){super(e,t)}SUBJECT(){return this.getToken(l.SUBJECT,0)}usage(){return this.getRuleContext(0,Ht)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_subjectUsage}enterRule(e){e.enterSubjectUsage&&e.enterSubjectUsage(this)}exitRule(e){e.exitSubjectUsage&&e.exitSubjectUsage(this)}accept(e){return e.visitSubjectUsage?e.visitSubjectUsage(this):e.visitChildren(this)}},_4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}requirementKind(){return this.getRuleContext(0,N4)}requirementConstraintUsage(){return this.getRuleContext(0,I4)}get ruleIndex(){return l.RULE_requirementConstraintMember}enterRule(e){e.enterRequirementConstraintMember&&e.enterRequirementConstraintMember(this)}exitRule(e){e.exitRequirementConstraintMember&&e.exitRequirementConstraintMember(this)}accept(e){return e.visitRequirementConstraintMember?e.visitRequirementConstraintMember(this):e.visitChildren(this)}},N4=class extends h{constructor(e,t){super(e,t)}ASSUME(){return this.getToken(l.ASSUME,0)}REQUIRE(){return this.getToken(l.REQUIRE,0)}get ruleIndex(){return l.RULE_requirementKind}enterRule(e){e.enterRequirementKind&&e.enterRequirementKind(this)}exitRule(e){e.exitRequirementKind&&e.exitRequirementKind(this)}accept(e){return e.visitRequirementKind?e.visitRequirementKind(this):e.visitChildren(this)}},I4=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}requirementBody(){return this.getRuleContext(0,di)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}calculationBody(){return this.getRuleContext(0,An)}CONSTRAINT(){return this.getToken(l.CONSTRAINT,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_requirementConstraintUsage}enterRule(e){e.enterRequirementConstraintUsage&&e.enterRequirementConstraintUsage(this)}exitRule(e){e.exitRequirementConstraintUsage&&e.exitRequirementConstraintUsage(this)}accept(e){return e.visitRequirementConstraintUsage?e.visitRequirementConstraintUsage(this):e.visitChildren(this)}},U4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}FRAME(){return this.getToken(l.FRAME,0)}framedConcernUsage(){return this.getRuleContext(0,O4)}get ruleIndex(){return l.RULE_framedConcernMember}enterRule(e){e.enterFramedConcernMember&&e.enterFramedConcernMember(this)}exitRule(e){e.exitFramedConcernMember&&e.exitFramedConcernMember(this)}accept(e){return e.visitFramedConcernMember?e.visitFramedConcernMember(this):e.visitChildren(this)}},O4=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}calculationBody(){return this.getRuleContext(0,An)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}calculationUsageDeclaration(){return this.getRuleContext(0,Sy)}CONCERN(){return this.getToken(l.CONCERN,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_framedConcernUsage}enterRule(e){e.enterFramedConcernUsage&&e.enterFramedConcernUsage(this)}exitRule(e){e.exitFramedConcernUsage&&e.exitFramedConcernUsage(this)}accept(e){return e.visitFramedConcernUsage?e.visitFramedConcernUsage(this):e.visitChildren(this)}},eh=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}actorUsage(){return this.getRuleContext(0,D4)}get ruleIndex(){return l.RULE_actorMember}enterRule(e){e.enterActorMember&&e.enterActorMember(this)}exitRule(e){e.exitActorMember&&e.exitActorMember(this)}accept(e){return e.visitActorMember?e.visitActorMember(this):e.visitChildren(this)}},D4=class extends h{constructor(e,t){super(e,t)}ACTOR(){return this.getToken(l.ACTOR,0)}usage(){return this.getRuleContext(0,Ht)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_actorUsage}enterRule(e){e.enterActorUsage&&e.enterActorUsage(this)}exitRule(e){e.exitActorUsage&&e.exitActorUsage(this)}accept(e){return e.visitActorUsage?e.visitActorUsage(this):e.visitChildren(this)}},$4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}stakeholderUsage(){return this.getRuleContext(0,F4)}get ruleIndex(){return l.RULE_stakeholderMember}enterRule(e){e.enterStakeholderMember&&e.enterStakeholderMember(this)}exitRule(e){e.exitStakeholderMember&&e.exitStakeholderMember(this)}accept(e){return e.visitStakeholderMember?e.visitStakeholderMember(this):e.visitChildren(this)}},F4=class extends h{constructor(e,t){super(e,t)}STAKEHOLDER(){return this.getToken(l.STAKEHOLDER,0)}usage(){return this.getRuleContext(0,Ht)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_stakeholderUsage}enterRule(e){e.enterStakeholderUsage&&e.enterStakeholderUsage(this)}exitRule(e){e.exitStakeholderUsage&&e.exitStakeholderUsage(this)}accept(e){return e.visitStakeholderUsage?e.visitStakeholderUsage(this):e.visitChildren(this)}},H4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}REQUIREMENT(){return this.getToken(l.REQUIREMENT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_requirementUsage}enterRule(e){e.enterRequirementUsage&&e.enterRequirementUsage(this)}exitRule(e){e.exitRequirementUsage&&e.exitRequirementUsage(this)}accept(e){return e.visitRequirementUsage?e.visitRequirementUsage(this):e.visitChildren(this)}},z4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}SATISFY(){return this.getToken(l.SATISFY,0)}requirementBody(){return this.getRuleContext(0,di)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}REQUIREMENT(){return this.getToken(l.REQUIREMENT,0)}ASSERT(){return this.getToken(l.ASSERT,0)}valuePart(){return this.getRuleContext(0,St)}BY(){return this.getToken(l.BY,0)}satisfactionSubjectMember(){return this.getRuleContext(0,B4)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usageDeclaration(){return this.getRuleContext(0,Xe)}NOT(){return this.getToken(l.NOT,0)}get ruleIndex(){return l.RULE_satisfyRequirementUsage}enterRule(e){e.enterSatisfyRequirementUsage&&e.enterSatisfyRequirementUsage(this)}exitRule(e){e.exitSatisfyRequirementUsage&&e.exitSatisfyRequirementUsage(this)}accept(e){return e.visitSatisfyRequirementUsage?e.visitSatisfyRequirementUsage(this):e.visitChildren(this)}},B4=class extends h{constructor(e,t){super(e,t)}satisfactionParameter(){return this.getRuleContext(0,j4)}get ruleIndex(){return l.RULE_satisfactionSubjectMember}enterRule(e){e.enterSatisfactionSubjectMember&&e.enterSatisfactionSubjectMember(this)}exitRule(e){e.exitSatisfactionSubjectMember&&e.exitSatisfactionSubjectMember(this)}accept(e){return e.visitSatisfactionSubjectMember?e.visitSatisfactionSubjectMember(this):e.visitChildren(this)}},j4=class extends h{constructor(e,t){super(e,t)}satisfactionFeatureValue(){return this.getRuleContext(0,q4)}get ruleIndex(){return l.RULE_satisfactionParameter}enterRule(e){e.enterSatisfactionParameter&&e.enterSatisfactionParameter(this)}exitRule(e){e.exitSatisfactionParameter&&e.exitSatisfactionParameter(this)}accept(e){return e.visitSatisfactionParameter?e.visitSatisfactionParameter(this):e.visitChildren(this)}},q4=class extends h{constructor(e,t){super(e,t)}satisfactionReferenceExpression(){return this.getRuleContext(0,V4)}get ruleIndex(){return l.RULE_satisfactionFeatureValue}enterRule(e){e.enterSatisfactionFeatureValue&&e.enterSatisfactionFeatureValue(this)}exitRule(e){e.exitSatisfactionFeatureValue&&e.exitSatisfactionFeatureValue(this)}accept(e){return e.visitSatisfactionFeatureValue?e.visitSatisfactionFeatureValue(this):e.visitChildren(this)}},V4=class extends h{constructor(e,t){super(e,t)}featureChainMember(){return this.getRuleContext(0,ha)}get ruleIndex(){return l.RULE_satisfactionReferenceExpression}enterRule(e){e.enterSatisfactionReferenceExpression&&e.enterSatisfactionReferenceExpression(this)}exitRule(e){e.exitSatisfactionReferenceExpression&&e.exitSatisfactionReferenceExpression(this)}accept(e){return e.visitSatisfactionReferenceExpression?e.visitSatisfactionReferenceExpression(this):e.visitChildren(this)}},Z4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}CONCERN(){return this.getToken(l.CONCERN,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_concernDefinition}enterRule(e){e.enterConcernDefinition&&e.enterConcernDefinition(this)}exitRule(e){e.exitConcernDefinition&&e.exitConcernDefinition(this)}accept(e){return e.visitConcernDefinition?e.visitConcernDefinition(this):e.visitChildren(this)}},G4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}CONCERN(){return this.getToken(l.CONCERN,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_concernUsage}enterRule(e){e.enterConcernUsage&&e.enterConcernUsage(this)}exitRule(e){e.exitConcernUsage&&e.exitConcernUsage(this)}accept(e){return e.visitConcernUsage?e.visitConcernUsage(this):e.visitChildren(this)}},W4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}CASE(){return this.getToken(l.CASE,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_caseDefinition}enterRule(e){e.enterCaseDefinition&&e.enterCaseDefinition(this)}exitRule(e){e.exitCaseDefinition&&e.exitCaseDefinition(this)}accept(e){return e.visitCaseDefinition?e.visitCaseDefinition(this):e.visitChildren(this)}},K4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}CASE(){return this.getToken(l.CASE,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_caseUsage}enterRule(e){e.enterCaseUsage&&e.enterCaseUsage(this)}exitRule(e){e.exitCaseUsage&&e.exitCaseUsage(this)}accept(e){return e.visitCaseUsage?e.visitCaseUsage(this):e.visitChildren(this)}},Ai=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}caseBodyItem(e){return e===void 0?this.getRuleContexts(th):this.getRuleContext(e,th)}resultExpressionMember(){return this.getRuleContext(0,Ru)}get ruleIndex(){return l.RULE_caseBody}enterRule(e){e.enterCaseBody&&e.enterCaseBody(this)}exitRule(e){e.exitCaseBody&&e.exitCaseBody(this)}accept(e){return e.visitCaseBody?e.visitCaseBody(this):e.visitChildren(this)}},th=class extends h{constructor(e,t){super(e,t)}actionBodyItem(){return this.getRuleContext(0,fr)}returnParameterMember(){return this.getRuleContext(0,Qd)}subjectMember(){return this.getRuleContext(0,Xd)}actorMember(){return this.getRuleContext(0,eh)}objectiveMember(){return this.getRuleContext(0,J4)}get ruleIndex(){return l.RULE_caseBodyItem}enterRule(e){e.enterCaseBodyItem&&e.enterCaseBodyItem(this)}exitRule(e){e.exitCaseBodyItem&&e.exitCaseBodyItem(this)}accept(e){return e.visitCaseBodyItem?e.visitCaseBodyItem(this):e.visitChildren(this)}},J4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}OBJECTIVE(){return this.getToken(l.OBJECTIVE,0)}objectiveRequirementUsage(){return this.getRuleContext(0,Q4)}get ruleIndex(){return l.RULE_objectiveMember}enterRule(e){e.enterObjectiveMember&&e.enterObjectiveMember(this)}exitRule(e){e.exitObjectiveMember&&e.exitObjectiveMember(this)}accept(e){return e.visitObjectiveMember?e.visitObjectiveMember(this):e.visitChildren(this)}},Q4=class extends h{constructor(e,t){super(e,t)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}requirementBody(){return this.getRuleContext(0,di)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_objectiveRequirementUsage}enterRule(e){e.enterObjectiveRequirementUsage&&e.enterObjectiveRequirementUsage(this)}exitRule(e){e.exitObjectiveRequirementUsage&&e.exitObjectiveRequirementUsage(this)}accept(e){return e.visitObjectiveRequirementUsage?e.visitObjectiveRequirementUsage(this):e.visitChildren(this)}},Y4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}ANALYSIS(){return this.getToken(l.ANALYSIS,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_analysisCaseDefinition}enterRule(e){e.enterAnalysisCaseDefinition&&e.enterAnalysisCaseDefinition(this)}exitRule(e){e.exitAnalysisCaseDefinition&&e.exitAnalysisCaseDefinition(this)}accept(e){return e.visitAnalysisCaseDefinition?e.visitAnalysisCaseDefinition(this):e.visitChildren(this)}},X4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}ANALYSIS(){return this.getToken(l.ANALYSIS,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_analysisCaseUsage}enterRule(e){e.enterAnalysisCaseUsage&&e.enterAnalysisCaseUsage(this)}exitRule(e){e.exitAnalysisCaseUsage&&e.exitAnalysisCaseUsage(this)}accept(e){return e.visitAnalysisCaseUsage?e.visitAnalysisCaseUsage(this):e.visitChildren(this)}},ey=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}VERIFICATION(){return this.getToken(l.VERIFICATION,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_verificationCaseDefinition}enterRule(e){e.enterVerificationCaseDefinition&&e.enterVerificationCaseDefinition(this)}exitRule(e){e.exitVerificationCaseDefinition&&e.exitVerificationCaseDefinition(this)}accept(e){return e.visitVerificationCaseDefinition?e.visitVerificationCaseDefinition(this):e.visitChildren(this)}},ty=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}VERIFICATION(){return this.getToken(l.VERIFICATION,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_verificationCaseUsage}enterRule(e){e.enterVerificationCaseUsage&&e.enterVerificationCaseUsage(this)}exitRule(e){e.exitVerificationCaseUsage&&e.exitVerificationCaseUsage(this)}accept(e){return e.visitVerificationCaseUsage?e.visitVerificationCaseUsage(this):e.visitChildren(this)}},ry=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}VERIFY(){return this.getToken(l.VERIFY,0)}requirementVerificationUsage(){return this.getRuleContext(0,iy)}get ruleIndex(){return l.RULE_requirementVerificationMember}enterRule(e){e.enterRequirementVerificationMember&&e.enterRequirementVerificationMember(this)}exitRule(e){e.exitRequirementVerificationMember&&e.exitRequirementVerificationMember(this)}accept(e){return e.visitRequirementVerificationMember?e.visitRequirementVerificationMember(this):e.visitChildren(this)}},iy=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}requirementBody(){return this.getRuleContext(0,di)}featureSpecialization(e){return e===void 0?this.getRuleContexts(on):this.getRuleContext(e,on)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}REQUIREMENT(){return this.getToken(l.REQUIREMENT,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_requirementVerificationUsage}enterRule(e){e.enterRequirementVerificationUsage&&e.enterRequirementVerificationUsage(this)}exitRule(e){e.exitRequirementVerificationUsage&&e.exitRequirementVerificationUsage(this)}accept(e){return e.visitRequirementVerificationUsage?e.visitRequirementVerificationUsage(this):e.visitChildren(this)}},ny=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}USE(){return this.getToken(l.USE,0)}CASE(){return this.getToken(l.CASE,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_useCaseDefinition}enterRule(e){e.enterUseCaseDefinition&&e.enterUseCaseDefinition(this)}exitRule(e){e.exitUseCaseDefinition&&e.exitUseCaseDefinition(this)}accept(e){return e.visitUseCaseDefinition?e.visitUseCaseDefinition(this):e.visitChildren(this)}},sy=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}USE(){return this.getToken(l.USE,0)}CASE(){return this.getToken(l.CASE,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_useCaseUsage}enterRule(e){e.enterUseCaseUsage&&e.enterUseCaseUsage(this)}exitRule(e){e.exitUseCaseUsage&&e.exitUseCaseUsage(this)}accept(e){return e.visitUseCaseUsage?e.visitUseCaseUsage(this):e.visitChildren(this)}},oy=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}INCLUDE(){return this.getToken(l.INCLUDE,0)}caseBody(){return this.getRuleContext(0,Ai)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}USE(){return this.getToken(l.USE,0)}CASE(){return this.getToken(l.CASE,0)}valuePart(){return this.getRuleContext(0,St)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_includeUseCaseUsage}enterRule(e){e.enterIncludeUseCaseUsage&&e.enterIncludeUseCaseUsage(this)}exitRule(e){e.exitIncludeUseCaseUsage&&e.exitIncludeUseCaseUsage(this)}accept(e){return e.visitIncludeUseCaseUsage?e.visitIncludeUseCaseUsage(this):e.visitChildren(this)}},ay=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}VIEW(){return this.getToken(l.VIEW,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}viewDefinitionBody(){return this.getRuleContext(0,ly)}get ruleIndex(){return l.RULE_viewDefinition}enterRule(e){e.enterViewDefinition&&e.enterViewDefinition(this)}exitRule(e){e.exitViewDefinition&&e.exitViewDefinition(this)}accept(e){return e.visitViewDefinition?e.visitViewDefinition(this):e.visitChildren(this)}},ly=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}viewDefinitionBodyItem(e){return e===void 0?this.getRuleContexts(rh):this.getRuleContext(e,rh)}get ruleIndex(){return l.RULE_viewDefinitionBody}enterRule(e){e.enterViewDefinitionBody&&e.enterViewDefinitionBody(this)}exitRule(e){e.exitViewDefinitionBody&&e.exitViewDefinitionBody(this)}accept(e){return e.visitViewDefinitionBody?e.visitViewDefinitionBody(this):e.visitChildren(this)}},rh=class extends h{constructor(e,t){super(e,t)}definitionBodyItem(){return this.getRuleContext(0,io)}elementFilterMember(){return this.getRuleContext(0,Eu)}viewRenderingMember(){return this.getRuleContext(0,ih)}get ruleIndex(){return l.RULE_viewDefinitionBodyItem}enterRule(e){e.enterViewDefinitionBodyItem&&e.enterViewDefinitionBodyItem(this)}exitRule(e){e.exitViewDefinitionBodyItem&&e.exitViewDefinitionBodyItem(this)}accept(e){return e.visitViewDefinitionBodyItem?e.visitViewDefinitionBodyItem(this):e.visitChildren(this)}},ih=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}RENDER(){return this.getToken(l.RENDER,0)}viewRenderingUsage(){return this.getRuleContext(0,uy)}get ruleIndex(){return l.RULE_viewRenderingMember}enterRule(e){e.enterViewRenderingMember&&e.enterViewRenderingMember(this)}exitRule(e){e.exitViewRenderingMember&&e.exitViewRenderingMember(this)}accept(e){return e.visitViewRenderingMember?e.visitViewRenderingMember(this):e.visitChildren(this)}},uy=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}usageBody(){return this.getRuleContext(0,ki)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usage(){return this.getRuleContext(0,Ht)}RENDERING(){return this.getToken(l.RENDERING,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_viewRenderingUsage}enterRule(e){e.enterViewRenderingUsage&&e.enterViewRenderingUsage(this)}exitRule(e){e.exitViewRenderingUsage&&e.exitViewRenderingUsage(this)}accept(e){return e.visitViewRenderingUsage?e.visitViewRenderingUsage(this):e.visitChildren(this)}},nh=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}VIEW(){return this.getToken(l.VIEW,0)}viewBody(){return this.getRuleContext(0,cy)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_viewUsage}enterRule(e){e.enterViewUsage&&e.enterViewUsage(this)}exitRule(e){e.exitViewUsage&&e.exitViewUsage(this)}accept(e){return e.visitViewUsage?e.visitViewUsage(this):e.visitChildren(this)}},cy=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}viewBodyItem(e){return e===void 0?this.getRuleContexts(sh):this.getRuleContext(e,sh)}get ruleIndex(){return l.RULE_viewBody}enterRule(e){e.enterViewBody&&e.enterViewBody(this)}exitRule(e){e.exitViewBody&&e.exitViewBody(this)}accept(e){return e.visitViewBody?e.visitViewBody(this):e.visitChildren(this)}},sh=class extends h{constructor(e,t){super(e,t)}definitionBodyItem(){return this.getRuleContext(0,io)}elementFilterMember(){return this.getRuleContext(0,Eu)}viewRenderingMember(){return this.getRuleContext(0,ih)}expose(){return this.getRuleContext(0,dy)}get ruleIndex(){return l.RULE_viewBodyItem}enterRule(e){e.enterViewBodyItem&&e.enterViewBodyItem(this)}exitRule(e){e.exitViewBodyItem&&e.exitViewBodyItem(this)}accept(e){return e.visitViewBodyItem?e.visitViewBodyItem(this):e.visitChildren(this)}},dy=class extends h{constructor(e,t){super(e,t)}EXPOSE(){return this.getToken(l.EXPOSE,0)}relationshipBody(){return this.getRuleContext(0,Xt)}membershipExpose(){return this.getRuleContext(0,hy)}namespaceExpose(){return this.getRuleContext(0,py)}get ruleIndex(){return l.RULE_expose}enterRule(e){e.enterExpose&&e.enterExpose(this)}exitRule(e){e.exitExpose&&e.exitExpose(this)}accept(e){return e.visitExpose?e.visitExpose(this):e.visitChildren(this)}},hy=class extends h{constructor(e,t){super(e,t)}membershipImport(){return this.getRuleContext(0,gu)}get ruleIndex(){return l.RULE_membershipExpose}enterRule(e){e.enterMembershipExpose&&e.enterMembershipExpose(this)}exitRule(e){e.exitMembershipExpose&&e.exitMembershipExpose(this)}accept(e){return e.visitMembershipExpose?e.visitMembershipExpose(this):e.visitChildren(this)}},py=class extends h{constructor(e,t){super(e,t)}namespaceImport(){return this.getRuleContext(0,N1)}get ruleIndex(){return l.RULE_namespaceExpose}enterRule(e){e.enterNamespaceExpose&&e.enterNamespaceExpose(this)}exitRule(e){e.exitNamespaceExpose&&e.exitNamespaceExpose(this)}accept(e){return e.visitNamespaceExpose?e.visitNamespaceExpose(this):e.visitChildren(this)}},fy=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}VIEWPOINT(){return this.getToken(l.VIEWPOINT,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_viewpointDefinition}enterRule(e){e.enterViewpointDefinition&&e.enterViewpointDefinition(this)}exitRule(e){e.exitViewpointDefinition&&e.exitViewpointDefinition(this)}accept(e){return e.visitViewpointDefinition?e.visitViewpointDefinition(this):e.visitChildren(this)}},my=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}VIEWPOINT(){return this.getToken(l.VIEWPOINT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_viewpointUsage}enterRule(e){e.enterViewpointUsage&&e.enterViewpointUsage(this)}exitRule(e){e.exitViewpointUsage&&e.exitViewpointUsage(this)}accept(e){return e.visitViewpointUsage?e.visitViewpointUsage(this):e.visitChildren(this)}},gy=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}RENDERING(){return this.getToken(l.RENDERING,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_renderingDefinition}enterRule(e){e.enterRenderingDefinition&&e.enterRenderingDefinition(this)}exitRule(e){e.exitRenderingDefinition&&e.exitRenderingDefinition(this)}accept(e){return e.visitRenderingDefinition?e.visitRenderingDefinition(this):e.visitChildren(this)}},oh=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}RENDERING(){return this.getToken(l.RENDERING,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_renderingUsage}enterRule(e){e.enterRenderingUsage&&e.enterRenderingUsage(this)}exitRule(e){e.exitRenderingUsage&&e.exitRenderingUsage(this)}accept(e){return e.visitRenderingUsage?e.visitRenderingUsage(this):e.visitChildren(this)}},xy=class extends h{constructor(e,t){super(e,t)}METADATA(){return this.getToken(l.METADATA,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}ABSTRACT(){return this.getToken(l.ABSTRACT,0)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_metadataDefinition}enterRule(e){e.enterMetadataDefinition&&e.enterMetadataDefinition(this)}exitRule(e){e.exitMetadataDefinition&&e.exitMetadataDefinition(this)}accept(e){return e.visitMetadataDefinition?e.visitMetadataDefinition(this):e.visitChildren(this)}},ah=class extends h{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}get ruleIndex(){return l.RULE_prefixMetadataUsage}enterRule(e){e.enterPrefixMetadataUsage&&e.enterPrefixMetadataUsage(this)}exitRule(e){e.exitPrefixMetadataUsage&&e.exitPrefixMetadataUsage(this)}accept(e){return e.visitPrefixMetadataUsage?e.visitPrefixMetadataUsage(this):e.visitChildren(this)}},cC=class extends h{constructor(e,t){super(e,t)}metadataUsageDeclaration(){return this.getRuleContext(0,by)}metadataBody(){return this.getRuleContext(0,fa)}AT_SIGN(){return this.getToken(l.AT_SIGN,0)}METADATA(){return this.getToken(l.METADATA,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}ABOUT(){return this.getToken(l.ABOUT,0)}annotation(e){return e===void 0?this.getRuleContexts(is):this.getRuleContext(e,is)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_metadataUsage}enterRule(e){e.enterMetadataUsage&&e.enterMetadataUsage(this)}exitRule(e){e.exitMetadataUsage&&e.exitMetadataUsage(this)}accept(e){return e.visitMetadataUsage?e.visitMetadataUsage(this):e.visitChildren(this)}},by=class extends h{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}COLON(){return this.getToken(l.COLON,0)}TYPED(){return this.getToken(l.TYPED,0)}BY(){return this.getToken(l.BY,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_metadataUsageDeclaration}enterRule(e){e.enterMetadataUsageDeclaration&&e.enterMetadataUsageDeclaration(this)}exitRule(e){e.exitMetadataUsageDeclaration&&e.exitMetadataUsageDeclaration(this)}accept(e){return e.visitMetadataUsageDeclaration?e.visitMetadataUsageDeclaration(this):e.visitChildren(this)}},lh=class extends h{constructor(e,t){super(e,t)}metadataBodyUsage(){return this.getRuleContext(0,yy)}get ruleIndex(){return l.RULE_metadataBodyUsageMember}enterRule(e){e.enterMetadataBodyUsageMember&&e.enterMetadataBodyUsageMember(this)}exitRule(e){e.exitMetadataBodyUsageMember&&e.exitMetadataBodyUsageMember(this)}accept(e){return e.visitMetadataBodyUsageMember?e.visitMetadataBodyUsageMember(this):e.visitChildren(this)}},yy=class extends h{constructor(e,t){super(e,t)}ownedRedefinition(){return this.getRuleContext(0,eo)}metadataBody(){return this.getRuleContext(0,fa)}REF(){return this.getToken(l.REF,0)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}valuePart(){return this.getRuleContext(0,St)}COLON_GT_GT(){return this.getToken(l.COLON_GT_GT,0)}REDEFINES(){return this.getToken(l.REDEFINES,0)}get ruleIndex(){return l.RULE_metadataBodyUsage}enterRule(e){e.enterMetadataBodyUsage&&e.enterMetadataBodyUsage(this)}exitRule(e){e.exitMetadataBodyUsage&&e.exitMetadataBodyUsage(this)}accept(e){return e.visitMetadataBodyUsage?e.visitMetadataBodyUsage(this):e.visitChildren(this)}},vy=class extends h{constructor(e,t){super(e,t)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}basicDefinitionPrefix(){return this.getRuleContext(0,ga)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_extendedDefinition}enterRule(e){e.enterExtendedDefinition&&e.enterExtendedDefinition(this)}exitRule(e){e.exitExtendedDefinition&&e.exitExtendedDefinition(this)}accept(e){return e.visitExtendedDefinition?e.visitExtendedDefinition(this):e.visitChildren(this)}},Ry=class extends h{constructor(e,t){super(e,t)}unextendedUsagePrefix(){return this.getRuleContext(0,fd)}usage(){return this.getRuleContext(0,Ht)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_extendedUsage}enterRule(e){e.enterExtendedUsage&&e.enterExtendedUsage(this)}exitRule(e){e.exitExtendedUsage&&e.exitExtendedUsage(this)}accept(e){return e.visitExtendedUsage?e.visitExtendedUsage(this):e.visitChildren(this)}},Cy=class extends h{constructor(e,t){super(e,t)}membershipImport(){return this.getRuleContext(0,gu)}namespaceImportDirect(){return this.getRuleContext(0,Ey)}get ruleIndex(){return l.RULE_filterPackageImportDeclaration}enterRule(e){e.enterFilterPackageImportDeclaration&&e.enterFilterPackageImportDeclaration(this)}exitRule(e){e.exitFilterPackageImportDeclaration&&e.exitFilterPackageImportDeclaration(this)}accept(e){return e.visitFilterPackageImportDeclaration?e.visitFilterPackageImportDeclaration(this):e.visitChildren(this)}},Ey=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}COLON_COLON(e){return e===void 0?this.getTokens(l.COLON_COLON):this.getToken(l.COLON_COLON,e)}STAR(){return this.getToken(l.STAR,0)}STAR_STAR(){return this.getToken(l.STAR_STAR,0)}get ruleIndex(){return l.RULE_namespaceImportDirect}enterRule(e){e.enterNamespaceImportDirect&&e.enterNamespaceImportDirect(this)}exitRule(e){e.exitNamespaceImportDirect&&e.exitNamespaceImportDirect(this)}accept(e){return e.visitNamespaceImportDirect?e.visitNamespaceImportDirect(this):e.visitChildren(this)}},Sy=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_calculationUsageDeclaration}enterRule(e){e.enterCalculationUsageDeclaration&&e.enterCalculationUsageDeclaration(this)}exitRule(e){e.exitCalculationUsageDeclaration&&e.exitCalculationUsageDeclaration(this)}accept(e){return e.visitCalculationUsageDeclaration?e.visitCalculationUsageDeclaration(this):e.visitChildren(this)}},uh=class extends h{constructor(e,t){super(e,t)}get ruleIndex(){return l.RULE_emptyActionUsage_}enterRule(e){e.enterEmptyActionUsage_&&e.enterEmptyActionUsage_(this)}exitRule(e){e.exitEmptyActionUsage_&&e.exitEmptyActionUsage_(this)}accept(e){return e.visitEmptyActionUsage_?e.visitEmptyActionUsage_(this):e.visitChildren(this)}},ch=class extends h{constructor(e,t){super(e,t)}get ruleIndex(){return l.RULE_emptyFeature_}enterRule(e){e.enterEmptyFeature_&&e.enterEmptyFeature_(this)}exitRule(e){e.exitEmptyFeature_&&e.exitEmptyFeature_(this)}accept(e){return e.visitEmptyFeature_?e.visitEmptyFeature_(this):e.visitChildren(this)}},Py=class extends h{constructor(e,t){super(e,t)}get ruleIndex(){return l.RULE_emptyMultiplicity_}enterRule(e){e.enterEmptyMultiplicity_&&e.enterEmptyMultiplicity_(this)}exitRule(e){e.exitEmptyMultiplicity_&&e.exitEmptyMultiplicity_(this)}accept(e){return e.visitEmptyMultiplicity_?e.visitEmptyMultiplicity_(this):e.visitChildren(this)}},Ly=class extends h{constructor(e,t){super(e,t)}get ruleIndex(){return l.RULE_emptyUsage_}enterRule(e){e.enterEmptyUsage_&&e.enterEmptyUsage_(this)}exitRule(e){e.exitEmptyUsage_&&e.exitEmptyUsage_(this)}accept(e){return e.visitEmptyUsage_?e.visitEmptyUsage_(this):e.visitChildren(this)}},Ty=class extends h{constructor(e,t){super(e,t)}IDENTIFIER(){return this.getToken(l.IDENTIFIER,0)}get ruleIndex(){return l.RULE_filterPackageImport}enterRule(e){e.enterFilterPackageImport&&e.enterFilterPackageImport(this)}exitRule(e){e.exitFilterPackageImport&&e.exitFilterPackageImport(this)}accept(e){return e.visitFilterPackageImport?e.visitFilterPackageImport(this):e.visitChildren(this)}},wy=class extends h{constructor(e,t){super(e,t)}IDENTIFIER(){return this.getToken(l.IDENTIFIER,0)}get ruleIndex(){return l.RULE_nonFeatureChainPrimaryExpression}enterRule(e){e.enterNonFeatureChainPrimaryExpression&&e.enterNonFeatureChainPrimaryExpression(this)}exitRule(e){e.exitNonFeatureChainPrimaryExpression&&e.exitNonFeatureChainPrimaryExpression(this)}accept(e){return e.visitNonFeatureChainPrimaryExpression?e.visitNonFeatureChainPrimaryExpression(this):e.visitChildren(this)}},ky=class extends h{constructor(e,t){super(e,t)}get ruleIndex(){return l.RULE_portConjugation}enterRule(e){e.enterPortConjugation&&e.enterPortConjugation(this)}exitRule(e){e.exitPortConjugation&&e.exitPortConjugation(this)}accept(e){return e.visitPortConjugation?e.visitPortConjugation(this):e.visitChildren(this)}};var Ay=class extends lu{errors=[];syntaxError(e,t,i,n,s,o){let a=t,u=a?.text?.length??1;this.errors.push({line:i-1,column:n,message:s,offendingSymbol:a,length:u})}getErrors(){return this.errors}hasErrors(){return this.errors.length>0}};function dC(r){let e=au.fromString(r),t=new Eg(e),i=new Cg(t),n=Date.now();i.fill();let s=Date.now()-n,o=new l(i),a=new Ay;t.removeErrorListeners(),o.removeErrorListeners(),t.addErrorListener(a),o.addErrorListener(a);let u=null,c=Date.now();try{u=o.rootNamespace()}catch{}let d=Date.now()-c;return{tree:u,tokenStream:i,parser:o,lexer:t,errors:a.getErrors(),timing:{lexMs:s,parseMs:d}}}var dn=jh(ZO());var GO;function WO(){return GO?Array.from(GO.keys()):[]}function DQ(r){return{line:(r.line??1)-1,character:r.column??0}}function KO(r){let e=DQ(r),t=r.text?.length??1;return{start:e,end:{line:e.line,character:e.character+t}}}function JO(r){let e=r.start,t=r.stop??r.start;if(!e)return{start:{line:0,character:0},end:{line:0,character:0}};let i={line:(e.line??1)-1,character:e.column??0},n=t?{line:(t.line??1)-1,character:(t.column??0)+(t.text?.length??1)}:{line:i.line,character:i.character+1};return{start:i,end:n}}var Lh=class{constructor(e,t=null){this.id=e;this.parent=t}symbols=new Map;define(e){this.symbols.set(e.name,e)}lookupLocal(e){return this.symbols.get(e)}resolve(e){let t=this.symbols.get(e);return t||this.parent?.resolve(e)}resolveQualified(e){let t=e.split("::");if(t.length===1)return this.resolve(t[0]);let i=this.resolve(t[0]);if(i)return i}getLocalSymbols(){return Array.from(this.symbols.values())}getAllVisibleSymbols(){let e=new Map,t=this;for(;t;){for(let[i,n]of t.symbols)e.has(i)||e.set(i,n);t=t.parent}return Array.from(e.values())}};var Ua=class{symbols=new Map;symbolsByUri=new Map;globalScope;constructor(){this.globalScope=new Lh("__global__")}build(e,t){this.clearUri(e),t.tree&&this.walkTree(t.tree,e,this.globalScope,"")}getSymbol(e){return this.symbols.get(e)}findByName(e){let t=[];for(let i of this.symbols.values())i.name===e&&t.push(i);return t}getSymbolsForUri(e){return this.symbolsByUri.get(e)??[]}getAllSymbols(){return Array.from(this.symbols.values())}getGlobalScope(){return this.globalScope}findSymbolAtPosition(e,t,i){let n=this.getSymbolsForUri(e),s,o=1/0;for(let a of n){let u=a.selectionRange;if(t>=u.start.line&&t<=u.end.line&&(t>u.start.line||i>=u.start.character)&&(t<u.end.line||i<=u.end.character)){let c=(u.end.line-u.start.line)*1e4+(u.end.character-u.start.character);c<o&&(s=a,o=c)}}return s}findReferences(e){let t=[];for(let i of this.symbols.values())(i.name===e||i.typeNames.includes(e))&&t.push(i);return t}clearUri(e){let t=this.symbolsByUri.get(e);if(t)for(let i of t)this.symbols.delete(i.qualifiedName);this.symbolsByUri.set(e,[])}walkTree(e,t,i,n){let s=this.getRuleName(e),o=this.tryExtractSymbol(e,t,s,n),a=i;o&&(this.registerSymbol(o,t,i),a=new Lh(o.qualifiedName,i));for(let u=0;u<e.getChildCount();u++){let c=e.getChild(u);c instanceof h&&this.walkTree(c,t,a,o?.qualifiedName??n)}}registerSymbol(e,t,i){this.symbols.set(e.qualifiedName,e);let n=this.symbolsByUri.get(t)??[];n.push(e),this.symbolsByUri.set(t,n),i.define(e)}getRuleName(e){let t=e.constructor.name;return t.endsWith("Context")?t.slice(0,-7):t}tryExtractSymbol(e,t,i,n){let s=this.inferKind(i,e);if(s===void 0)return;let o=this.extractName(e);if(!o)return;let a=n?`${n}::${o}`:o,u=JO(e),c=this.extractNameRange(e)??u,d=this.extractTypeNames(e),f=d[0],x=this.extractDocumentation(e),{multiplicity:y,multiplicityRange:E}=En(s)?this.extractMultiplicity(e):{};return{name:o,kind:s,qualifiedName:a,range:u,selectionRange:c,uri:t,typeName:f,typeNames:d,documentation:x,parentQualifiedName:n||void 0,children:[],multiplicity:y,multiplicityRange:E}}inferKind(e,t){let i=e.toLowerCase();if(i==="package"||i==="librarypackage")return"package";if(i==="partdefinition")return"part def";if(i==="attributedefinition")return"attribute def";if(i==="portdefinition")return"port def";if(i==="connectiondefinition")return"connection def";if(i==="interfacedefinition")return"interface def";if(i==="actiondefinition")return"action def";if(i==="statedefinition")return"state def";if(i==="requirementdefinition")return"requirement def";if(i==="constraintdefinition")return"constraint def";if(i==="itemdefinition")return"item def";if(i==="allocationdefinition")return"allocation def";if(i==="usecasedefinition")return"use case def";if(i==="enumerationdefinition")return"enum def";if(i==="calculationdefinition"||i==="calcdefinition")return"calc def";if(i==="viewdefinition")return"view def";if(i==="viewpointdefinition")return"viewpoint def";if(i==="metadatadefinition")return"metadata def";if(i==="partusage")return"part";if(i==="attributeusage")return"attribute";if(i==="portusage")return"port";if(i==="connectionusage")return"connection";if(i==="actionusage")return"action";if(i==="stateusage")return"state";if(i==="requirementusage")return"requirement";if(i==="constraintusage")return"constraint";if(i==="itemusage")return"item";if(i==="allocationusage")return"allocation";if(i==="usecaseusage")return"use case";if(i==="includeusecaseusage")return"include use case";if(i==="actorusage")return"actor";if(i==="subjectusage")return"subject";if(i==="referenceusage")return"ref";if(i==="interfaceusage")return"interface";if(i==="performactionusage")return"perform action";if(i==="exhibitstateusage")return"exhibit state";if(i==="transitionusage")return"transition";if(i==="occurrencedefinition")return"occurrence def";if(i==="occurrenceusage")return"occurrence";if(i==="renderingdefinition")return"rendering def";if(i==="viewusage")return"view";if(i==="viewpointusage")return"viewpoint";if(i==="aliasmember")return"alias"}extractName(e){for(let t=0;t<e.getChildCount();t++){let i=e.getChild(t);if(i instanceof Ur){let n=i.symbol;if(this.isIdentifierToken(n))return n.text??void 0}if(i instanceof h){let n=this.getRuleName(i);if(n.toLowerCase().includes("identification")||n.toLowerCase().includes("declarationname")||n.toLowerCase().includes("qualifiedname")||n.toLowerCase()==="name"){let s=this.extractTextFromSubtree(i);if(s)return s}}}for(let t=0;t<Math.min(e.getChildCount(),5);t++){let i=e.getChild(t);if(i instanceof h){let n=this.extractName(i);if(n)return n}}}extractNameRange(e){for(let t=0;t<e.getChildCount();t++){let i=e.getChild(t);if(i instanceof Ur&&this.isIdentifierToken(i.symbol))return KO(i.symbol);if(i instanceof h){let n=this.extractNameRange(i);if(n)return n}}}extractTypeNames(e){let t=[];if(this.collectTypeNamesFromTree(e,t,0),t.length>0)return t;let i=e.getText(),n=i.indexOf("{"),s=n>=0?i.substring(0,n):i;s=s.replace(/(connect|bind|first|then|flow|allocate|assign|accept|send|decide|merge|join|fork)\b.*/i,"");let o=s.match(/(?:specializes|:>|:>>)\s*([A-Za-z_][\w:]*(?:\s*,\s*[A-Za-z_][\w:]*)*)/);if(o){for(let c of o[1].split(",")){let d=c.trim().match(/^([A-Za-z_][\w:]*)/);d&&t.push(d[1])}return t}let a=s.match(/definedby\s*([A-Za-z_][\w:]*(?:\s*,\s*[A-Za-z_][\w:]*)*)/);if(a){for(let c of a[1].split(",")){let d=c.trim().match(/^([A-Za-z_][\w:]*)/);d&&t.push(d[1])}return t}let u=s.match(/:(?![:>])\s*([A-Za-z_][\w:]*(?:\s*,\s*[A-Za-z_][\w:]*)*)/);if(u){for(let c of u[1].split(",")){let d=c.trim().match(/^([A-Za-z_][\w:]*)/);d&&t.push(d[1])}return t}return t}collectTypeNamesFromTree(e,t,i){if(!(i>6))for(let n=0;n<e.getChildCount();n++){let s=e.getChild(n);if(!(s instanceof h))continue;let o=this.getRuleName(s).toLowerCase();if(o.includes("specialization")||o.includes("subclassification")||o.includes("typing")||o.includes("conjugation")||o.includes("disjoining")){let u=s.getText().replace(/^(specializes|:>|:>>|:\s|definedby|subsets|redefines|references|conjugates|disjoints)/i,"");for(let c of u.split(",")){let d=c.match(/([A-Za-z_][\w:]*)/);d&&t.push(d[1])}}else(o.includes("declaration")||o.includes("featurespecialization")||o.includes("typings")||o.includes("subsettings")||o.includes("redefinitions")||o.includes("usagecompletion")||o==="usage"||o==="definition")&&this.collectTypeNamesFromTree(s,t,i+1)}}extractDocumentation(e){for(let t=0;t<e.getChildCount();t++){let i=e.getChild(t);if(i instanceof h){let n=this.getRuleName(i).toLowerCase();if(n.includes("comment")||n.includes("doc")||n.includes("documentation")){let o=i.getText();if(o){let a=o;return a.startsWith("doc")&&(a=a.slice(3)),a.startsWith("comment")&&(a=a.slice(7)),a=a.replace(/^\/\*\s*/,"").replace(/\s*\*\/$/,""),a=a.replace(/^\/\/\s*/,""),a.trim()||o}return o??void 0}let s=this.extractDocumentation(i);if(s)return s}}}extractMultiplicity(e){let t=this.findMultiplicityBounds(e);if(!t)return{};let i=t.multiplicityExpressionMember();if(!i||i.length===0)return{};let n=[];for(let u of i){let c=u.getText()?.trim();c&&n.push(c)}if(n.length===0)return{};let s,o,a;if(n.length===1)if(a=n[0],n[0]==="*")s=0,o="*";else{let u=parseInt(n[0],10);if(isNaN(u))return{multiplicity:a};s=u,o=u}else{if(a=`${n[0]}..${n[1]}`,s=parseInt(n[0],10),isNaN(s))return{multiplicity:a};if(n[1]==="*")o="*";else if(o=parseInt(n[1],10),isNaN(o))return{multiplicity:a}}return{multiplicity:a,multiplicityRange:{lower:s,upper:o}}}findMultiplicityBounds(e){if(e.constructor.name==="MultiplicityBoundsContext")return e;for(let i=0;i<e.getChildCount();i++){let n=e.getChild(i);if(n instanceof h){let s=this.findMultiplicityBounds(n);if(s)return s}}}isIdentifierToken(e){let t=e.text;return t?/^[a-zA-Z_]/.test(t)&&!this.isKeyword(t):!1}isKeyword(e){return new Set(["about","abstract","accept","action","actor","after","alias","all","allocate","allocation","analysis","and","as","assert","assign","assume","attribute","bind","binding","bool","by","calc","case","comment","concern","connect","connection","constraint","decide","def","default","defined","dependency","derived","do","doc","else","end","entry","enum","event","exhibit","exit","expose","false","feature","filter","first","flow","for","fork","frame","from","hastype","if","implies","import","in","include","individual","inout","interface","istype","item","join","language","library","locale","merge","message","meta","metadata","multiplicity","namespace","nonunique","not","null","objective","occurrence","of","or","ordered","out","package","parallel","part","perform","port","private","protected","public","readonly","redefines","ref","references","render","rendering","rep","require","requirement","return","satisfy","send","snapshot","specializes","stakeholder","state","subject","subsets","succession","then","timeslice","to","transition","true","type","use","variant","variation","verification","verify","view","viewpoint","when","while","xor"]).has(e)}extractTextFromSubtree(e){let t=[];for(let i=0;i<e.getChildCount();i++){let n=e.getChild(i);if(n instanceof Ur){let s=n.symbol.text;s&&this.isIdentifierToken(n.symbol)&&t.push(s)}else if(n instanceof h){let s=this.extractTextFromSubtree(n);s&&t.push(s)}}return t.length>0?t.join("::"):void 0}};var QO=new Set(["Boolean","String","Integer","Real","Natural","Positive","Complex","Number","Rational","ScalarValues","DataFunctions","Anything","Nothing","Object","Occurrence","Base","Objects","Occurrences","Items","Parts","Ports","Actions","States","Connections","Interfaces","Allocations","Requirements","Constraints","Calculations","Cases","Flows","Transfers","Performances","TransitionPerformances","ISQ","SI","USCustomaryUnits","Quantities","MeasurementReferences","ScalarValues","LengthValue","MassValue","DurationValue","TimeValue","ElectricCurrentValue","ThermodynamicTemperatureValue","TemperatureValue","AmountOfSubstanceValue","LuminousIntensityValue","AreaValue","VolumeValue","SpeedValue","VelocityValue","AccelerationValue","ForceValue","EnergyValue","PowerValue","PressureValue","TorqueValue","MomentOfForceValue","AngularVelocityValue","FrequencyValue","DensityValue","MassFlowRateValue","VolumeFlowRateValue","LengthUnit","MassUnit","DurationUnit","TimeUnit"]),$Q=/^[A-Z][a-zA-Z]*Value$/,uc=class r{constructor(e){this.documentManager=e}validate(e){let t=this.documentManager.get(e);if(!t)return[];let i=new Ua;i.build(e,t);let n=this.documentManager.getText(e)??"",s=i.getSymbolsForUri(e),o=new Set(i.getAllSymbols().map(c=>c.name)),a=new Set(WO()),u=[];for(let c of s)u.push(...this.checkUnresolvedType(c,o,a),...this.checkInvalidMultiplicity(c),...this.checkEmptyEnum(c,s),...this.checkNamingConvention(c),...this.checkMissingDocumentation(c));return u.push(...this.checkDuplicateDefinitions(s)),u.push(...this.checkUnusedDefinitions(s)),u}checkUnresolvedType(e,t,i){if(!e.typeName)return[];let n=e.typeName.split("::")[0];if(t.has(e.typeName)||t.has(n)||QO.has(e.typeName)||QO.has(n)||i.has(n)||$Q.test(e.typeName))return[];let s=e.multiplicityRange&&e.multiplicityRange.lower>=1,o=s?dn.DiagnosticSeverity.Error:dn.DiagnosticSeverity.Warning,a=`Type '${e.typeName}' is not defined in the current document or standard library`;if(s){let u=e.multiplicity??"1";a+=` (feature '${e.name}' requires multiplicity [${u}])`}return[{severity:o,range:e.selectionRange,message:a,source:"sysml",code:"unresolved-type"}]}checkInvalidMultiplicity(e){if(!e.multiplicityRange||!e.multiplicity)return[];let{lower:t,upper:i}=e.multiplicityRange;return typeof i=="number"&&t>i?[{severity:dn.DiagnosticSeverity.Error,range:e.selectionRange,message:`Invalid multiplicity [${e.multiplicity}]: lower bound (${t}) exceeds upper bound (${i})`,source:"sysml",code:"invalid-multiplicity"}]:t<0?[{severity:dn.DiagnosticSeverity.Error,range:e.selectionRange,message:`Invalid multiplicity [${e.multiplicity}]: lower bound cannot be negative`,source:"sysml",code:"invalid-multiplicity"}]:[]}checkEmptyEnum(e,t){return e.kind!=="enum def"?[]:t.filter(s=>s.parentQualifiedName===e.qualifiedName).some(s=>s.kind==="enum"||s.kind==="attribute")?[]:[{severity:dn.DiagnosticSeverity.Information,range:e.selectionRange,message:`Enumeration '${e.name}' has no enum values defined`,source:"sysml",code:"empty-enum"}]}checkNamingConvention(e){if(!e.name)return[];if(e.kind==="package"||e.kind==="import"||e.kind==="comment"||e.kind==="doc"||e.kind==="alias"||e.kind==="unknown")return[];if(Qt(e.kind)){let t=e.name[0];if(t===t.toLowerCase()&&t!==t.toUpperCase())return[{severity:dn.DiagnosticSeverity.Hint,range:e.selectionRange,message:`Definition '${e.name}' should use PascalCase`,source:"sysml",code:"naming-convention"}]}else{let t=e.name[0];if(t===t.toUpperCase()&&t!==t.toLowerCase())return[{severity:dn.DiagnosticSeverity.Hint,range:e.selectionRange,message:`Usage '${e.name}' should use camelCase`,source:"sysml",code:"naming-convention"}]}return[]}checkMissingDocumentation(e){return Qt(e.kind)?e.documentation?[]:[{severity:dn.DiagnosticSeverity.Information,range:e.selectionRange,message:`Definition '${e.name}' has no documentation`,source:"sysml",code:"missing-doc"}]:[]}checkUnusedDefinitions(e){let t=e.filter(s=>Qt(s.kind)),i=new Set(e.filter(s=>!Qt(s.kind)&&s.kind!=="package").flatMap(s=>s.typeNames)),n=[];for(let s of t)i.has(s.name)||n.push({severity:dn.DiagnosticSeverity.Hint,range:s.selectionRange,message:`Definition '${s.name}' is not referenced by any usage in this document`,source:"sysml",code:"unused-definition"});return n}static validateSymbols(e,t){let i=[],n=Object.create(r.prototype);for(let s of e)i.push(...n.checkUnresolvedType(s,t,new Set),...n.checkInvalidMultiplicity(s),...n.checkEmptyEnum(s,e));return i.push(...n.checkDuplicateDefinitions(e)),i}checkDuplicateDefinitions(e){let t=[],i=new Map;for(let n of e){if(!Qt(n.kind))continue;let s=n.parentQualifiedName??"__root__",o=i.get(s);o||(o=new Map,i.set(s,o));let a=o.get(n.name);a||(a=[],o.set(n.name,a)),a.push(n)}for(let n of i.values())for(let[s,o]of n)if(o.length>1)for(let a of o)t.push({severity:dn.DiagnosticSeverity.Warning,range:a.selectionRange,message:`Duplicate definition: '${s}' is defined ${o.length} times in the same scope`,source:"sysml",code:"duplicate-definition"});return t}};var Gv=class{symbolTable=new Ua;loadedDocuments=new Map};function Wv(r){return{name:r.name,kind:r.kind,qualifiedName:r.qualifiedName,...r.typeNames.length>0?{type:r.typeNames.join(", ")}:{},...r.documentation?{documentation:r.documentation}:{},...r.parentQualifiedName?{parent:r.parentQualifiedName}:{},...r.children.length>0?{children:r.children}:{},location:{uri:r.uri,range:r.range}}}function cS(r){return{line:r.line+1,column:r.column+1,message:r.message,length:r.length}}function Kv(r,e,t){let i=dC(e);return r.symbolTable.build(t,i),r.loadedDocuments.set(t,e),{errors:i.errors,symbolCount:r.symbolTable.getSymbolsForUri(t).length,timingMs:{lex:i.timing.lexMs,parse:i.timing.parseMs}}}function XO(r,e,t){let i=t??"untitled.sysml",{errors:n,symbolCount:s,timingMs:o}=Kv(r,e,i),a={uri:i,symbolCount:s,errorCount:n.length,timing:o};n.length>0&&(a.errors=n.map(cS));let c=r.symbolTable.getSymbolsForUri(i).filter(d=>!d.parentQualifiedName).map(d=>`${d.kind} ${d.qualifiedName}`);return c.length>0&&(a.topLevelElements=c),a}function eD(r,e){let t=e.uri??"preview.sysml",{errors:i}=Kv(r,e.code,t),n=r.symbolTable.getSymbolsForUri(t),s=new Set(r.symbolTable.getAllSymbols().map(d=>d.name)),o=uc.validateSymbols(n,s),a=n;if(e.focus){let d=e.focus,f=new Set,x=new Map;for(let E of n)if(E.parentQualifiedName){let w=x.get(E.parentQualifiedName)??[];w.push(E),x.set(E.parentQualifiedName,w)}let y=n.filter(E=>E.name===d||E.qualifiedName===d||E.qualifiedName.endsWith(`::${d}`));for(let E of y){f.add(E.qualifiedName);let w=x.get(E.qualifiedName)??[];for(let A of w)f.add(A.qualifiedName);E.parentQualifiedName&&f.add(E.parentQualifiedName);let $=[...E.typeNames];for(let A of w)$.push(...A.typeNames);for(let A of $){let S=n.find(v=>v.name===A||v.qualifiedName===A);if(S){f.add(S.qualifiedName);for(let v of x.get(S.qualifiedName)??[])f.add(v.qualifiedName)}}}f.size>0&&(a=n.filter(E=>f.has(E.qualifiedName)))}let u=vM(a,n,e.diagramType),c={diagram:u.diagram,diagramType:u.diagramType,description:u.description,elementCount:u.elementCount,errors:i.map(cS)};if(e.originalCode){let d="preview-original.sysml",f=dC(e.originalCode),x=new Ua;x.build(d,f);let y=x.getSymbolsForUri(d),E=RM(y,n);c.diff={added:E.added.map(w=>`${w.kind} ${w.qualifiedName}`),changed:E.changed.map(w=>`${w.kind} ${w.qualifiedName}`),removed:E.removed,unchangedCount:E.unchanged.length}}return o.length>0&&(c.semanticIssues=o.map(d=>({line:d.range.start.line+1,column:d.range.start.character+1,message:d.message,severity:d.severity===1?"error":d.severity===2?"warning":"info"}))),c}function tD(r,e,t){let i=t??"untitled.sysml",{errors:n}=Kv(r,e,i),s=r.symbolTable.getSymbolsForUri(i),o=new Set(r.symbolTable.getAllSymbols().map(c=>c.name)),a=uc.validateSymbols(s,o),u=a.map(c=>({line:c.range.start.line+1,column:c.range.start.character+1,message:c.message,severity:c.severity===1?"error":c.severity===2?"warning":c.severity===3?"info":"hint",code:c.code}));return{valid:n.length===0&&a.filter(c=>c.severity===1).length===0,syntaxErrors:n.map(cS),semanticIssues:u,totalIssues:n.length+a.length}}function rD(r,e){let t=e??"untitled.sysml",i=r.symbolTable.getSymbolsForUri(t),n=new Set(r.symbolTable.getAllSymbols().map(a=>a.name)),s=uc.validateSymbols(i,n),o={};for(let a of s){let u=String(a.code??"unknown");o[u]=(o[u]??0)+1}return{uri:t,diagnostics:s.map(a=>({line:a.range.start.line+1,column:a.range.start.character+1,message:a.message,severity:a.severity===1?"error":a.severity===2?"warning":a.severity===3?"info":"hint",code:a.code})),summary:o}}function iD(r,e){let t=e.uri?r.symbolTable.getSymbolsForUri(e.uri):r.symbolTable.getAllSymbols();return e.kind&&(t=t.filter(i=>i.kind.toLowerCase()===e.kind.toLowerCase())),e.definitionsOnly&&(t=t.filter(i=>Qt(i.kind))),e.usagesOnly&&(t=t.filter(i=>En(i.kind))),{count:t.length,symbols:t.map(Wv)}}function nD(r,e){let t=r.symbolTable.getSymbol(e);if(t)return Wv(t);let i=r.symbolTable.findByName(e);return i.length===0?{found:!1,message:`No symbol found with name "${e}"`}:{found:!0,count:i.length,symbols:i.map(Wv)}}function sD(r,e){let t=r.symbolTable.findReferences(e);return{name:e,referenceCount:t.length,references:t.map(Wv)}}function oD(r,e){let i=r.symbolTable.getSymbol(e)??r.symbolTable.findByName(e)[0];if(!i)return{found:!1,message:`No symbol "${e}" found`};let n=[],s=i.parentQualifiedName;for(;s;){let a=r.symbolTable.getSymbol(s);if(!a)break;n.unshift({name:a.name,kind:a.kind,qualifiedName:a.qualifiedName}),s=a.parentQualifiedName}let o=i.children.map(a=>r.symbolTable.getSymbol(a)).filter(a=>a!==void 0).map(a=>({name:a.name,kind:a.kind,qualifiedName:a.qualifiedName,...a.typeNames.length>0?{type:a.typeNames.join(", ")}:{}}));return{element:{name:i.name,kind:i.kind,qualifiedName:i.qualifiedName,...i.typeNames.length>0?{type:i.typeNames.join(", ")}:{}},ancestors:n,children:o}}function aD(r){let e=r.symbolTable.getAllSymbols(),t={};for(let n of e)t[n.kind]=(t[n.kind]??0)+1;let i=Object.entries(t).sort(([,n],[,s])=>s-n);return{totalSymbols:e.length,loadedDocuments:Array.from(r.loadedDocuments.keys()),elementsByKind:Object.fromEntries(i),definitions:e.filter(n=>Qt(n.kind)).length,usages:e.filter(n=>En(n.kind)).length}}function lD(r,e){let t=e?r.symbolTable.getSymbolsForUri(e):r.symbolTable.getAllSymbols();return xM(t)}function FQ(){let r=Object.values(Yo);return{definitions:r.filter(e=>Qt(e)),usages:r.filter(e=>En(e)),other:r.filter(e=>!Qt(e)&&!En(e)),total:r.length}}var YO=["about","abstract","accept","action","actor","after","alias","all","allocate","allocation","analysis","and","as","assert","assign","assume","attribute","bind","binding","bool","by","calc","case","comment","concern","connect","connection","constraint","decide","def","default","defined","dependency","derived","do","doc","else","end","entry","enum","event","exhibit","exit","expose","false","feature","filter","first","flow","for","fork","frame","from","hastype","if","implies","import","in","include","individual","inout","interface","istype","item","join","language","library","locale","merge","message","meta","metadata","multiplicity","namespace","nonunique","not","null","objective","occurrence","of","or","ordered","out","package","parallel","part","perform","port","private","protected","public","readonly","redefines","ref","references","render","rendering","rep","require","requirement","return","satisfy","send","snapshot","specializes","stakeholder","state","subject","subsets","succession","then","timeslice","to","transition","true","type","use","variant","variation","verification","verify","view","viewpoint","when","while","xor"];function uD(){return FQ()}function cD(){return{keywords:YO,count:YO.length}}function dD(){return"# SysML v2 Grammar Overview\n\n## Element Categories\n\n### Definitions (Types)\nDefinitions declare reusable types:\n- `part def` \u2014 structural element type\n- `attribute def` \u2014 value type\n- `port def` \u2014 interface point type\n- `connection def` \u2014 connection type\n- `interface def` \u2014 interface type\n- `action def` \u2014 behavior type\n- `state def` \u2014 state machine type\n- `requirement def` \u2014 requirement type\n- `constraint def` \u2014 constraint type\n- `item def` \u2014 general item type\n- `enum def` \u2014 enumeration type\n- `calc def` \u2014 calculation type\n- `use case def` \u2014 use case type\n- `allocation def` \u2014 allocation type\n- `view def` / `viewpoint def` \u2014 viewpoint types\n\n### Usages (Instances)\nUsages create instances of definitions:\n- `part` \u2014 structural instance\n- `attribute` \u2014 value instance\n- `port` \u2014 port instance\n- `action` \u2014 action step\n- `state` \u2014 state instance\n- `requirement` \u2014 requirement instance\n- `item` \u2014 item instance\n\n## Specialisation Syntax\n- `part car : Vehicle` \u2014 `car` specialises `Vehicle`\n- `part car :> baseVehicle` \u2014 `car` subsets `baseVehicle`\n- `part car :>> specificVehicle` \u2014 `car` redefines `specificVehicle`\n\n## Packages & Namespaces\n```sysml\npackage VehicleModel {\n part def Vehicle { ... }\n part car : Vehicle;\n}\n```\n\n## Documentation\n```sysml\npart def Vehicle {\n doc /* A general vehicle definition */\n attribute mass : Real;\n}\n```\n\n## Unrestricted Names\nNames with spaces use single quotes: `part 'Main Assembly' : Assembly;`\n"}function hD(r,e){let{errors:t,symbolCount:i}=Kv(r,e,"review.sysml"),n=r.symbolTable.getSymbolsForUri("review.sysml"),s=n.filter(u=>Qt(u.kind)),o=n.filter(u=>En(u.kind)),a=[`Parsed: ${i} symbols, ${t.length} syntax errors`,`Definitions: ${s.map(u=>`${u.kind} ${u.name}`).join(", ")||"none"}`,`Usages: ${o.map(u=>`${u.kind} ${u.name}`).join(", ")||"none"}`];return t.length>0&&a.push(`Errors: ${t.map(u=>`line ${u.line+1}: ${u.message}`).join("; ")}`),[{role:"user",content:{type:"text",text:`Please review the following SysML v2 model for correctness, completeness, and best practices.
|
|
106
|
+
`&&e++;return e}return 1}get inputStream(){return this.i<this.tokens.length?this.tokens[this.i].inputStream:this.eofToken!==null?this.eofToken.inputStream:this.tokens.length>0?this.tokens[this.tokens.length-1].inputStream:null}getSourceName(){if(this.sourceName!==null)return this.sourceName;let r=this.inputStream;return r!==null?r.getSourceName():"List"}},gK=class extends h{static{k(this,"InterpreterRuleContext")}#e;constructor(r,e,t){super(e,t),this.#e=r}get ruleIndex(){return this.#e}},xK=class{static{k(this,"TraceListener")}parser;constructor(r){this.parser=r}enterEveryRule(r){console.log("enter "+this.parser.ruleNames[r.ruleIndex]+", LT(1)="+this.parser.inputStream?.LT(1)?.text)}visitTerminal(r){console.log("consume "+r.getSymbol()+" rule "+this.parser.ruleNames[this.parser.context.ruleIndex])}exitEveryRule(r){console.log("exit "+this.parser.ruleNames[r.ruleIndex]+", LT(1)="+this.parser.inputStream?.LT(1)?.text)}visitErrorNode(r){}},F9=class extends l_{static{k(this,"Parser")}printer=null;buildParseTrees=!0;errorHandler=new v_;context=null;precedenceStack=[];parseListeners=null;syntaxErrors=0;matchedEOF=!1;tracer=null;bypassAltsAtnCache=null;#e;constructor(r){super(),this.precedenceStack.push(0),this.syntaxErrors=0,this.#e=r}reset(r=!0){r&&this.inputStream.seek(0),this.errorHandler.reset(this),this.context=null,this.syntaxErrors=0,this.matchedEOF=!1,this.setTrace(!1),this.precedenceStack=[],this.precedenceStack.push(0),this.interpreter&&this.interpreter.reset()}match(r){let e=this.getCurrentToken();return e.type===r?(r===B.EOF&&(this.matchedEOF=!0),this.errorHandler.reportMatch(this),this.consume()):(e=this.errorHandler.recoverInline(this),this.buildParseTrees&&e.tokenIndex===-1&&this.context.addErrorNode(this.createErrorNode(this.context,e))),e}matchWildcard(){let r=this.getCurrentToken();return r.type>0?(this.errorHandler.reportMatch(this),this.consume()):(r=this.errorHandler.recoverInline(this),this.buildParseTrees&&r.tokenIndex===-1&&this.context.addErrorNode(this.createErrorNode(this.context,r))),r}getParseListeners(){return this.parseListeners??[]}addParseListener(r){if(r===null)throw new Error("listener");this.parseListeners===null&&(this.parseListeners=[]),this.parseListeners.push(r)}removeParseListener(r){if(this.parseListeners!==null&&r!==null){let e=this.parseListeners.indexOf(r);e>=0&&this.parseListeners.splice(e,1),this.parseListeners.length===0&&(this.parseListeners=null)}}removeParseListeners(){this.parseListeners=null}triggerEnterRuleEvent(){if(this.parseListeners!==null){let r=this.context;this.parseListeners.forEach(e=>{e.enterEveryRule(r),r.enterRule(e)})}}triggerExitRuleEvent(){if(this.parseListeners!==null){let r=this.context;this.parseListeners.slice(0).reverse().forEach(e=>{r.exitRule(e),e.exitEveryRule(r)})}}getTokenFactory(){return this.inputStream.tokenSource.tokenFactory}setTokenFactory(r){this.inputStream.tokenSource.tokenFactory=r}compileParseTreePattern(r,e,t){if(!t&&this.tokenStream!==null){let n=this.tokenStream.tokenSource;n instanceof wn&&(t=n)}if(!t)throw new Error("Parser can't discover a lexer to use");return new RK(t,this).compile(r,e)}getATNWithBypassAlts(){let r=this.serializedATN;if(r===null)throw new Error("The current parser does not support an ATN with bypass alternatives.");if(this.bypassAltsAtnCache!==null)return this.bypassAltsAtnCache;let e={readOnly:!1,verifyATN:!0,generateRuleBypassTransitions:!0};return this.bypassAltsAtnCache=new Ks(e).deserialize(r),this.bypassAltsAtnCache}get numberOfSyntaxErrors(){return this.syntaxErrors}get inputStream(){return this.#e}set inputStream(r){this.tokenStream=r}get tokenStream(){return this.#e}set tokenStream(r){this.reset(!1),this.#e=r}getCurrentToken(){return this.inputStream.LT(1)}notifyErrorListeners(r,e,t){e=e??null,t=t??null,e===null&&(e=this.getCurrentToken()),this.syntaxErrors+=1;let i=e.line,n=e.column;this.errorListenerDispatch.syntaxError(this,e,i,n,r,t)}consume(){let r=this.getCurrentToken();r.type!==B.EOF&&this.tokenStream.consume();let e=this.parseListeners!==null&&this.parseListeners.length>0;if(this.buildParseTrees||e){let t;this.errorHandler.inErrorRecoveryMode(this)?t=this.context.addErrorNode(this.createErrorNode(this.context,r)):t=this.context.addTokenNode(r),e&&this.parseListeners.forEach(i=>{t instanceof P1?i.visitErrorNode(t):i.visitTerminal(t)})}return r}addContextToParseTree(){this.context?.parent&&this.context.parent.addChild(this.context)}enterRule(r,e,t){this.state=e,this.context=r,this.context.start=this.inputStream.LT(1),this.buildParseTrees&&this.addContextToParseTree(),this.triggerEnterRuleEvent()}exitRule(){this.matchedEOF?this.context.stop=this.inputStream.LT(1):this.context.stop=this.inputStream.LT(-1),this.triggerExitRuleEvent(),this.state=this.context.invokingState,this.context=this.context.parent}enterOuterAlt(r,e){r.setAltNumber(e),this.buildParseTrees&&this.context!==r&&this.context?.parent&&(this.context.parent.removeLastChild(),this.context.parent.addChild(r)),this.context=r}getPrecedence(){return this.precedenceStack.length===0?-1:this.precedenceStack[this.precedenceStack.length-1]}enterRecursionRule(r,e,t,i){this.state=e,this.precedenceStack.push(i),this.context=r,this.context.start=this.inputStream.LT(1),this.triggerEnterRuleEvent()}pushNewRecursionContext(r,e,t){let i=this.context;i.parent=r,i.invokingState=e,i.stop=this.inputStream.LT(-1),this.context=r,this.context.start=i.start,this.buildParseTrees&&this.context.addChild(i),this.triggerEnterRuleEvent()}unrollRecursionContexts(r){this.precedenceStack.pop(),this.context.stop=this.inputStream.LT(-1);let e=this.context,t=this.getParseListeners();if(t!==null&&t.length>0)for(;this.context!==r;)this.triggerExitRuleEvent(),this.context=this.context.parent;else this.context=r;e.parent=r,this.buildParseTrees&&r!==null&&r.addChild(e)}getInvokingContext(r){let e=this.context;for(;e!==null;){if(e.ruleIndex===r)return e;e=e.parent}return null}precpred(r,e){return e>=this.precedenceStack[this.precedenceStack.length-1]}isExpectedToken(r){let e=this.interpreter.atn,t=this.context,i=e.states[this.state],n=e.nextTokens(i);if(n.contains(r))return!0;if(!n.contains(B.EPSILON))return!1;for(;t!==null&&t.invokingState>=0&&n.contains(B.EPSILON);){let o=e.states[t.invokingState].transitions[0];if(n=e.nextTokens(o.followState),n.contains(r))return!0;t=t.parent}return!!(n.contains(B.EPSILON)&&r===B.EOF)}getExpectedTokens(){return this.interpreter.atn.getExpectedTokens(this.state,this.context)}getExpectedTokensWithinCurrentRule(){let r=this.interpreter.atn,e=r.states[this.state];return r.nextTokens(e)}getRuleIndex(r){return this.getRuleIndexMap().get(r)??-1}getRuleInvocationStack(r){r=r??null,r===null&&(r=this.context);let e=[];for(;r!==null;){let t=r.ruleIndex;t<0?e.push("n/a"):e.push(this.ruleNames[t]),r=r.parent}return e}getDFAStrings(){return this.interpreter.decisionToDFA.toString()}dumpDFA(){let r=!1;for(let e of this.interpreter.decisionToDFA)e.length>0&&(r&&console.log(),this.printer&&(this.printer.println("Decision "+e.decision+":"),this.printer.print(e.toString(this.vocabulary))),r=!0)}getSourceName(){return this.inputStream.getSourceName()}getParseInfo(){let r=this.interpreter;if(r instanceof pg)return new eK(r)}setProfile(r){let e=this.interpreter,t=e.predictionMode;if(r)e instanceof pg||(this.interpreter=new pg(this));else if(e instanceof pg){let i=e.sharedContextCache;if(i){let n=new T1(this,this.atn,e.decisionToDFA,i);this.interpreter=n}}this.interpreter.predictionMode=t}setTrace(r){r?(this.tracer!==null&&this.removeParseListener(this.tracer),this.tracer=new xK(this),this.addParseListener(this.tracer)):(this.removeParseListener(this.tracer),this.tracer=null)}createTerminalNode(r,e){return new Ur(e)}createErrorNode(r,e){return new P1(e)}},bK=class extends F9{static{k(this,"ParserInterpreter")}rootContext;overrideDecisionRoot=null;parentContextStack=[];overrideDecisionAlt=-1;overrideDecisionReached=!1;decisionToDFA;sharedContextCache=new oa;pushRecursionContextStates;#e=-1;#t=-1;#i;#r;#n;#s;constructor(r,e,t,i,n){super(n),this.#i=r,this.#r=i,this.#n=t.slice(0),this.#s=e,this.pushRecursionContextStates=new Tn;for(let s of i.states)s instanceof Zs&&s.precedenceRuleDecision&&this.pushRecursionContextStates.set(s.stateNumber);this.decisionToDFA=i.decisionToState.map((s,o)=>new rs(s,o)),this.interpreter=new T1(this,i,this.decisionToDFA,this.sharedContextCache)}reset(){super.reset(),this.overrideDecisionReached=!1,this.overrideDecisionRoot=null}get atn(){return this.#r}get vocabulary(){return this.#s}get ruleNames(){return this.#n}get grammarFileName(){return this.#i}get atnState(){return this.#r.states[this.state]}parse(r){let e=this.#r.ruleToStartState[r];for(this.rootContext=this.createInterpreterRuleContext(null,fe.INVALID_STATE_NUMBER,r),e.isLeftRecursiveRule?this.enterRecursionRule(this.rootContext,e.stateNumber,r,0):this.enterRule(this.rootContext,e.stateNumber,r);;){let t=this.atnState;switch(t.constructor.stateType){case fe.RULE_STOP:{if(this.context?.isEmpty())if(e.isLeftRecursiveRule){let i=this.context,n=this.parentContextStack.pop();return this.unrollRecursionContexts(n[0]),i}else return this.exitRule(),this.rootContext;this.visitRuleStopState(t);break}default:{try{this.visitState(t)}catch(i){if(i instanceof p)this.state=this.#r.ruleToStopState[t.ruleIndex].stateNumber,this.errorHandler.reportError(this,i),this.recover(i);else throw i}break}}}}addDecisionOverride(r,e,t){this.#e=r,this.#t=e,this.overrideDecisionAlt=t}get overrideDecision(){return this.#e}get overrideDecisionInputIndex(){return this.#t}enterRecursionRule(r,e,t,i){this.parentContextStack.push([this.context,r.invokingState]),super.enterRecursionRule(r,e,t,i)}get serializedATN(){throw new Error("The ParserInterpreter does not support the serializedATN property.")}visitState(r){let e=1;r instanceof sa&&(e=this.visitDecisionState(r));let t=r.transitions[e-1];switch(t.transitionType){case se.EPSILON:if(this.pushRecursionContextStates.get(r.stateNumber)&&t.target.constructor.stateType!==fe.LOOP_END){let u=this.parentContextStack[this.parentContextStack.length-1],c=this.createInterpreterRuleContext(u[0],u[1],this.context.ruleIndex);this.pushNewRecursionContext(c,this.#r.ruleToStartState[r.ruleIndex].stateNumber,this.context.ruleIndex)}break;case se.ATOM:this.match(t.label.minElement);break;case se.RANGE:case se.SET:case se.NOT_SET:t.matches(this.inputStream.LA(1),B.MIN_USER_TOKEN_TYPE,65535)||this.recoverInline(),this.matchWildcard();break;case se.WILDCARD:this.matchWildcard();break;case se.RULE:let i=t.target,n=i.ruleIndex,s=this.createInterpreterRuleContext(this.context,r.stateNumber,n);i.isLeftRecursiveRule?this.enterRecursionRule(s,i.stateNumber,n,t.precedence):this.enterRule(s,t.target.stateNumber,n);break;case se.PREDICATE:let o=t;if(!this.sempred(this.context,o.ruleIndex,o.predIndex))throw new L1(this);break;case se.ACTION:let a=t;this.action(this.context,a.ruleIndex,a.actionIndex);break;case se.PRECEDENCE:if(!this.precpred(this.context,t.precedence)){let u=t.precedence;throw new L1(this,`precpred(_ctx, ${u})`)}break;default:throw new Error("UnsupportedOperationException: Unrecognized ATN transition type.")}this.state=t.target.stateNumber}visitDecisionState(r){let e=1;if(r.transitions.length>1){this.errorHandler.sync(this);let t=r.decision;t===this.#e&&this.inputStream.index===this.#t&&!this.overrideDecisionReached?(e=this.overrideDecisionAlt,this.overrideDecisionReached=!0):e=this.interpreter.adaptivePredict(this.inputStream,t,this.context)}return e}createInterpreterRuleContext(r,e,t){return new gK(t,r,e)}visitRuleStopState(r){if(this.#r.ruleToStartState[r.ruleIndex].isLeftRecursiveRule){let[i,n]=this.parentContextStack.pop();this.unrollRecursionContexts(i),this.state=n}else this.exitRule();let t=this.#r.states[this.state].transitions[0];this.state=t.followState.stateNumber}recover(r){let e=this.inputStream.index;if(this.errorHandler.recover(this,r),this.inputStream.index===e){let t=r.offendingToken;if(!t)throw new Error("Expected exception to have an offending token");let i=t.tokenSource,n=i?.inputStream??null,s=[i,n];if(r instanceof S1){let o=r.getExpectedTokens();if(!o)throw new Error("Expected the exception to provide expected tokens");let a=B.INVALID_TYPE;o.length!==0&&(a=o.minElement);let u=this.getTokenFactory().create(s,a,t.text,B.DEFAULT_CHANNEL,-1,-1,t.line,t.column);this.context.addErrorNode(this.createErrorNode(this.context,u))}else{let o=this.getTokenFactory().create(s,B.INVALID_TYPE,t.text,B.DEFAULT_CHANNEL,-1,-1,t.line,t.column);this.context.addErrorNode(this.createErrorNode(this.context,o))}}}recoverInline(){return this.errorHandler.recoverInline(this)}},MM=class extends Map{static{k(this,"MultiMap")}map(r,e){let t=this.get(r);t||(t=new Array,this.set(r,t)),t.push(e)}getPairs(){let r=new Array;for(let e of this.keys()){let t=this.get(e)??[];for(let i of t)r.push([e,i])}return r}toString(){let r=[];return this.forEach((e,t)=>{r.push(`${t}=[${e.join(", ")}]`)}),`{${r.join(", ")}}`}},yK=class extends Error{static{k(this,"CannotInvokeStartRuleError")}constructor(r){super(),this.cause=r}},_M=class{static{k(this,"RuleTagToken")}label;ruleName;bypassTokenType;constructor(r,e,t){this.ruleName=r,this.bypassTokenType=e,this.label=t}get channel(){return B.DEFAULT_CHANNEL}get text(){return this.label!==void 0?"<"+this.label+":"+this.ruleName+">":"<"+this.ruleName+">"}get type(){return this.bypassTokenType}get line(){return 0}get column(){return-1}get tokenIndex(){return-1}get start(){return-1}get stop(){return-1}get tokenSource(){return null}get inputStream(){return null}toString(){return this.ruleName+":"+this.bypassTokenType}},vK=class extends Error{static{k(this,"StartRuleDoesNotConsumeFullPatternError")}},NM=class extends y_{static{k(this,"TagChunk")}tag;label;constructor(...r){let e,t;if(r.length===1?t=r[0]:(e=r[0],t=r[1]),super(),!t)throw new Error("tag cannot be null or empty");this.label=e,this.tag=t}toString(){return this.label!==void 0?this.label+":"+this.tag:this.tag}},eu=class extends y_{static{k(this,"TextChunk")}text;constructor(r){super(),this.text=r}toString(){return"'"+this.text+"'"}},IM=class extends yg{static{k(this,"TokenTagToken")}tokenName;label;constructor(r,e,t){super({type:e,source:yg.EMPTY_SOURCE}),this.tokenName=r,this.label=t}get text(){return this.label!==void 0?"<"+this.label+":"+this.tokenName+">":"<"+this.tokenName+">"}toString(){return this.tokenName+":"+this.type}},RK=class{static{k(this,"ParseTreePatternMatcher")}start="<";stop=">";escape="\\";lexer;parser;constructor(r,e){this.lexer=r,this.parser=e}setDelimiters(r,e,t){if(r===null||r.length===0)throw new Error("start cannot be null or empty");if(e===null||e.length===0)throw new Error("stop cannot be null or empty");this.start=r,this.stop=e,this.escape=t}matches(...r){switch(r.length){case 2:{let[e,t]=r,i=new MM;return this.matchImpl(e,t.getPatternTree(),i)===null}case 3:{let[e,t,i]=r,n=this.compile(t,i);return this.matches(e,n)}default:throw new Error("Invalid number of arguments")}}match(...r){switch(r.length){case 2:{let[e,t]=r,i=new MM,n=this.matchImpl(e,t.getPatternTree(),i);return new dK(e,t,i,n)}case 3:{let[e,t,i]=r,n=this.compile(t,i);return this.match(e,n)}default:throw new Error("Invalid number of arguments")}}compile(r,e){let t=this.tokenize(r),i=new mK(t),n=new Cg(i),s=new bK(this.parser.grammarFileName,this.parser.vocabulary,this.parser.ruleNames,this.parser.getATNWithBypassAlts(),n);s.removeErrorListeners();let o=null;try{s.errorHandler=new fK,o=s.parse(e)}catch(a){throw a instanceof N9?a.cause:a instanceof p?a:a instanceof Error?new yK(a):a}if(n.LA(1)!==B.EOF)throw new vK;return new hK(this,r,e,o)}getLexer(){return this.lexer}getParser(){return this.parser}tokenize(r){let e=this.split(r),t=new Array;for(let i of e)if(i instanceof NM){let n=i,s=n.tag[0];if(s===s.toUpperCase()){let o=this.parser.getTokenType(n.tag);if(o===B.INVALID_TYPE)throw new Error("Unknown token "+n.tag+" in pattern: "+r);let a=new IM(n.tag,o,n.label);t.push(a)}else if(s===s.toLowerCase()){let o=this.parser.getRuleIndex(n.tag);if(o===-1)throw new Error("Unknown rule "+n.tag+" in pattern: "+r);let a=this.parser.getATNWithBypassAlts().ruleToTokenType[o];t.push(new _M(n.tag,a,n.label))}else throw new Error("invalid tag: "+n.tag+" in pattern: "+r)}else{let n=i,s=au.fromString(n.text);this.lexer.inputStream=s;let o=this.lexer.nextToken();for(;o.type!==B.EOF;)t.push(o),o=this.lexer.nextToken()}return t}split(r){let e=0,t=r.length,i=new Array,n=new Array,s=new Array;for(;e<t;)e===r.indexOf(this.escape+this.start,e)?e+=this.escape.length+this.start.length:e===r.indexOf(this.escape+this.stop,e)?e+=this.escape.length+this.stop.length:e===r.indexOf(this.start,e)?(n.push(e),e+=this.start.length):e===r.indexOf(this.stop,e)?(s.push(e),e+=this.stop.length):e++;if(n.length>s.length)throw new Error("unterminated tag in pattern: "+r);if(n.length<s.length)throw new Error("missing start tag in pattern: "+r);let o=n.length;for(let a=0;a<o;a++)if(n[a]>=s[a])throw new Error("tag delimiters out of order in pattern: "+r);if(o===0){let a=r.substring(0,t);i.push(new eu(a))}if(o>0&&n[0]>0){let a=r.substring(0,n[0]);i.push(new eu(a))}for(let a=0;a<o;a++){let u=r.substring(n[a]+this.start.length,s[a]),c=u,d,f=u.indexOf(":");if(f>=0&&(d=u.substring(0,f),c=u.substring(f+1,u.length)),i.push(new NM(d,c)),a+1<o){let x=r.substring(s[a]+this.stop.length,n[a+1]);i.push(new eu(x))}}if(o>0){let a=s[o-1]+this.stop.length;if(a<t){let u=r.substring(a,t);i.push(new eu(u))}}for(let a=0;a<i.length;a++){let u=i[a];if(u instanceof eu){let c=u,d=c.text.replaceAll(this.escape,"");d.length<c.text.length&&(i[a]=new eu(d))}}return i}matchImpl(r,e,t){if(r instanceof Ur&&e instanceof Ur){let i=r,n=e,s;if(i.getSymbol().type===n.getSymbol().type)if(n.getSymbol()instanceof IM){let o=n.getSymbol();t.map(o.tokenName,r),o.label!==void 0&&t.map(o.label,r)}else i.getText()===n.getText()||s||(s=i);else s||(s=i);return s}if(r instanceof h&&e instanceof h){let i,n=this.getRuleTagToken(e);if(n)return r.ruleIndex===e.ruleIndex?(t.map(n.ruleName,r),n.label&&t.map(n.label,r)):i||(i=r),i;if(r.getChildCount()!==e.getChildCount())return i||(i=r),i;let s=r.getChildCount();for(let o=0;o<s;o++){let a=this.matchImpl(r.getChild(o),e.getChild(o),t);if(a)return a}return i}return r}getRuleTagToken(r){if(r instanceof h&&r.getChildCount()===1&&r.getChild(0)instanceof Ur){let e=r.getChild(0);if(e.getSymbol()instanceof _M)return e.getSymbol()}}},Rae=class extends lu{static{k(this,"DiagnosticErrorListener")}exactOnly;constructor(r){super(),this.exactOnly=r??!0}reportAmbiguity=k((r,e,t,i,n,s,o)=>{if(this.exactOnly&&!n)return;let a=this.getDecisionDescription(r,e),u=this.getConflictingAlts(s,o),c=r.tokenStream?.getTextFromInterval(it.of(t,i)),d=`reportAmbiguity d=${a}: ambigAlts=${u}, input='${c}'`;r.notifyErrorListeners(d,null,null)},"reportAmbiguity");reportAttemptingFullContext=k((r,e,t,i,n,s)=>{let o=this.getDecisionDescription(r,e),a=r.tokenStream?.getTextFromInterval(it.of(t,i)),u=`reportAttemptingFullContext d=${o}, input='${a}'`;r.notifyErrorListeners(u,null,null)},"reportAttemptingFullContext");reportContextSensitivity=k((r,e,t,i,n,s)=>{let o=this.getDecisionDescription(r,e),a=r.tokenStream?.getTextFromInterval(it.of(t,i)),u=`reportContextSensitivity d=${o}, input='${a}'`;r.notifyErrorListeners(u,null,null)},"reportContextSensitivity");getDecisionDescription=k((r,e)=>{let t=e.decision,i=e.atnStartState.ruleIndex,n=r.ruleNames;if(i<0||i>=n.length)return t.toString();let s=n[i];return s.length===0?t.toString():`${t} (${s})`},"getDecisionDescription");getConflictingAlts=k((r,e)=>{if(r)return r;let t=new Tn;for(let i=0;i<e.configs.length;i++)t.set(e.configs[i].alt);return t},"getConflictingAlts")},Cae=class extends wn{static{k(this,"LexerInterpreter")}decisionToDFA;sharedContextCache=new oa;#e;#t;#i;#r;#n;#s;constructor(r,e,t,i,n,s,o){if(super(o),s.grammarType!==Ce.LEXER)throw new Error("IllegalArgumentException: The ATN must be a lexer ATN.");this.#e=r,this.#t=s,this.#i=t.slice(0),this.#r=i.slice(0),this.#n=n.slice(0),this.#s=e,this.decisionToDFA=s.decisionToState.map((a,u)=>new rs(a,u)),this.interpreter=new ou(this,s,this.decisionToDFA,this.sharedContextCache)}get atn(){return this.#t}get grammarFileName(){return this.#e}get ruleNames(){return this.#i}get channelNames(){return this.#r}get modeNames(){return this.#n}get vocabulary(){return this.#s}get serializedATN(){throw new Error("The LexerInterpreter does not support the serializedATN property.")}},Eae=class ea{static{k(this,"RuntimeMetaData")}static VERSION="4.13.1";static getRuntimeVersion(){return ea.VERSION}static checkVersion(e,t){let i=ea.VERSION,n=!1,s=!1;n=i!==e&&ea.getMajorMinorVersion(i)!==ea.getMajorMinorVersion(e),s=i!==t&&ea.getMajorMinorVersion(i)!==ea.getMajorMinorVersion(t),n&&console.error(`ANTLR Tool version ${e} used for code generation does not match the current runtime version ${i}`),s&&console.error(`ANTLR Runtime version ${t} used for parser compilation does not match the current runtime version ${i}`)}static getMajorMinorVersion(e){let t=e.indexOf("."),i=t>=0?e.indexOf(".",t+1):-1,n=e.indexOf("-"),s=e.length;return i>=0&&(s=Math.min(s,i)),n>=0&&(s=Math.min(s,n)),e.substring(0,s)}},Sae=class ta{static{k(this,"TokenStreamRewriter")}static DEFAULT_PROGRAM_NAME="default";static PROGRAM_INIT_SIZE=100;static MIN_TOKEN_INDEX=0;tokens;programs=new Map;lastRewriteTokenIndexes;constructor(e){this.tokens=e}getTokenStream(){return this.tokens}insertAfter(e,t,i=ta.DEFAULT_PROGRAM_NAME){let n;typeof e=="number"?n=e:n=e.tokenIndex;let s=this.getProgram(i),o=new UM(this.tokens,n,s.length,t);s.push(o)}insertBefore(e,t,i=ta.DEFAULT_PROGRAM_NAME){let n;typeof e=="number"?n=e:n=e.tokenIndex;let s=this.getProgram(i),o=new ru(this.tokens,n,s.length,t);s.push(o)}replaceSingle(e,t,i=ta.DEFAULT_PROGRAM_NAME){this.replace(e,e,t,i)}replace(e,t,i,n=ta.DEFAULT_PROGRAM_NAME){if(typeof e!="number"&&(e=e.tokenIndex),typeof t!="number"&&(t=t.tokenIndex),e>t||e<0||t<0||t>=this.tokens.size)throw new RangeError(`replace: range invalid: ${e}..${t}(size=${this.tokens.size})`);let s=this.getProgram(n),o=new fg(this.tokens,e,t,s.length,i);s.push(o)}delete(e,t,i=ta.DEFAULT_PROGRAM_NAME){t==null&&(t=e),this.replace(e,t,null,i)}getProgram(e){let t=this.programs.get(e);return t==null&&(t=this.initializeProgram(e)),t}initializeProgram(e){let t=[];return this.programs.set(e,t),t}getText(e,t=ta.DEFAULT_PROGRAM_NAME){let i;e instanceof it?i=e:i=new it(0,this.tokens.size-1),typeof e=="string"&&(t=e);let n=this.programs.get(t),s=i.start,o=i.stop;if(o>this.tokens.size-1&&(o=this.tokens.size-1),s<0&&(s=0),n==null||n.length===0)return this.tokens.getTextFromInterval(new it(s,o));let a=[],u=this.reduceToSingleOperationPerIndex(n),c=s;for(;c<=o&&c<this.tokens.size;){let d=u.get(c);u.delete(c);let f=this.tokens.get(c);d==null?(f.type!==B.EOF&&a.push(String(f.text)),c++):c=d.execute(a)}if(o===this.tokens.size-1)for(let d of u.values())d&&d.index>=this.tokens.size-1&&a.push(String(d.text));return a.join("")}reduceToSingleOperationPerIndex(e){for(let i=0;i<e.length;i++){let n=e[i];if(n==null||!(n instanceof fg))continue;let s=n,o=this.getKindOfOps(e,ru,i);for(let u of o)u.index===s.index?(e[u.instructionIndex]=null,s.text=String(u.text)+(s.text!=null?s.text.toString():"")):u.index>s.index&&u.index<=s.lastIndex&&(e[u.instructionIndex]=null);let a=this.getKindOfOps(e,fg,i);for(let u of a){if(u.index>=s.index&&u.lastIndex<=s.lastIndex){e[u.instructionIndex]=null;continue}let c=u.lastIndex<s.index||u.index>s.lastIndex;if(u.text==null&&s.text==null&&!c)e[u.instructionIndex]=null,s.index=Math.min(u.index,s.index),s.lastIndex=Math.max(u.lastIndex,s.lastIndex);else if(!c)throw new Error(`replace op boundaries of ${s} overlap with previous ${u}`)}}for(let i=0;i<e.length;i++){let n=e[i];if(n==null||!(n instanceof ru))continue;let s=n,o=this.getKindOfOps(e,ru,i);for(let u of o)u.index===s.index&&(u instanceof UM?(s.text=this.catOpText(u.text,s.text),e[u.instructionIndex]=null):u instanceof ru&&(s.text=this.catOpText(s.text,u.text),e[u.instructionIndex]=null));let a=this.getKindOfOps(e,fg,i);for(let u of a){if(s.index===u.index){u.text=this.catOpText(s.text,u.text),e[i]=null;continue}if(s.index>=u.index&&s.index<=u.lastIndex)throw new Error(`insert op ${s} within boundaries of previous ${u}`)}}let t=new Map;for(let i of e)if(i!=null){if(t.get(i.index)!=null)throw new Error("should only be one op per index");t.set(i.index,i)}return t}catOpText(e,t){let i="",n="";return e!=null&&(i=e.toString()),t!=null&&(n=t.toString()),i+n}getKindOfOps(e,t,i){return e.slice(0,i).filter(n=>n&&n instanceof t)}},R_=class{static{k(this,"RewriteOperation")}instructionIndex;index;text;tokens;constructor(r,e,t,i){this.tokens=r,this.instructionIndex=t,this.index=e,this.text=i===void 0?"":i}execute(r){return this.index}toString(){return"<RewriteOperation@"+this.tokens.get(this.index)+':"'+this.text+'">'}},ru=class extends R_{static{k(this,"InsertBeforeOp")}constructor(r,e,t,i){super(r,e,t,i)}execute(r){return this.text&&r.push(this.text.toString()),this.tokens.get(this.index).type!==B.EOF&&r.push(String(this.tokens.get(this.index).text)),this.index+1}toString(){return"<InsertBeforeOp@"+this.tokens.get(this.index)+':"'+this.text+'">'}},UM=class extends ru{static{k(this,"InsertAfterOp")}constructor(r,e,t,i){super(r,e+1,t,i)}toString(){return"<InsertAfterOp@"+this.tokens.get(this.index)+':"'+this.text+'">'}},fg=class extends R_{static{k(this,"ReplaceOp")}lastIndex;constructor(r,e,t,i,n){super(r,e,i,n),this.lastIndex=t}execute(r){return this.text&&r.push(this.text.toString()),this.lastIndex+1}toString(){return this.text==null?"<DeleteOp@"+this.tokens.get(this.index)+".."+this.tokens.get(this.lastIndex)+">":"<ReplaceOp@"+this.tokens.get(this.index)+".."+this.tokens.get(this.lastIndex)+':"'+this.text+'">'}},Pae=class{static{k(this,"UnbufferedTokenStream")}tokenSource;tokens;n;p=0;numMarkers=0;lastToken;lastTokenBufferStart;currentTokenIndex=0;constructor(r,e){this.tokenSource=r,e=e??256,this.tokens=new Array(e),this.n=0,this.fill(1)}get(r){let e=this.getBufferStartIndex();if(r<e||r>=e+this.n)throw new Error("get("+r+") outside buffer: "+e+".."+(e+this.n));return this.tokens[r-e]}LT(r){if(r===-1)return this.lastToken;this.sync(r);let e=this.p+r-1;if(e<0)throw new Error("LT("+r+") gives negative index");return e>=this.n?this.tokens[this.n-1]:this.tokens[e]}LA(r){return this.LT(r).type}getText(){return""}getTextFromContext(r){return this.getTextFromInterval(r.getSourceInterval())}getTextFromInterval(r){let e=this.getBufferStartIndex(),t=e+this.tokens.length-1,i=r.start,n=r.stop;if(i<e||n>t)throw new Error("interval "+r+" not in token buffer window: "+e+".."+t);let s=i-e,o=n-e,a="";for(let u=s;u<=o;u++){let c=this.tokens[u];a+=c.text}return a}getTextFromRange(r,e){return this.getTextFromInterval(it.of(r.tokenIndex,e.tokenIndex))}consume(){if(this.LA(1)===B.EOF)throw new Error("cannot consume EOF");this.lastToken=this.tokens[this.p],this.p===this.n-1&&this.numMarkers===0&&(this.n=0,this.p=-1,this.lastTokenBufferStart=this.lastToken),this.p++,this.currentTokenIndex++,this.sync(1)}mark(){this.numMarkers===0&&(this.lastTokenBufferStart=this.lastToken);let r=-this.numMarkers-1;return this.numMarkers++,r}release(r){let e=-this.numMarkers;if(r!==e)throw new Error("release() called with an invalid marker.");this.numMarkers--,this.numMarkers===0&&(this.p>0&&(this.tokens.copyWithin(0,this.p,this.n),this.n=this.n-this.p,this.p=0),this.lastTokenBufferStart=this.lastToken)}get index(){return this.currentTokenIndex}seek(r){if(r===this.currentTokenIndex)return;r>this.currentTokenIndex&&(this.sync(r-this.currentTokenIndex),r=Math.min(r,this.getBufferStartIndex()+this.n-1));let e=this.getBufferStartIndex(),t=r-e;if(t<0)throw new Error("cannot seek to negative index "+r);if(t>=this.n)throw new Error("seek to index outside buffer: "+r+" not in "+e+".."+(e+this.n));this.p=t,this.currentTokenIndex=r,this.p===0?this.lastToken=this.lastTokenBufferStart:this.lastToken=this.tokens[this.p-1]}get size(){throw new Error("Unbuffered stream cannot know its size")}getSourceName(){return this.tokenSource.sourceName}setLine(r){this.tokenSource.line=r}setColumn(r){this.tokenSource.column=r}sync(r){let e=this.p+r-1-this.n+1;e>0&&this.fill(e)}fill(r){for(let e=0;e<r;e++){if(this.n>0&&this.tokens[this.n-1].type===B.EOF)return e;let t=this.tokenSource.nextToken();this.add(t)}return r}add(r){this.n>=this.tokens.length&&(this.tokens.length=this.tokens.length*2),x_(r)&&r.setTokenIndex(this.getBufferStartIndex()+this.n),this.tokens[this.n++]=r}getBufferStartIndex(){return this.currentTokenIndex-this.p}};var Eg=class r extends wn{static ABOUT=1;static ABSTRACT=2;static ACCEPT=3;static ACTION=4;static ACTOR=5;static AFTER=6;static ALIAS=7;static ALL=8;static ALLOCATE=9;static ALLOCATION=10;static ANALYSIS=11;static AND=12;static AS=13;static ASSERT=14;static ASSIGN=15;static ASSOC=16;static ASSUME=17;static AT=18;static ATTRIBUTE=19;static BEHAVIOR=20;static BIND=21;static BINDING=22;static BOOL=23;static BY=24;static CALC=25;static CASE=26;static CHAINS=27;static CLASS=28;static CLASSIFIER=29;static COMMENT=30;static COMPOSITE=31;static CONCERN=32;static CONJUGATE=33;static CONJUGATES=34;static CONJUGATION=35;static CONNECT=36;static CONNECTION=37;static CONNECTOR=38;static CONST=39;static CONSTANT=40;static CONSTRAINT=41;static CROSSES=42;static DATATYPE=43;static DECIDE=44;static DEF=45;static DEFAULT=46;static DEFINED=47;static DEPENDENCY=48;static DERIVED=49;static DIFFERENCES=50;static DISJOINING=51;static DISJOINT=52;static DO=53;static DOC=54;static ELSE=55;static END=56;static ENTRY=57;static ENUM=58;static EVENT=59;static EXHIBIT=60;static EXIT=61;static EXPOSE=62;static EXPR=63;static FALSE=64;static FEATURE=65;static FEATURED=66;static FEATURING=67;static FILTER=68;static FIRST=69;static FLOW=70;static FOR=71;static FORK=72;static FRAME=73;static FROM=74;static FUNCTION=75;static HASTYPE=76;static IF=77;static IMPLIES=78;static IMPORT=79;static IN=80;static INCLUDE=81;static INDIVIDUAL=82;static INOUT=83;static INTERACTION=84;static INTERFACE=85;static INTERSECTS=86;static INV=87;static INVERSE=88;static INVERTING=89;static ISTYPE=90;static ITEM=91;static JOIN=92;static LANGUAGE=93;static LIBRARY=94;static LOCALE=95;static LOOP=96;static MEMBER=97;static MERGE=98;static MESSAGE=99;static META=100;static METACLASS=101;static METADATA=102;static MULTIPLICITY=103;static NAMESPACE=104;static NEW=105;static NONUNIQUE=106;static NOT=107;static NULL=108;static OBJECTIVE=109;static OCCURRENCE=110;static OF=111;static OR=112;static ORDERED=113;static OUT=114;static PACKAGE=115;static PARALLEL=116;static PART=117;static PERFORM=118;static PORT=119;static PORTION=120;static PREDICATE=121;static PRIVATE=122;static PROTECTED=123;static PUBLIC=124;static REDEFINES=125;static REDEFINITION=126;static REF=127;static REFERENCES=128;static RENDER=129;static RENDERING=130;static REP=131;static REQUIRE=132;static REQUIREMENT=133;static RETURN=134;static SATISFY=135;static SEND=136;static SNAPSHOT=137;static SPECIALIZATION=138;static SPECIALIZES=139;static STAKEHOLDER=140;static STANDARD=141;static STATE=142;static STEP=143;static STRUCT=144;static SUBCLASSIFIER=145;static SUBJECT=146;static SUBSET=147;static SUBSETS=148;static SUBTYPE=149;static SUCCESSION=150;static TERMINATE=151;static THEN=152;static TIMESLICE=153;static TO=154;static TRANSITION=155;static TRUE=156;static TYPE=157;static TYPED=158;static TYPING=159;static UNIONS=160;static UNTIL=161;static USE=162;static VAR=163;static VARIANT=164;static VARIATION=165;static VERIFICATION=166;static VERIFY=167;static VIA=168;static VIEW=169;static VIEWPOINT=170;static WHEN=171;static WHILE=172;static XOR=173;static BANG_EQ_EQ=174;static COLON_COLON_GT=175;static COLON_GT_GT=176;static EQ_EQ_EQ=177;static BANG_EQ=178;static STAR_STAR=179;static ARROW=180;static DOT_DOT=181;static DOT_QUESTION=182;static COLON_COLON=183;static COLON_EQ=184;static COLON_GT=185;static LE=186;static EQ_EQ=187;static FAT_ARROW=188;static GE=189;static QUESTION_QUESTION=190;static AT_AT=191;static HASH=192;static DOLLAR=193;static PERCENT=194;static AMP=195;static LPAREN=196;static RPAREN=197;static STAR=198;static PLUS=199;static COMMA=200;static MINUS=201;static DOT=202;static SLASH=203;static COLON=204;static SEMI=205;static LT=206;static EQ=207;static GT=208;static QUESTION=209;static AT_SIGN=210;static LBRACK=211;static RBRACK=212;static CARET=213;static LBRACE=214;static PIPE=215;static RBRACE=216;static TILDE=217;static IDENTIFIER=218;static STRING=219;static DOUBLE_STRING=220;static INTEGER=221;static REAL=222;static REGULAR_COMMENT=223;static SINGLE_LINE_NOTE=224;static WS=225;static channelNames=["DEFAULT_TOKEN_CHANNEL","HIDDEN"];static literalNames=[null,"'about'","'abstract'","'accept'","'action'","'actor'","'after'","'alias'","'all'","'allocate'","'allocation'","'analysis'","'and'","'as'","'assert'","'assign'","'assoc'","'assume'","'at'","'attribute'","'behavior'","'bind'","'binding'","'bool'","'by'","'calc'","'case'","'chains'","'class'","'classifier'","'comment'","'composite'","'concern'","'conjugate'","'conjugates'","'conjugation'","'connect'","'connection'","'connector'","'const'","'constant'","'constraint'","'crosses'","'datatype'","'decide'","'def'","'default'","'defined'","'dependency'","'derived'","'differences'","'disjoining'","'disjoint'","'do'","'doc'","'else'","'end'","'entry'","'enum'","'event'","'exhibit'","'exit'","'expose'","'expr'","'false'","'feature'","'featured'","'featuring'","'filter'","'first'","'flow'","'for'","'fork'","'frame'","'from'","'function'","'hastype'","'if'","'implies'","'import'","'in'","'include'","'individual'","'inout'","'interaction'","'interface'","'intersects'","'inv'","'inverse'","'inverting'","'istype'","'item'","'join'","'language'","'library'","'locale'","'loop'","'member'","'merge'","'message'","'meta'","'metaclass'","'metadata'","'multiplicity'","'namespace'","'new'","'nonunique'","'not'","'null'","'objective'","'occurrence'","'of'","'or'","'ordered'","'out'","'package'","'parallel'","'part'","'perform'","'port'","'portion'","'predicate'","'private'","'protected'","'public'","'redefines'","'redefinition'","'ref'","'references'","'render'","'rendering'","'rep'","'require'","'requirement'","'return'","'satisfy'","'send'","'snapshot'","'specialization'","'specializes'","'stakeholder'","'standard'","'state'","'step'","'struct'","'subclassifier'","'subject'","'subset'","'subsets'","'subtype'","'succession'","'terminate'","'then'","'timeslice'","'to'","'transition'","'true'","'type'","'typed'","'typing'","'unions'","'until'","'use'","'var'","'variant'","'variation'","'verification'","'verify'","'via'","'view'","'viewpoint'","'when'","'while'","'xor'","'!=='","'::>'","':>>'","'==='","'!='","'**'","'->'","'..'","'.?'","'::'","':='","':>'","'<='","'=='","'=>'","'>='","'??'","'@@'","'#'","'$'","'%'","'&'","'('","')'","'*'","'+'","','","'-'","'.'","'/'","':'","';'","'<'","'='","'>'","'?'","'@'","'['","']'","'^'","'{'","'|'","'}'","'~'"];static symbolicNames=[null,"ABOUT","ABSTRACT","ACCEPT","ACTION","ACTOR","AFTER","ALIAS","ALL","ALLOCATE","ALLOCATION","ANALYSIS","AND","AS","ASSERT","ASSIGN","ASSOC","ASSUME","AT","ATTRIBUTE","BEHAVIOR","BIND","BINDING","BOOL","BY","CALC","CASE","CHAINS","CLASS","CLASSIFIER","COMMENT","COMPOSITE","CONCERN","CONJUGATE","CONJUGATES","CONJUGATION","CONNECT","CONNECTION","CONNECTOR","CONST","CONSTANT","CONSTRAINT","CROSSES","DATATYPE","DECIDE","DEF","DEFAULT","DEFINED","DEPENDENCY","DERIVED","DIFFERENCES","DISJOINING","DISJOINT","DO","DOC","ELSE","END","ENTRY","ENUM","EVENT","EXHIBIT","EXIT","EXPOSE","EXPR","FALSE","FEATURE","FEATURED","FEATURING","FILTER","FIRST","FLOW","FOR","FORK","FRAME","FROM","FUNCTION","HASTYPE","IF","IMPLIES","IMPORT","IN","INCLUDE","INDIVIDUAL","INOUT","INTERACTION","INTERFACE","INTERSECTS","INV","INVERSE","INVERTING","ISTYPE","ITEM","JOIN","LANGUAGE","LIBRARY","LOCALE","LOOP","MEMBER","MERGE","MESSAGE","META","METACLASS","METADATA","MULTIPLICITY","NAMESPACE","NEW","NONUNIQUE","NOT","NULL","OBJECTIVE","OCCURRENCE","OF","OR","ORDERED","OUT","PACKAGE","PARALLEL","PART","PERFORM","PORT","PORTION","PREDICATE","PRIVATE","PROTECTED","PUBLIC","REDEFINES","REDEFINITION","REF","REFERENCES","RENDER","RENDERING","REP","REQUIRE","REQUIREMENT","RETURN","SATISFY","SEND","SNAPSHOT","SPECIALIZATION","SPECIALIZES","STAKEHOLDER","STANDARD","STATE","STEP","STRUCT","SUBCLASSIFIER","SUBJECT","SUBSET","SUBSETS","SUBTYPE","SUCCESSION","TERMINATE","THEN","TIMESLICE","TO","TRANSITION","TRUE","TYPE","TYPED","TYPING","UNIONS","UNTIL","USE","VAR","VARIANT","VARIATION","VERIFICATION","VERIFY","VIA","VIEW","VIEWPOINT","WHEN","WHILE","XOR","BANG_EQ_EQ","COLON_COLON_GT","COLON_GT_GT","EQ_EQ_EQ","BANG_EQ","STAR_STAR","ARROW","DOT_DOT","DOT_QUESTION","COLON_COLON","COLON_EQ","COLON_GT","LE","EQ_EQ","FAT_ARROW","GE","QUESTION_QUESTION","AT_AT","HASH","DOLLAR","PERCENT","AMP","LPAREN","RPAREN","STAR","PLUS","COMMA","MINUS","DOT","SLASH","COLON","SEMI","LT","EQ","GT","QUESTION","AT_SIGN","LBRACK","RBRACK","CARET","LBRACE","PIPE","RBRACE","TILDE","IDENTIFIER","STRING","DOUBLE_STRING","INTEGER","REAL","REGULAR_COMMENT","SINGLE_LINE_NOTE","WS"];static modeNames=["DEFAULT_MODE"];static ruleNames=["ABOUT","ABSTRACT","ACCEPT","ACTION","ACTOR","AFTER","ALIAS","ALL","ALLOCATE","ALLOCATION","ANALYSIS","AND","AS","ASSERT","ASSIGN","ASSOC","ASSUME","AT","ATTRIBUTE","BEHAVIOR","BIND","BINDING","BOOL","BY","CALC","CASE","CHAINS","CLASS","CLASSIFIER","COMMENT","COMPOSITE","CONCERN","CONJUGATE","CONJUGATES","CONJUGATION","CONNECT","CONNECTION","CONNECTOR","CONST","CONSTANT","CONSTRAINT","CROSSES","DATATYPE","DECIDE","DEF","DEFAULT","DEFINED","DEPENDENCY","DERIVED","DIFFERENCES","DISJOINING","DISJOINT","DO","DOC","ELSE","END","ENTRY","ENUM","EVENT","EXHIBIT","EXIT","EXPOSE","EXPR","FALSE","FEATURE","FEATURED","FEATURING","FILTER","FIRST","FLOW","FOR","FORK","FRAME","FROM","FUNCTION","HASTYPE","IF","IMPLIES","IMPORT","IN","INCLUDE","INDIVIDUAL","INOUT","INTERACTION","INTERFACE","INTERSECTS","INV","INVERSE","INVERTING","ISTYPE","ITEM","JOIN","LANGUAGE","LIBRARY","LOCALE","LOOP","MEMBER","MERGE","MESSAGE","META","METACLASS","METADATA","MULTIPLICITY","NAMESPACE","NEW","NONUNIQUE","NOT","NULL","OBJECTIVE","OCCURRENCE","OF","OR","ORDERED","OUT","PACKAGE","PARALLEL","PART","PERFORM","PORT","PORTION","PREDICATE","PRIVATE","PROTECTED","PUBLIC","REDEFINES","REDEFINITION","REF","REFERENCES","RENDER","RENDERING","REP","REQUIRE","REQUIREMENT","RETURN","SATISFY","SEND","SNAPSHOT","SPECIALIZATION","SPECIALIZES","STAKEHOLDER","STANDARD","STATE","STEP","STRUCT","SUBCLASSIFIER","SUBJECT","SUBSET","SUBSETS","SUBTYPE","SUCCESSION","TERMINATE","THEN","TIMESLICE","TO","TRANSITION","TRUE","TYPE","TYPED","TYPING","UNIONS","UNTIL","USE","VAR","VARIANT","VARIATION","VERIFICATION","VERIFY","VIA","VIEW","VIEWPOINT","WHEN","WHILE","XOR","BANG_EQ_EQ","COLON_COLON_GT","COLON_GT_GT","EQ_EQ_EQ","BANG_EQ","STAR_STAR","ARROW","DOT_DOT","DOT_QUESTION","COLON_COLON","COLON_EQ","COLON_GT","LE","EQ_EQ","FAT_ARROW","GE","QUESTION_QUESTION","AT_AT","HASH","DOLLAR","PERCENT","AMP","LPAREN","RPAREN","STAR","PLUS","COMMA","MINUS","DOT","SLASH","COLON","SEMI","LT","EQ","GT","QUESTION","AT_SIGN","LBRACK","RBRACK","CARET","LBRACE","PIPE","RBRACE","TILDE","IDENTIFIER","STRING","DOUBLE_STRING","INTEGER","REAL","REGULAR_COMMENT","SINGLE_LINE_NOTE","WS"];constructor(e){super(e),this.interpreter=new ou(this,r._ATN,r.decisionsToDFA,new oa)}get grammarFileName(){return"SysMLv2Lexer.g4"}get literalNames(){return r.literalNames}get symbolicNames(){return r.symbolicNames}get ruleNames(){return r.ruleNames}get serializedATN(){return r._serializedATN}get channelNames(){return r.channelNames}get modeNames(){return r.modeNames}static _serializedATN=[4,0,225,1950,6,-1,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,1,0,1,0,1,0,1,0,1,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,2,1,2,1,2,1,2,1,2,1,2,1,2,1,3,1,3,1,3,1,3,1,3,1,3,1,3,1,4,1,4,1,4,1,4,1,4,1,4,1,5,1,5,1,5,1,5,1,5,1,5,1,6,1,6,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,9,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,10,1,11,1,11,1,11,1,11,1,12,1,12,1,12,1,13,1,13,1,13,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,1,14,1,14,1,15,1,15,1,15,1,15,1,15,1,15,1,16,1,16,1,16,1,16,1,16,1,16,1,16,1,17,1,17,1,17,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,18,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,19,1,20,1,20,1,20,1,20,1,20,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,21,1,22,1,22,1,22,1,22,1,22,1,23,1,23,1,23,1,24,1,24,1,24,1,24,1,24,1,25,1,25,1,25,1,25,1,25,1,26,1,26,1,26,1,26,1,26,1,26,1,26,1,27,1,27,1,27,1,27,1,27,1,27,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,28,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,29,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,30,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,31,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,32,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,33,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,34,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,35,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,36,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,37,1,38,1,38,1,38,1,38,1,38,1,38,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,39,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,40,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,41,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,42,1,43,1,43,1,43,1,43,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,45,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,46,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,47,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,48,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,49,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,50,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,51,1,52,1,52,1,52,1,53,1,53,1,53,1,53,1,54,1,54,1,54,1,54,1,54,1,55,1,55,1,55,1,55,1,56,1,56,1,56,1,56,1,56,1,56,1,57,1,57,1,57,1,57,1,57,1,58,1,58,1,58,1,58,1,58,1,58,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,59,1,60,1,60,1,60,1,60,1,60,1,61,1,61,1,61,1,61,1,61,1,61,1,61,1,62,1,62,1,62,1,62,1,62,1,63,1,63,1,63,1,63,1,63,1,63,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,64,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,65,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,66,1,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,68,1,68,1,68,1,68,1,69,1,69,1,69,1,69,1,69,1,70,1,70,1,70,1,70,1,71,1,71,1,71,1,71,1,71,1,72,1,72,1,72,1,72,1,72,1,72,1,73,1,73,1,73,1,73,1,73,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,74,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,75,1,76,1,76,1,76,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,77,1,78,1,78,1,78,1,78,1,78,1,78,1,78,1,79,1,79,1,79,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,81,1,82,1,82,1,82,1,82,1,82,1,82,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,83,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,85,1,86,1,86,1,86,1,86,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,87,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,88,1,89,1,89,1,89,1,89,1,89,1,89,1,89,1,90,1,90,1,90,1,90,1,90,1,91,1,91,1,91,1,91,1,91,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,92,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,93,1,94,1,94,1,94,1,94,1,94,1,94,1,94,1,95,1,95,1,95,1,95,1,95,1,96,1,96,1,96,1,96,1,96,1,96,1,96,1,97,1,97,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,98,1,99,1,99,1,99,1,99,1,99,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,100,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,101,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,102,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,103,1,104,1,104,1,104,1,104,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,105,1,106,1,106,1,106,1,106,1,107,1,107,1,107,1,107,1,107,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,108,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,109,1,110,1,110,1,110,1,111,1,111,1,111,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,1,113,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,114,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,115,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,117,1,118,1,118,1,118,1,118,1,118,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,119,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,120,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,121,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,122,1,123,1,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,1,130,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,131,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,132,1,133,1,133,1,133,1,133,1,133,1,133,1,133,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,134,1,135,1,135,1,135,1,135,1,135,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,136,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,139,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,1,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,145,1,146,1,146,1,146,1,146,1,146,1,146,1,146,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,148,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,1,151,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,152,1,153,1,153,1,153,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,154,1,155,1,155,1,155,1,155,1,155,1,156,1,156,1,156,1,156,1,156,1,157,1,157,1,157,1,157,1,157,1,157,1,158,1,158,1,158,1,158,1,158,1,158,1,158,1,159,1,159,1,159,1,159,1,159,1,159,1,159,1,160,1,160,1,160,1,160,1,160,1,160,1,161,1,161,1,161,1,161,1,162,1,162,1,162,1,162,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,163,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,164,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,165,1,166,1,166,1,166,1,166,1,166,1,166,1,166,1,167,1,167,1,167,1,167,1,168,1,168,1,168,1,168,1,168,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,169,1,170,1,170,1,170,1,170,1,170,1,171,1,171,1,171,1,171,1,171,1,171,1,172,1,172,1,172,1,172,1,173,1,173,1,173,1,173,1,174,1,174,1,174,1,174,1,175,1,175,1,175,1,175,1,176,1,176,1,176,1,176,1,177,1,177,1,177,1,178,1,178,1,178,1,179,1,179,1,179,1,180,1,180,1,180,1,181,1,181,1,181,1,182,1,182,1,182,1,183,1,183,1,183,1,184,1,184,1,184,1,185,1,185,1,185,1,186,1,186,1,186,1,187,1,187,1,187,1,188,1,188,1,188,1,189,1,189,1,189,1,190,1,190,1,190,1,191,1,191,1,192,1,192,1,193,1,193,1,194,1,194,1,195,1,195,1,196,1,196,1,197,1,197,1,198,1,198,1,199,1,199,1,200,1,200,1,201,1,201,1,202,1,202,1,203,1,203,1,204,1,204,1,205,1,205,1,206,1,206,1,207,1,207,1,208,1,208,1,209,1,209,1,210,1,210,1,211,1,211,1,212,1,212,1,213,1,213,1,214,1,214,1,215,1,215,1,216,1,216,1,217,1,217,5,217,1850,8,217,10,217,12,217,1853,9,217,1,218,1,218,1,218,1,218,5,218,1859,8,218,10,218,12,218,1862,9,218,1,218,1,218,1,219,1,219,1,219,1,219,5,219,1870,8,219,10,219,12,219,1873,9,219,1,219,1,219,1,220,4,220,1878,8,220,11,220,12,220,1879,1,221,5,221,1883,8,221,10,221,12,221,1886,9,221,1,221,1,221,4,221,1890,8,221,11,221,12,221,1891,1,221,1,221,3,221,1896,8,221,1,221,4,221,1899,8,221,11,221,12,221,1900,3,221,1903,8,221,1,221,4,221,1906,8,221,11,221,12,221,1907,1,221,1,221,3,221,1912,8,221,1,221,4,221,1915,8,221,11,221,12,221,1916,3,221,1919,8,221,1,222,1,222,1,222,1,222,5,222,1925,8,222,10,222,12,222,1928,9,222,1,222,1,222,1,222,1,223,1,223,1,223,1,223,5,223,1937,8,223,10,223,12,223,1940,9,223,1,223,1,223,1,224,4,224,1945,8,224,11,224,12,224,1946,1,224,1,224,1,1926,0,225,1,1,3,2,5,3,7,4,9,5,11,6,13,7,15,8,17,9,19,10,21,11,23,12,25,13,27,14,29,15,31,16,33,17,35,18,37,19,39,20,41,21,43,22,45,23,47,24,49,25,51,26,53,27,55,28,57,29,59,30,61,31,63,32,65,33,67,34,69,35,71,36,73,37,75,38,77,39,79,40,81,41,83,42,85,43,87,44,89,45,91,46,93,47,95,48,97,49,99,50,101,51,103,52,105,53,107,54,109,55,111,56,113,57,115,58,117,59,119,60,121,61,123,62,125,63,127,64,129,65,131,66,133,67,135,68,137,69,139,70,141,71,143,72,145,73,147,74,149,75,151,76,153,77,155,78,157,79,159,80,161,81,163,82,165,83,167,84,169,85,171,86,173,87,175,88,177,89,179,90,181,91,183,92,185,93,187,94,189,95,191,96,193,97,195,98,197,99,199,100,201,101,203,102,205,103,207,104,209,105,211,106,213,107,215,108,217,109,219,110,221,111,223,112,225,113,227,114,229,115,231,116,233,117,235,118,237,119,239,120,241,121,243,122,245,123,247,124,249,125,251,126,253,127,255,128,257,129,259,130,261,131,263,132,265,133,267,134,269,135,271,136,273,137,275,138,277,139,279,140,281,141,283,142,285,143,287,144,289,145,291,146,293,147,295,148,297,149,299,150,301,151,303,152,305,153,307,154,309,155,311,156,313,157,315,158,317,159,319,160,321,161,323,162,325,163,327,164,329,165,331,166,333,167,335,168,337,169,339,170,341,171,343,172,345,173,347,174,349,175,351,176,353,177,355,178,357,179,359,180,361,181,363,182,365,183,367,184,369,185,371,186,373,187,375,188,377,189,379,190,381,191,383,192,385,193,387,194,389,195,391,196,393,197,395,198,397,199,399,200,401,201,403,202,405,203,407,204,409,205,411,206,413,207,415,208,417,209,419,210,421,211,423,212,425,213,427,214,429,215,431,216,433,217,435,218,437,219,439,220,441,221,443,222,445,223,447,224,449,225,1,0,9,3,0,65,90,95,95,97,122,4,0,48,57,65,90,95,95,97,122,2,0,39,39,92,92,2,0,34,34,92,92,1,0,48,57,2,0,69,69,101,101,2,0,43,43,45,45,2,0,10,10,13,13,3,0,9,10,13,13,32,32,1967,0,1,1,0,0,0,0,3,1,0,0,0,0,5,1,0,0,0,0,7,1,0,0,0,0,9,1,0,0,0,0,11,1,0,0,0,0,13,1,0,0,0,0,15,1,0,0,0,0,17,1,0,0,0,0,19,1,0,0,0,0,21,1,0,0,0,0,23,1,0,0,0,0,25,1,0,0,0,0,27,1,0,0,0,0,29,1,0,0,0,0,31,1,0,0,0,0,33,1,0,0,0,0,35,1,0,0,0,0,37,1,0,0,0,0,39,1,0,0,0,0,41,1,0,0,0,0,43,1,0,0,0,0,45,1,0,0,0,0,47,1,0,0,0,0,49,1,0,0,0,0,51,1,0,0,0,0,53,1,0,0,0,0,55,1,0,0,0,0,57,1,0,0,0,0,59,1,0,0,0,0,61,1,0,0,0,0,63,1,0,0,0,0,65,1,0,0,0,0,67,1,0,0,0,0,69,1,0,0,0,0,71,1,0,0,0,0,73,1,0,0,0,0,75,1,0,0,0,0,77,1,0,0,0,0,79,1,0,0,0,0,81,1,0,0,0,0,83,1,0,0,0,0,85,1,0,0,0,0,87,1,0,0,0,0,89,1,0,0,0,0,91,1,0,0,0,0,93,1,0,0,0,0,95,1,0,0,0,0,97,1,0,0,0,0,99,1,0,0,0,0,101,1,0,0,0,0,103,1,0,0,0,0,105,1,0,0,0,0,107,1,0,0,0,0,109,1,0,0,0,0,111,1,0,0,0,0,113,1,0,0,0,0,115,1,0,0,0,0,117,1,0,0,0,0,119,1,0,0,0,0,121,1,0,0,0,0,123,1,0,0,0,0,125,1,0,0,0,0,127,1,0,0,0,0,129,1,0,0,0,0,131,1,0,0,0,0,133,1,0,0,0,0,135,1,0,0,0,0,137,1,0,0,0,0,139,1,0,0,0,0,141,1,0,0,0,0,143,1,0,0,0,0,145,1,0,0,0,0,147,1,0,0,0,0,149,1,0,0,0,0,151,1,0,0,0,0,153,1,0,0,0,0,155,1,0,0,0,0,157,1,0,0,0,0,159,1,0,0,0,0,161,1,0,0,0,0,163,1,0,0,0,0,165,1,0,0,0,0,167,1,0,0,0,0,169,1,0,0,0,0,171,1,0,0,0,0,173,1,0,0,0,0,175,1,0,0,0,0,177,1,0,0,0,0,179,1,0,0,0,0,181,1,0,0,0,0,183,1,0,0,0,0,185,1,0,0,0,0,187,1,0,0,0,0,189,1,0,0,0,0,191,1,0,0,0,0,193,1,0,0,0,0,195,1,0,0,0,0,197,1,0,0,0,0,199,1,0,0,0,0,201,1,0,0,0,0,203,1,0,0,0,0,205,1,0,0,0,0,207,1,0,0,0,0,209,1,0,0,0,0,211,1,0,0,0,0,213,1,0,0,0,0,215,1,0,0,0,0,217,1,0,0,0,0,219,1,0,0,0,0,221,1,0,0,0,0,223,1,0,0,0,0,225,1,0,0,0,0,227,1,0,0,0,0,229,1,0,0,0,0,231,1,0,0,0,0,233,1,0,0,0,0,235,1,0,0,0,0,237,1,0,0,0,0,239,1,0,0,0,0,241,1,0,0,0,0,243,1,0,0,0,0,245,1,0,0,0,0,247,1,0,0,0,0,249,1,0,0,0,0,251,1,0,0,0,0,253,1,0,0,0,0,255,1,0,0,0,0,257,1,0,0,0,0,259,1,0,0,0,0,261,1,0,0,0,0,263,1,0,0,0,0,265,1,0,0,0,0,267,1,0,0,0,0,269,1,0,0,0,0,271,1,0,0,0,0,273,1,0,0,0,0,275,1,0,0,0,0,277,1,0,0,0,0,279,1,0,0,0,0,281,1,0,0,0,0,283,1,0,0,0,0,285,1,0,0,0,0,287,1,0,0,0,0,289,1,0,0,0,0,291,1,0,0,0,0,293,1,0,0,0,0,295,1,0,0,0,0,297,1,0,0,0,0,299,1,0,0,0,0,301,1,0,0,0,0,303,1,0,0,0,0,305,1,0,0,0,0,307,1,0,0,0,0,309,1,0,0,0,0,311,1,0,0,0,0,313,1,0,0,0,0,315,1,0,0,0,0,317,1,0,0,0,0,319,1,0,0,0,0,321,1,0,0,0,0,323,1,0,0,0,0,325,1,0,0,0,0,327,1,0,0,0,0,329,1,0,0,0,0,331,1,0,0,0,0,333,1,0,0,0,0,335,1,0,0,0,0,337,1,0,0,0,0,339,1,0,0,0,0,341,1,0,0,0,0,343,1,0,0,0,0,345,1,0,0,0,0,347,1,0,0,0,0,349,1,0,0,0,0,351,1,0,0,0,0,353,1,0,0,0,0,355,1,0,0,0,0,357,1,0,0,0,0,359,1,0,0,0,0,361,1,0,0,0,0,363,1,0,0,0,0,365,1,0,0,0,0,367,1,0,0,0,0,369,1,0,0,0,0,371,1,0,0,0,0,373,1,0,0,0,0,375,1,0,0,0,0,377,1,0,0,0,0,379,1,0,0,0,0,381,1,0,0,0,0,383,1,0,0,0,0,385,1,0,0,0,0,387,1,0,0,0,0,389,1,0,0,0,0,391,1,0,0,0,0,393,1,0,0,0,0,395,1,0,0,0,0,397,1,0,0,0,0,399,1,0,0,0,0,401,1,0,0,0,0,403,1,0,0,0,0,405,1,0,0,0,0,407,1,0,0,0,0,409,1,0,0,0,0,411,1,0,0,0,0,413,1,0,0,0,0,415,1,0,0,0,0,417,1,0,0,0,0,419,1,0,0,0,0,421,1,0,0,0,0,423,1,0,0,0,0,425,1,0,0,0,0,427,1,0,0,0,0,429,1,0,0,0,0,431,1,0,0,0,0,433,1,0,0,0,0,435,1,0,0,0,0,437,1,0,0,0,0,439,1,0,0,0,0,441,1,0,0,0,0,443,1,0,0,0,0,445,1,0,0,0,0,447,1,0,0,0,0,449,1,0,0,0,1,451,1,0,0,0,3,457,1,0,0,0,5,466,1,0,0,0,7,473,1,0,0,0,9,480,1,0,0,0,11,486,1,0,0,0,13,492,1,0,0,0,15,498,1,0,0,0,17,502,1,0,0,0,19,511,1,0,0,0,21,522,1,0,0,0,23,531,1,0,0,0,25,535,1,0,0,0,27,538,1,0,0,0,29,545,1,0,0,0,31,552,1,0,0,0,33,558,1,0,0,0,35,565,1,0,0,0,37,568,1,0,0,0,39,578,1,0,0,0,41,587,1,0,0,0,43,592,1,0,0,0,45,600,1,0,0,0,47,605,1,0,0,0,49,608,1,0,0,0,51,613,1,0,0,0,53,618,1,0,0,0,55,625,1,0,0,0,57,631,1,0,0,0,59,642,1,0,0,0,61,650,1,0,0,0,63,660,1,0,0,0,65,668,1,0,0,0,67,678,1,0,0,0,69,689,1,0,0,0,71,701,1,0,0,0,73,709,1,0,0,0,75,720,1,0,0,0,77,730,1,0,0,0,79,736,1,0,0,0,81,745,1,0,0,0,83,756,1,0,0,0,85,764,1,0,0,0,87,773,1,0,0,0,89,780,1,0,0,0,91,784,1,0,0,0,93,792,1,0,0,0,95,800,1,0,0,0,97,811,1,0,0,0,99,819,1,0,0,0,101,831,1,0,0,0,103,842,1,0,0,0,105,851,1,0,0,0,107,854,1,0,0,0,109,858,1,0,0,0,111,863,1,0,0,0,113,867,1,0,0,0,115,873,1,0,0,0,117,878,1,0,0,0,119,884,1,0,0,0,121,892,1,0,0,0,123,897,1,0,0,0,125,904,1,0,0,0,127,909,1,0,0,0,129,915,1,0,0,0,131,923,1,0,0,0,133,932,1,0,0,0,135,942,1,0,0,0,137,949,1,0,0,0,139,955,1,0,0,0,141,960,1,0,0,0,143,964,1,0,0,0,145,969,1,0,0,0,147,975,1,0,0,0,149,980,1,0,0,0,151,989,1,0,0,0,153,997,1,0,0,0,155,1e3,1,0,0,0,157,1008,1,0,0,0,159,1015,1,0,0,0,161,1018,1,0,0,0,163,1026,1,0,0,0,165,1037,1,0,0,0,167,1043,1,0,0,0,169,1055,1,0,0,0,171,1065,1,0,0,0,173,1076,1,0,0,0,175,1080,1,0,0,0,177,1088,1,0,0,0,179,1098,1,0,0,0,181,1105,1,0,0,0,183,1110,1,0,0,0,185,1115,1,0,0,0,187,1124,1,0,0,0,189,1132,1,0,0,0,191,1139,1,0,0,0,193,1144,1,0,0,0,195,1151,1,0,0,0,197,1157,1,0,0,0,199,1165,1,0,0,0,201,1170,1,0,0,0,203,1180,1,0,0,0,205,1189,1,0,0,0,207,1202,1,0,0,0,209,1212,1,0,0,0,211,1216,1,0,0,0,213,1226,1,0,0,0,215,1230,1,0,0,0,217,1235,1,0,0,0,219,1245,1,0,0,0,221,1256,1,0,0,0,223,1259,1,0,0,0,225,1262,1,0,0,0,227,1270,1,0,0,0,229,1274,1,0,0,0,231,1282,1,0,0,0,233,1291,1,0,0,0,235,1296,1,0,0,0,237,1304,1,0,0,0,239,1309,1,0,0,0,241,1317,1,0,0,0,243,1327,1,0,0,0,245,1335,1,0,0,0,247,1345,1,0,0,0,249,1352,1,0,0,0,251,1362,1,0,0,0,253,1375,1,0,0,0,255,1379,1,0,0,0,257,1390,1,0,0,0,259,1397,1,0,0,0,261,1407,1,0,0,0,263,1411,1,0,0,0,265,1419,1,0,0,0,267,1431,1,0,0,0,269,1438,1,0,0,0,271,1446,1,0,0,0,273,1451,1,0,0,0,275,1460,1,0,0,0,277,1475,1,0,0,0,279,1487,1,0,0,0,281,1499,1,0,0,0,283,1508,1,0,0,0,285,1514,1,0,0,0,287,1519,1,0,0,0,289,1526,1,0,0,0,291,1540,1,0,0,0,293,1548,1,0,0,0,295,1555,1,0,0,0,297,1563,1,0,0,0,299,1571,1,0,0,0,301,1582,1,0,0,0,303,1592,1,0,0,0,305,1597,1,0,0,0,307,1607,1,0,0,0,309,1610,1,0,0,0,311,1621,1,0,0,0,313,1626,1,0,0,0,315,1631,1,0,0,0,317,1637,1,0,0,0,319,1644,1,0,0,0,321,1651,1,0,0,0,323,1657,1,0,0,0,325,1661,1,0,0,0,327,1665,1,0,0,0,329,1673,1,0,0,0,331,1683,1,0,0,0,333,1696,1,0,0,0,335,1703,1,0,0,0,337,1707,1,0,0,0,339,1712,1,0,0,0,341,1722,1,0,0,0,343,1727,1,0,0,0,345,1733,1,0,0,0,347,1737,1,0,0,0,349,1741,1,0,0,0,351,1745,1,0,0,0,353,1749,1,0,0,0,355,1753,1,0,0,0,357,1756,1,0,0,0,359,1759,1,0,0,0,361,1762,1,0,0,0,363,1765,1,0,0,0,365,1768,1,0,0,0,367,1771,1,0,0,0,369,1774,1,0,0,0,371,1777,1,0,0,0,373,1780,1,0,0,0,375,1783,1,0,0,0,377,1786,1,0,0,0,379,1789,1,0,0,0,381,1792,1,0,0,0,383,1795,1,0,0,0,385,1797,1,0,0,0,387,1799,1,0,0,0,389,1801,1,0,0,0,391,1803,1,0,0,0,393,1805,1,0,0,0,395,1807,1,0,0,0,397,1809,1,0,0,0,399,1811,1,0,0,0,401,1813,1,0,0,0,403,1815,1,0,0,0,405,1817,1,0,0,0,407,1819,1,0,0,0,409,1821,1,0,0,0,411,1823,1,0,0,0,413,1825,1,0,0,0,415,1827,1,0,0,0,417,1829,1,0,0,0,419,1831,1,0,0,0,421,1833,1,0,0,0,423,1835,1,0,0,0,425,1837,1,0,0,0,427,1839,1,0,0,0,429,1841,1,0,0,0,431,1843,1,0,0,0,433,1845,1,0,0,0,435,1847,1,0,0,0,437,1854,1,0,0,0,439,1865,1,0,0,0,441,1877,1,0,0,0,443,1918,1,0,0,0,445,1920,1,0,0,0,447,1932,1,0,0,0,449,1944,1,0,0,0,451,452,5,97,0,0,452,453,5,98,0,0,453,454,5,111,0,0,454,455,5,117,0,0,455,456,5,116,0,0,456,2,1,0,0,0,457,458,5,97,0,0,458,459,5,98,0,0,459,460,5,115,0,0,460,461,5,116,0,0,461,462,5,114,0,0,462,463,5,97,0,0,463,464,5,99,0,0,464,465,5,116,0,0,465,4,1,0,0,0,466,467,5,97,0,0,467,468,5,99,0,0,468,469,5,99,0,0,469,470,5,101,0,0,470,471,5,112,0,0,471,472,5,116,0,0,472,6,1,0,0,0,473,474,5,97,0,0,474,475,5,99,0,0,475,476,5,116,0,0,476,477,5,105,0,0,477,478,5,111,0,0,478,479,5,110,0,0,479,8,1,0,0,0,480,481,5,97,0,0,481,482,5,99,0,0,482,483,5,116,0,0,483,484,5,111,0,0,484,485,5,114,0,0,485,10,1,0,0,0,486,487,5,97,0,0,487,488,5,102,0,0,488,489,5,116,0,0,489,490,5,101,0,0,490,491,5,114,0,0,491,12,1,0,0,0,492,493,5,97,0,0,493,494,5,108,0,0,494,495,5,105,0,0,495,496,5,97,0,0,496,497,5,115,0,0,497,14,1,0,0,0,498,499,5,97,0,0,499,500,5,108,0,0,500,501,5,108,0,0,501,16,1,0,0,0,502,503,5,97,0,0,503,504,5,108,0,0,504,505,5,108,0,0,505,506,5,111,0,0,506,507,5,99,0,0,507,508,5,97,0,0,508,509,5,116,0,0,509,510,5,101,0,0,510,18,1,0,0,0,511,512,5,97,0,0,512,513,5,108,0,0,513,514,5,108,0,0,514,515,5,111,0,0,515,516,5,99,0,0,516,517,5,97,0,0,517,518,5,116,0,0,518,519,5,105,0,0,519,520,5,111,0,0,520,521,5,110,0,0,521,20,1,0,0,0,522,523,5,97,0,0,523,524,5,110,0,0,524,525,5,97,0,0,525,526,5,108,0,0,526,527,5,121,0,0,527,528,5,115,0,0,528,529,5,105,0,0,529,530,5,115,0,0,530,22,1,0,0,0,531,532,5,97,0,0,532,533,5,110,0,0,533,534,5,100,0,0,534,24,1,0,0,0,535,536,5,97,0,0,536,537,5,115,0,0,537,26,1,0,0,0,538,539,5,97,0,0,539,540,5,115,0,0,540,541,5,115,0,0,541,542,5,101,0,0,542,543,5,114,0,0,543,544,5,116,0,0,544,28,1,0,0,0,545,546,5,97,0,0,546,547,5,115,0,0,547,548,5,115,0,0,548,549,5,105,0,0,549,550,5,103,0,0,550,551,5,110,0,0,551,30,1,0,0,0,552,553,5,97,0,0,553,554,5,115,0,0,554,555,5,115,0,0,555,556,5,111,0,0,556,557,5,99,0,0,557,32,1,0,0,0,558,559,5,97,0,0,559,560,5,115,0,0,560,561,5,115,0,0,561,562,5,117,0,0,562,563,5,109,0,0,563,564,5,101,0,0,564,34,1,0,0,0,565,566,5,97,0,0,566,567,5,116,0,0,567,36,1,0,0,0,568,569,5,97,0,0,569,570,5,116,0,0,570,571,5,116,0,0,571,572,5,114,0,0,572,573,5,105,0,0,573,574,5,98,0,0,574,575,5,117,0,0,575,576,5,116,0,0,576,577,5,101,0,0,577,38,1,0,0,0,578,579,5,98,0,0,579,580,5,101,0,0,580,581,5,104,0,0,581,582,5,97,0,0,582,583,5,118,0,0,583,584,5,105,0,0,584,585,5,111,0,0,585,586,5,114,0,0,586,40,1,0,0,0,587,588,5,98,0,0,588,589,5,105,0,0,589,590,5,110,0,0,590,591,5,100,0,0,591,42,1,0,0,0,592,593,5,98,0,0,593,594,5,105,0,0,594,595,5,110,0,0,595,596,5,100,0,0,596,597,5,105,0,0,597,598,5,110,0,0,598,599,5,103,0,0,599,44,1,0,0,0,600,601,5,98,0,0,601,602,5,111,0,0,602,603,5,111,0,0,603,604,5,108,0,0,604,46,1,0,0,0,605,606,5,98,0,0,606,607,5,121,0,0,607,48,1,0,0,0,608,609,5,99,0,0,609,610,5,97,0,0,610,611,5,108,0,0,611,612,5,99,0,0,612,50,1,0,0,0,613,614,5,99,0,0,614,615,5,97,0,0,615,616,5,115,0,0,616,617,5,101,0,0,617,52,1,0,0,0,618,619,5,99,0,0,619,620,5,104,0,0,620,621,5,97,0,0,621,622,5,105,0,0,622,623,5,110,0,0,623,624,5,115,0,0,624,54,1,0,0,0,625,626,5,99,0,0,626,627,5,108,0,0,627,628,5,97,0,0,628,629,5,115,0,0,629,630,5,115,0,0,630,56,1,0,0,0,631,632,5,99,0,0,632,633,5,108,0,0,633,634,5,97,0,0,634,635,5,115,0,0,635,636,5,115,0,0,636,637,5,105,0,0,637,638,5,102,0,0,638,639,5,105,0,0,639,640,5,101,0,0,640,641,5,114,0,0,641,58,1,0,0,0,642,643,5,99,0,0,643,644,5,111,0,0,644,645,5,109,0,0,645,646,5,109,0,0,646,647,5,101,0,0,647,648,5,110,0,0,648,649,5,116,0,0,649,60,1,0,0,0,650,651,5,99,0,0,651,652,5,111,0,0,652,653,5,109,0,0,653,654,5,112,0,0,654,655,5,111,0,0,655,656,5,115,0,0,656,657,5,105,0,0,657,658,5,116,0,0,658,659,5,101,0,0,659,62,1,0,0,0,660,661,5,99,0,0,661,662,5,111,0,0,662,663,5,110,0,0,663,664,5,99,0,0,664,665,5,101,0,0,665,666,5,114,0,0,666,667,5,110,0,0,667,64,1,0,0,0,668,669,5,99,0,0,669,670,5,111,0,0,670,671,5,110,0,0,671,672,5,106,0,0,672,673,5,117,0,0,673,674,5,103,0,0,674,675,5,97,0,0,675,676,5,116,0,0,676,677,5,101,0,0,677,66,1,0,0,0,678,679,5,99,0,0,679,680,5,111,0,0,680,681,5,110,0,0,681,682,5,106,0,0,682,683,5,117,0,0,683,684,5,103,0,0,684,685,5,97,0,0,685,686,5,116,0,0,686,687,5,101,0,0,687,688,5,115,0,0,688,68,1,0,0,0,689,690,5,99,0,0,690,691,5,111,0,0,691,692,5,110,0,0,692,693,5,106,0,0,693,694,5,117,0,0,694,695,5,103,0,0,695,696,5,97,0,0,696,697,5,116,0,0,697,698,5,105,0,0,698,699,5,111,0,0,699,700,5,110,0,0,700,70,1,0,0,0,701,702,5,99,0,0,702,703,5,111,0,0,703,704,5,110,0,0,704,705,5,110,0,0,705,706,5,101,0,0,706,707,5,99,0,0,707,708,5,116,0,0,708,72,1,0,0,0,709,710,5,99,0,0,710,711,5,111,0,0,711,712,5,110,0,0,712,713,5,110,0,0,713,714,5,101,0,0,714,715,5,99,0,0,715,716,5,116,0,0,716,717,5,105,0,0,717,718,5,111,0,0,718,719,5,110,0,0,719,74,1,0,0,0,720,721,5,99,0,0,721,722,5,111,0,0,722,723,5,110,0,0,723,724,5,110,0,0,724,725,5,101,0,0,725,726,5,99,0,0,726,727,5,116,0,0,727,728,5,111,0,0,728,729,5,114,0,0,729,76,1,0,0,0,730,731,5,99,0,0,731,732,5,111,0,0,732,733,5,110,0,0,733,734,5,115,0,0,734,735,5,116,0,0,735,78,1,0,0,0,736,737,5,99,0,0,737,738,5,111,0,0,738,739,5,110,0,0,739,740,5,115,0,0,740,741,5,116,0,0,741,742,5,97,0,0,742,743,5,110,0,0,743,744,5,116,0,0,744,80,1,0,0,0,745,746,5,99,0,0,746,747,5,111,0,0,747,748,5,110,0,0,748,749,5,115,0,0,749,750,5,116,0,0,750,751,5,114,0,0,751,752,5,97,0,0,752,753,5,105,0,0,753,754,5,110,0,0,754,755,5,116,0,0,755,82,1,0,0,0,756,757,5,99,0,0,757,758,5,114,0,0,758,759,5,111,0,0,759,760,5,115,0,0,760,761,5,115,0,0,761,762,5,101,0,0,762,763,5,115,0,0,763,84,1,0,0,0,764,765,5,100,0,0,765,766,5,97,0,0,766,767,5,116,0,0,767,768,5,97,0,0,768,769,5,116,0,0,769,770,5,121,0,0,770,771,5,112,0,0,771,772,5,101,0,0,772,86,1,0,0,0,773,774,5,100,0,0,774,775,5,101,0,0,775,776,5,99,0,0,776,777,5,105,0,0,777,778,5,100,0,0,778,779,5,101,0,0,779,88,1,0,0,0,780,781,5,100,0,0,781,782,5,101,0,0,782,783,5,102,0,0,783,90,1,0,0,0,784,785,5,100,0,0,785,786,5,101,0,0,786,787,5,102,0,0,787,788,5,97,0,0,788,789,5,117,0,0,789,790,5,108,0,0,790,791,5,116,0,0,791,92,1,0,0,0,792,793,5,100,0,0,793,794,5,101,0,0,794,795,5,102,0,0,795,796,5,105,0,0,796,797,5,110,0,0,797,798,5,101,0,0,798,799,5,100,0,0,799,94,1,0,0,0,800,801,5,100,0,0,801,802,5,101,0,0,802,803,5,112,0,0,803,804,5,101,0,0,804,805,5,110,0,0,805,806,5,100,0,0,806,807,5,101,0,0,807,808,5,110,0,0,808,809,5,99,0,0,809,810,5,121,0,0,810,96,1,0,0,0,811,812,5,100,0,0,812,813,5,101,0,0,813,814,5,114,0,0,814,815,5,105,0,0,815,816,5,118,0,0,816,817,5,101,0,0,817,818,5,100,0,0,818,98,1,0,0,0,819,820,5,100,0,0,820,821,5,105,0,0,821,822,5,102,0,0,822,823,5,102,0,0,823,824,5,101,0,0,824,825,5,114,0,0,825,826,5,101,0,0,826,827,5,110,0,0,827,828,5,99,0,0,828,829,5,101,0,0,829,830,5,115,0,0,830,100,1,0,0,0,831,832,5,100,0,0,832,833,5,105,0,0,833,834,5,115,0,0,834,835,5,106,0,0,835,836,5,111,0,0,836,837,5,105,0,0,837,838,5,110,0,0,838,839,5,105,0,0,839,840,5,110,0,0,840,841,5,103,0,0,841,102,1,0,0,0,842,843,5,100,0,0,843,844,5,105,0,0,844,845,5,115,0,0,845,846,5,106,0,0,846,847,5,111,0,0,847,848,5,105,0,0,848,849,5,110,0,0,849,850,5,116,0,0,850,104,1,0,0,0,851,852,5,100,0,0,852,853,5,111,0,0,853,106,1,0,0,0,854,855,5,100,0,0,855,856,5,111,0,0,856,857,5,99,0,0,857,108,1,0,0,0,858,859,5,101,0,0,859,860,5,108,0,0,860,861,5,115,0,0,861,862,5,101,0,0,862,110,1,0,0,0,863,864,5,101,0,0,864,865,5,110,0,0,865,866,5,100,0,0,866,112,1,0,0,0,867,868,5,101,0,0,868,869,5,110,0,0,869,870,5,116,0,0,870,871,5,114,0,0,871,872,5,121,0,0,872,114,1,0,0,0,873,874,5,101,0,0,874,875,5,110,0,0,875,876,5,117,0,0,876,877,5,109,0,0,877,116,1,0,0,0,878,879,5,101,0,0,879,880,5,118,0,0,880,881,5,101,0,0,881,882,5,110,0,0,882,883,5,116,0,0,883,118,1,0,0,0,884,885,5,101,0,0,885,886,5,120,0,0,886,887,5,104,0,0,887,888,5,105,0,0,888,889,5,98,0,0,889,890,5,105,0,0,890,891,5,116,0,0,891,120,1,0,0,0,892,893,5,101,0,0,893,894,5,120,0,0,894,895,5,105,0,0,895,896,5,116,0,0,896,122,1,0,0,0,897,898,5,101,0,0,898,899,5,120,0,0,899,900,5,112,0,0,900,901,5,111,0,0,901,902,5,115,0,0,902,903,5,101,0,0,903,124,1,0,0,0,904,905,5,101,0,0,905,906,5,120,0,0,906,907,5,112,0,0,907,908,5,114,0,0,908,126,1,0,0,0,909,910,5,102,0,0,910,911,5,97,0,0,911,912,5,108,0,0,912,913,5,115,0,0,913,914,5,101,0,0,914,128,1,0,0,0,915,916,5,102,0,0,916,917,5,101,0,0,917,918,5,97,0,0,918,919,5,116,0,0,919,920,5,117,0,0,920,921,5,114,0,0,921,922,5,101,0,0,922,130,1,0,0,0,923,924,5,102,0,0,924,925,5,101,0,0,925,926,5,97,0,0,926,927,5,116,0,0,927,928,5,117,0,0,928,929,5,114,0,0,929,930,5,101,0,0,930,931,5,100,0,0,931,132,1,0,0,0,932,933,5,102,0,0,933,934,5,101,0,0,934,935,5,97,0,0,935,936,5,116,0,0,936,937,5,117,0,0,937,938,5,114,0,0,938,939,5,105,0,0,939,940,5,110,0,0,940,941,5,103,0,0,941,134,1,0,0,0,942,943,5,102,0,0,943,944,5,105,0,0,944,945,5,108,0,0,945,946,5,116,0,0,946,947,5,101,0,0,947,948,5,114,0,0,948,136,1,0,0,0,949,950,5,102,0,0,950,951,5,105,0,0,951,952,5,114,0,0,952,953,5,115,0,0,953,954,5,116,0,0,954,138,1,0,0,0,955,956,5,102,0,0,956,957,5,108,0,0,957,958,5,111,0,0,958,959,5,119,0,0,959,140,1,0,0,0,960,961,5,102,0,0,961,962,5,111,0,0,962,963,5,114,0,0,963,142,1,0,0,0,964,965,5,102,0,0,965,966,5,111,0,0,966,967,5,114,0,0,967,968,5,107,0,0,968,144,1,0,0,0,969,970,5,102,0,0,970,971,5,114,0,0,971,972,5,97,0,0,972,973,5,109,0,0,973,974,5,101,0,0,974,146,1,0,0,0,975,976,5,102,0,0,976,977,5,114,0,0,977,978,5,111,0,0,978,979,5,109,0,0,979,148,1,0,0,0,980,981,5,102,0,0,981,982,5,117,0,0,982,983,5,110,0,0,983,984,5,99,0,0,984,985,5,116,0,0,985,986,5,105,0,0,986,987,5,111,0,0,987,988,5,110,0,0,988,150,1,0,0,0,989,990,5,104,0,0,990,991,5,97,0,0,991,992,5,115,0,0,992,993,5,116,0,0,993,994,5,121,0,0,994,995,5,112,0,0,995,996,5,101,0,0,996,152,1,0,0,0,997,998,5,105,0,0,998,999,5,102,0,0,999,154,1,0,0,0,1e3,1001,5,105,0,0,1001,1002,5,109,0,0,1002,1003,5,112,0,0,1003,1004,5,108,0,0,1004,1005,5,105,0,0,1005,1006,5,101,0,0,1006,1007,5,115,0,0,1007,156,1,0,0,0,1008,1009,5,105,0,0,1009,1010,5,109,0,0,1010,1011,5,112,0,0,1011,1012,5,111,0,0,1012,1013,5,114,0,0,1013,1014,5,116,0,0,1014,158,1,0,0,0,1015,1016,5,105,0,0,1016,1017,5,110,0,0,1017,160,1,0,0,0,1018,1019,5,105,0,0,1019,1020,5,110,0,0,1020,1021,5,99,0,0,1021,1022,5,108,0,0,1022,1023,5,117,0,0,1023,1024,5,100,0,0,1024,1025,5,101,0,0,1025,162,1,0,0,0,1026,1027,5,105,0,0,1027,1028,5,110,0,0,1028,1029,5,100,0,0,1029,1030,5,105,0,0,1030,1031,5,118,0,0,1031,1032,5,105,0,0,1032,1033,5,100,0,0,1033,1034,5,117,0,0,1034,1035,5,97,0,0,1035,1036,5,108,0,0,1036,164,1,0,0,0,1037,1038,5,105,0,0,1038,1039,5,110,0,0,1039,1040,5,111,0,0,1040,1041,5,117,0,0,1041,1042,5,116,0,0,1042,166,1,0,0,0,1043,1044,5,105,0,0,1044,1045,5,110,0,0,1045,1046,5,116,0,0,1046,1047,5,101,0,0,1047,1048,5,114,0,0,1048,1049,5,97,0,0,1049,1050,5,99,0,0,1050,1051,5,116,0,0,1051,1052,5,105,0,0,1052,1053,5,111,0,0,1053,1054,5,110,0,0,1054,168,1,0,0,0,1055,1056,5,105,0,0,1056,1057,5,110,0,0,1057,1058,5,116,0,0,1058,1059,5,101,0,0,1059,1060,5,114,0,0,1060,1061,5,102,0,0,1061,1062,5,97,0,0,1062,1063,5,99,0,0,1063,1064,5,101,0,0,1064,170,1,0,0,0,1065,1066,5,105,0,0,1066,1067,5,110,0,0,1067,1068,5,116,0,0,1068,1069,5,101,0,0,1069,1070,5,114,0,0,1070,1071,5,115,0,0,1071,1072,5,101,0,0,1072,1073,5,99,0,0,1073,1074,5,116,0,0,1074,1075,5,115,0,0,1075,172,1,0,0,0,1076,1077,5,105,0,0,1077,1078,5,110,0,0,1078,1079,5,118,0,0,1079,174,1,0,0,0,1080,1081,5,105,0,0,1081,1082,5,110,0,0,1082,1083,5,118,0,0,1083,1084,5,101,0,0,1084,1085,5,114,0,0,1085,1086,5,115,0,0,1086,1087,5,101,0,0,1087,176,1,0,0,0,1088,1089,5,105,0,0,1089,1090,5,110,0,0,1090,1091,5,118,0,0,1091,1092,5,101,0,0,1092,1093,5,114,0,0,1093,1094,5,116,0,0,1094,1095,5,105,0,0,1095,1096,5,110,0,0,1096,1097,5,103,0,0,1097,178,1,0,0,0,1098,1099,5,105,0,0,1099,1100,5,115,0,0,1100,1101,5,116,0,0,1101,1102,5,121,0,0,1102,1103,5,112,0,0,1103,1104,5,101,0,0,1104,180,1,0,0,0,1105,1106,5,105,0,0,1106,1107,5,116,0,0,1107,1108,5,101,0,0,1108,1109,5,109,0,0,1109,182,1,0,0,0,1110,1111,5,106,0,0,1111,1112,5,111,0,0,1112,1113,5,105,0,0,1113,1114,5,110,0,0,1114,184,1,0,0,0,1115,1116,5,108,0,0,1116,1117,5,97,0,0,1117,1118,5,110,0,0,1118,1119,5,103,0,0,1119,1120,5,117,0,0,1120,1121,5,97,0,0,1121,1122,5,103,0,0,1122,1123,5,101,0,0,1123,186,1,0,0,0,1124,1125,5,108,0,0,1125,1126,5,105,0,0,1126,1127,5,98,0,0,1127,1128,5,114,0,0,1128,1129,5,97,0,0,1129,1130,5,114,0,0,1130,1131,5,121,0,0,1131,188,1,0,0,0,1132,1133,5,108,0,0,1133,1134,5,111,0,0,1134,1135,5,99,0,0,1135,1136,5,97,0,0,1136,1137,5,108,0,0,1137,1138,5,101,0,0,1138,190,1,0,0,0,1139,1140,5,108,0,0,1140,1141,5,111,0,0,1141,1142,5,111,0,0,1142,1143,5,112,0,0,1143,192,1,0,0,0,1144,1145,5,109,0,0,1145,1146,5,101,0,0,1146,1147,5,109,0,0,1147,1148,5,98,0,0,1148,1149,5,101,0,0,1149,1150,5,114,0,0,1150,194,1,0,0,0,1151,1152,5,109,0,0,1152,1153,5,101,0,0,1153,1154,5,114,0,0,1154,1155,5,103,0,0,1155,1156,5,101,0,0,1156,196,1,0,0,0,1157,1158,5,109,0,0,1158,1159,5,101,0,0,1159,1160,5,115,0,0,1160,1161,5,115,0,0,1161,1162,5,97,0,0,1162,1163,5,103,0,0,1163,1164,5,101,0,0,1164,198,1,0,0,0,1165,1166,5,109,0,0,1166,1167,5,101,0,0,1167,1168,5,116,0,0,1168,1169,5,97,0,0,1169,200,1,0,0,0,1170,1171,5,109,0,0,1171,1172,5,101,0,0,1172,1173,5,116,0,0,1173,1174,5,97,0,0,1174,1175,5,99,0,0,1175,1176,5,108,0,0,1176,1177,5,97,0,0,1177,1178,5,115,0,0,1178,1179,5,115,0,0,1179,202,1,0,0,0,1180,1181,5,109,0,0,1181,1182,5,101,0,0,1182,1183,5,116,0,0,1183,1184,5,97,0,0,1184,1185,5,100,0,0,1185,1186,5,97,0,0,1186,1187,5,116,0,0,1187,1188,5,97,0,0,1188,204,1,0,0,0,1189,1190,5,109,0,0,1190,1191,5,117,0,0,1191,1192,5,108,0,0,1192,1193,5,116,0,0,1193,1194,5,105,0,0,1194,1195,5,112,0,0,1195,1196,5,108,0,0,1196,1197,5,105,0,0,1197,1198,5,99,0,0,1198,1199,5,105,0,0,1199,1200,5,116,0,0,1200,1201,5,121,0,0,1201,206,1,0,0,0,1202,1203,5,110,0,0,1203,1204,5,97,0,0,1204,1205,5,109,0,0,1205,1206,5,101,0,0,1206,1207,5,115,0,0,1207,1208,5,112,0,0,1208,1209,5,97,0,0,1209,1210,5,99,0,0,1210,1211,5,101,0,0,1211,208,1,0,0,0,1212,1213,5,110,0,0,1213,1214,5,101,0,0,1214,1215,5,119,0,0,1215,210,1,0,0,0,1216,1217,5,110,0,0,1217,1218,5,111,0,0,1218,1219,5,110,0,0,1219,1220,5,117,0,0,1220,1221,5,110,0,0,1221,1222,5,105,0,0,1222,1223,5,113,0,0,1223,1224,5,117,0,0,1224,1225,5,101,0,0,1225,212,1,0,0,0,1226,1227,5,110,0,0,1227,1228,5,111,0,0,1228,1229,5,116,0,0,1229,214,1,0,0,0,1230,1231,5,110,0,0,1231,1232,5,117,0,0,1232,1233,5,108,0,0,1233,1234,5,108,0,0,1234,216,1,0,0,0,1235,1236,5,111,0,0,1236,1237,5,98,0,0,1237,1238,5,106,0,0,1238,1239,5,101,0,0,1239,1240,5,99,0,0,1240,1241,5,116,0,0,1241,1242,5,105,0,0,1242,1243,5,118,0,0,1243,1244,5,101,0,0,1244,218,1,0,0,0,1245,1246,5,111,0,0,1246,1247,5,99,0,0,1247,1248,5,99,0,0,1248,1249,5,117,0,0,1249,1250,5,114,0,0,1250,1251,5,114,0,0,1251,1252,5,101,0,0,1252,1253,5,110,0,0,1253,1254,5,99,0,0,1254,1255,5,101,0,0,1255,220,1,0,0,0,1256,1257,5,111,0,0,1257,1258,5,102,0,0,1258,222,1,0,0,0,1259,1260,5,111,0,0,1260,1261,5,114,0,0,1261,224,1,0,0,0,1262,1263,5,111,0,0,1263,1264,5,114,0,0,1264,1265,5,100,0,0,1265,1266,5,101,0,0,1266,1267,5,114,0,0,1267,1268,5,101,0,0,1268,1269,5,100,0,0,1269,226,1,0,0,0,1270,1271,5,111,0,0,1271,1272,5,117,0,0,1272,1273,5,116,0,0,1273,228,1,0,0,0,1274,1275,5,112,0,0,1275,1276,5,97,0,0,1276,1277,5,99,0,0,1277,1278,5,107,0,0,1278,1279,5,97,0,0,1279,1280,5,103,0,0,1280,1281,5,101,0,0,1281,230,1,0,0,0,1282,1283,5,112,0,0,1283,1284,5,97,0,0,1284,1285,5,114,0,0,1285,1286,5,97,0,0,1286,1287,5,108,0,0,1287,1288,5,108,0,0,1288,1289,5,101,0,0,1289,1290,5,108,0,0,1290,232,1,0,0,0,1291,1292,5,112,0,0,1292,1293,5,97,0,0,1293,1294,5,114,0,0,1294,1295,5,116,0,0,1295,234,1,0,0,0,1296,1297,5,112,0,0,1297,1298,5,101,0,0,1298,1299,5,114,0,0,1299,1300,5,102,0,0,1300,1301,5,111,0,0,1301,1302,5,114,0,0,1302,1303,5,109,0,0,1303,236,1,0,0,0,1304,1305,5,112,0,0,1305,1306,5,111,0,0,1306,1307,5,114,0,0,1307,1308,5,116,0,0,1308,238,1,0,0,0,1309,1310,5,112,0,0,1310,1311,5,111,0,0,1311,1312,5,114,0,0,1312,1313,5,116,0,0,1313,1314,5,105,0,0,1314,1315,5,111,0,0,1315,1316,5,110,0,0,1316,240,1,0,0,0,1317,1318,5,112,0,0,1318,1319,5,114,0,0,1319,1320,5,101,0,0,1320,1321,5,100,0,0,1321,1322,5,105,0,0,1322,1323,5,99,0,0,1323,1324,5,97,0,0,1324,1325,5,116,0,0,1325,1326,5,101,0,0,1326,242,1,0,0,0,1327,1328,5,112,0,0,1328,1329,5,114,0,0,1329,1330,5,105,0,0,1330,1331,5,118,0,0,1331,1332,5,97,0,0,1332,1333,5,116,0,0,1333,1334,5,101,0,0,1334,244,1,0,0,0,1335,1336,5,112,0,0,1336,1337,5,114,0,0,1337,1338,5,111,0,0,1338,1339,5,116,0,0,1339,1340,5,101,0,0,1340,1341,5,99,0,0,1341,1342,5,116,0,0,1342,1343,5,101,0,0,1343,1344,5,100,0,0,1344,246,1,0,0,0,1345,1346,5,112,0,0,1346,1347,5,117,0,0,1347,1348,5,98,0,0,1348,1349,5,108,0,0,1349,1350,5,105,0,0,1350,1351,5,99,0,0,1351,248,1,0,0,0,1352,1353,5,114,0,0,1353,1354,5,101,0,0,1354,1355,5,100,0,0,1355,1356,5,101,0,0,1356,1357,5,102,0,0,1357,1358,5,105,0,0,1358,1359,5,110,0,0,1359,1360,5,101,0,0,1360,1361,5,115,0,0,1361,250,1,0,0,0,1362,1363,5,114,0,0,1363,1364,5,101,0,0,1364,1365,5,100,0,0,1365,1366,5,101,0,0,1366,1367,5,102,0,0,1367,1368,5,105,0,0,1368,1369,5,110,0,0,1369,1370,5,105,0,0,1370,1371,5,116,0,0,1371,1372,5,105,0,0,1372,1373,5,111,0,0,1373,1374,5,110,0,0,1374,252,1,0,0,0,1375,1376,5,114,0,0,1376,1377,5,101,0,0,1377,1378,5,102,0,0,1378,254,1,0,0,0,1379,1380,5,114,0,0,1380,1381,5,101,0,0,1381,1382,5,102,0,0,1382,1383,5,101,0,0,1383,1384,5,114,0,0,1384,1385,5,101,0,0,1385,1386,5,110,0,0,1386,1387,5,99,0,0,1387,1388,5,101,0,0,1388,1389,5,115,0,0,1389,256,1,0,0,0,1390,1391,5,114,0,0,1391,1392,5,101,0,0,1392,1393,5,110,0,0,1393,1394,5,100,0,0,1394,1395,5,101,0,0,1395,1396,5,114,0,0,1396,258,1,0,0,0,1397,1398,5,114,0,0,1398,1399,5,101,0,0,1399,1400,5,110,0,0,1400,1401,5,100,0,0,1401,1402,5,101,0,0,1402,1403,5,114,0,0,1403,1404,5,105,0,0,1404,1405,5,110,0,0,1405,1406,5,103,0,0,1406,260,1,0,0,0,1407,1408,5,114,0,0,1408,1409,5,101,0,0,1409,1410,5,112,0,0,1410,262,1,0,0,0,1411,1412,5,114,0,0,1412,1413,5,101,0,0,1413,1414,5,113,0,0,1414,1415,5,117,0,0,1415,1416,5,105,0,0,1416,1417,5,114,0,0,1417,1418,5,101,0,0,1418,264,1,0,0,0,1419,1420,5,114,0,0,1420,1421,5,101,0,0,1421,1422,5,113,0,0,1422,1423,5,117,0,0,1423,1424,5,105,0,0,1424,1425,5,114,0,0,1425,1426,5,101,0,0,1426,1427,5,109,0,0,1427,1428,5,101,0,0,1428,1429,5,110,0,0,1429,1430,5,116,0,0,1430,266,1,0,0,0,1431,1432,5,114,0,0,1432,1433,5,101,0,0,1433,1434,5,116,0,0,1434,1435,5,117,0,0,1435,1436,5,114,0,0,1436,1437,5,110,0,0,1437,268,1,0,0,0,1438,1439,5,115,0,0,1439,1440,5,97,0,0,1440,1441,5,116,0,0,1441,1442,5,105,0,0,1442,1443,5,115,0,0,1443,1444,5,102,0,0,1444,1445,5,121,0,0,1445,270,1,0,0,0,1446,1447,5,115,0,0,1447,1448,5,101,0,0,1448,1449,5,110,0,0,1449,1450,5,100,0,0,1450,272,1,0,0,0,1451,1452,5,115,0,0,1452,1453,5,110,0,0,1453,1454,5,97,0,0,1454,1455,5,112,0,0,1455,1456,5,115,0,0,1456,1457,5,104,0,0,1457,1458,5,111,0,0,1458,1459,5,116,0,0,1459,274,1,0,0,0,1460,1461,5,115,0,0,1461,1462,5,112,0,0,1462,1463,5,101,0,0,1463,1464,5,99,0,0,1464,1465,5,105,0,0,1465,1466,5,97,0,0,1466,1467,5,108,0,0,1467,1468,5,105,0,0,1468,1469,5,122,0,0,1469,1470,5,97,0,0,1470,1471,5,116,0,0,1471,1472,5,105,0,0,1472,1473,5,111,0,0,1473,1474,5,110,0,0,1474,276,1,0,0,0,1475,1476,5,115,0,0,1476,1477,5,112,0,0,1477,1478,5,101,0,0,1478,1479,5,99,0,0,1479,1480,5,105,0,0,1480,1481,5,97,0,0,1481,1482,5,108,0,0,1482,1483,5,105,0,0,1483,1484,5,122,0,0,1484,1485,5,101,0,0,1485,1486,5,115,0,0,1486,278,1,0,0,0,1487,1488,5,115,0,0,1488,1489,5,116,0,0,1489,1490,5,97,0,0,1490,1491,5,107,0,0,1491,1492,5,101,0,0,1492,1493,5,104,0,0,1493,1494,5,111,0,0,1494,1495,5,108,0,0,1495,1496,5,100,0,0,1496,1497,5,101,0,0,1497,1498,5,114,0,0,1498,280,1,0,0,0,1499,1500,5,115,0,0,1500,1501,5,116,0,0,1501,1502,5,97,0,0,1502,1503,5,110,0,0,1503,1504,5,100,0,0,1504,1505,5,97,0,0,1505,1506,5,114,0,0,1506,1507,5,100,0,0,1507,282,1,0,0,0,1508,1509,5,115,0,0,1509,1510,5,116,0,0,1510,1511,5,97,0,0,1511,1512,5,116,0,0,1512,1513,5,101,0,0,1513,284,1,0,0,0,1514,1515,5,115,0,0,1515,1516,5,116,0,0,1516,1517,5,101,0,0,1517,1518,5,112,0,0,1518,286,1,0,0,0,1519,1520,5,115,0,0,1520,1521,5,116,0,0,1521,1522,5,114,0,0,1522,1523,5,117,0,0,1523,1524,5,99,0,0,1524,1525,5,116,0,0,1525,288,1,0,0,0,1526,1527,5,115,0,0,1527,1528,5,117,0,0,1528,1529,5,98,0,0,1529,1530,5,99,0,0,1530,1531,5,108,0,0,1531,1532,5,97,0,0,1532,1533,5,115,0,0,1533,1534,5,115,0,0,1534,1535,5,105,0,0,1535,1536,5,102,0,0,1536,1537,5,105,0,0,1537,1538,5,101,0,0,1538,1539,5,114,0,0,1539,290,1,0,0,0,1540,1541,5,115,0,0,1541,1542,5,117,0,0,1542,1543,5,98,0,0,1543,1544,5,106,0,0,1544,1545,5,101,0,0,1545,1546,5,99,0,0,1546,1547,5,116,0,0,1547,292,1,0,0,0,1548,1549,5,115,0,0,1549,1550,5,117,0,0,1550,1551,5,98,0,0,1551,1552,5,115,0,0,1552,1553,5,101,0,0,1553,1554,5,116,0,0,1554,294,1,0,0,0,1555,1556,5,115,0,0,1556,1557,5,117,0,0,1557,1558,5,98,0,0,1558,1559,5,115,0,0,1559,1560,5,101,0,0,1560,1561,5,116,0,0,1561,1562,5,115,0,0,1562,296,1,0,0,0,1563,1564,5,115,0,0,1564,1565,5,117,0,0,1565,1566,5,98,0,0,1566,1567,5,116,0,0,1567,1568,5,121,0,0,1568,1569,5,112,0,0,1569,1570,5,101,0,0,1570,298,1,0,0,0,1571,1572,5,115,0,0,1572,1573,5,117,0,0,1573,1574,5,99,0,0,1574,1575,5,99,0,0,1575,1576,5,101,0,0,1576,1577,5,115,0,0,1577,1578,5,115,0,0,1578,1579,5,105,0,0,1579,1580,5,111,0,0,1580,1581,5,110,0,0,1581,300,1,0,0,0,1582,1583,5,116,0,0,1583,1584,5,101,0,0,1584,1585,5,114,0,0,1585,1586,5,109,0,0,1586,1587,5,105,0,0,1587,1588,5,110,0,0,1588,1589,5,97,0,0,1589,1590,5,116,0,0,1590,1591,5,101,0,0,1591,302,1,0,0,0,1592,1593,5,116,0,0,1593,1594,5,104,0,0,1594,1595,5,101,0,0,1595,1596,5,110,0,0,1596,304,1,0,0,0,1597,1598,5,116,0,0,1598,1599,5,105,0,0,1599,1600,5,109,0,0,1600,1601,5,101,0,0,1601,1602,5,115,0,0,1602,1603,5,108,0,0,1603,1604,5,105,0,0,1604,1605,5,99,0,0,1605,1606,5,101,0,0,1606,306,1,0,0,0,1607,1608,5,116,0,0,1608,1609,5,111,0,0,1609,308,1,0,0,0,1610,1611,5,116,0,0,1611,1612,5,114,0,0,1612,1613,5,97,0,0,1613,1614,5,110,0,0,1614,1615,5,115,0,0,1615,1616,5,105,0,0,1616,1617,5,116,0,0,1617,1618,5,105,0,0,1618,1619,5,111,0,0,1619,1620,5,110,0,0,1620,310,1,0,0,0,1621,1622,5,116,0,0,1622,1623,5,114,0,0,1623,1624,5,117,0,0,1624,1625,5,101,0,0,1625,312,1,0,0,0,1626,1627,5,116,0,0,1627,1628,5,121,0,0,1628,1629,5,112,0,0,1629,1630,5,101,0,0,1630,314,1,0,0,0,1631,1632,5,116,0,0,1632,1633,5,121,0,0,1633,1634,5,112,0,0,1634,1635,5,101,0,0,1635,1636,5,100,0,0,1636,316,1,0,0,0,1637,1638,5,116,0,0,1638,1639,5,121,0,0,1639,1640,5,112,0,0,1640,1641,5,105,0,0,1641,1642,5,110,0,0,1642,1643,5,103,0,0,1643,318,1,0,0,0,1644,1645,5,117,0,0,1645,1646,5,110,0,0,1646,1647,5,105,0,0,1647,1648,5,111,0,0,1648,1649,5,110,0,0,1649,1650,5,115,0,0,1650,320,1,0,0,0,1651,1652,5,117,0,0,1652,1653,5,110,0,0,1653,1654,5,116,0,0,1654,1655,5,105,0,0,1655,1656,5,108,0,0,1656,322,1,0,0,0,1657,1658,5,117,0,0,1658,1659,5,115,0,0,1659,1660,5,101,0,0,1660,324,1,0,0,0,1661,1662,5,118,0,0,1662,1663,5,97,0,0,1663,1664,5,114,0,0,1664,326,1,0,0,0,1665,1666,5,118,0,0,1666,1667,5,97,0,0,1667,1668,5,114,0,0,1668,1669,5,105,0,0,1669,1670,5,97,0,0,1670,1671,5,110,0,0,1671,1672,5,116,0,0,1672,328,1,0,0,0,1673,1674,5,118,0,0,1674,1675,5,97,0,0,1675,1676,5,114,0,0,1676,1677,5,105,0,0,1677,1678,5,97,0,0,1678,1679,5,116,0,0,1679,1680,5,105,0,0,1680,1681,5,111,0,0,1681,1682,5,110,0,0,1682,330,1,0,0,0,1683,1684,5,118,0,0,1684,1685,5,101,0,0,1685,1686,5,114,0,0,1686,1687,5,105,0,0,1687,1688,5,102,0,0,1688,1689,5,105,0,0,1689,1690,5,99,0,0,1690,1691,5,97,0,0,1691,1692,5,116,0,0,1692,1693,5,105,0,0,1693,1694,5,111,0,0,1694,1695,5,110,0,0,1695,332,1,0,0,0,1696,1697,5,118,0,0,1697,1698,5,101,0,0,1698,1699,5,114,0,0,1699,1700,5,105,0,0,1700,1701,5,102,0,0,1701,1702,5,121,0,0,1702,334,1,0,0,0,1703,1704,5,118,0,0,1704,1705,5,105,0,0,1705,1706,5,97,0,0,1706,336,1,0,0,0,1707,1708,5,118,0,0,1708,1709,5,105,0,0,1709,1710,5,101,0,0,1710,1711,5,119,0,0,1711,338,1,0,0,0,1712,1713,5,118,0,0,1713,1714,5,105,0,0,1714,1715,5,101,0,0,1715,1716,5,119,0,0,1716,1717,5,112,0,0,1717,1718,5,111,0,0,1718,1719,5,105,0,0,1719,1720,5,110,0,0,1720,1721,5,116,0,0,1721,340,1,0,0,0,1722,1723,5,119,0,0,1723,1724,5,104,0,0,1724,1725,5,101,0,0,1725,1726,5,110,0,0,1726,342,1,0,0,0,1727,1728,5,119,0,0,1728,1729,5,104,0,0,1729,1730,5,105,0,0,1730,1731,5,108,0,0,1731,1732,5,101,0,0,1732,344,1,0,0,0,1733,1734,5,120,0,0,1734,1735,5,111,0,0,1735,1736,5,114,0,0,1736,346,1,0,0,0,1737,1738,5,33,0,0,1738,1739,5,61,0,0,1739,1740,5,61,0,0,1740,348,1,0,0,0,1741,1742,5,58,0,0,1742,1743,5,58,0,0,1743,1744,5,62,0,0,1744,350,1,0,0,0,1745,1746,5,58,0,0,1746,1747,5,62,0,0,1747,1748,5,62,0,0,1748,352,1,0,0,0,1749,1750,5,61,0,0,1750,1751,5,61,0,0,1751,1752,5,61,0,0,1752,354,1,0,0,0,1753,1754,5,33,0,0,1754,1755,5,61,0,0,1755,356,1,0,0,0,1756,1757,5,42,0,0,1757,1758,5,42,0,0,1758,358,1,0,0,0,1759,1760,5,45,0,0,1760,1761,5,62,0,0,1761,360,1,0,0,0,1762,1763,5,46,0,0,1763,1764,5,46,0,0,1764,362,1,0,0,0,1765,1766,5,46,0,0,1766,1767,5,63,0,0,1767,364,1,0,0,0,1768,1769,5,58,0,0,1769,1770,5,58,0,0,1770,366,1,0,0,0,1771,1772,5,58,0,0,1772,1773,5,61,0,0,1773,368,1,0,0,0,1774,1775,5,58,0,0,1775,1776,5,62,0,0,1776,370,1,0,0,0,1777,1778,5,60,0,0,1778,1779,5,61,0,0,1779,372,1,0,0,0,1780,1781,5,61,0,0,1781,1782,5,61,0,0,1782,374,1,0,0,0,1783,1784,5,61,0,0,1784,1785,5,62,0,0,1785,376,1,0,0,0,1786,1787,5,62,0,0,1787,1788,5,61,0,0,1788,378,1,0,0,0,1789,1790,5,63,0,0,1790,1791,5,63,0,0,1791,380,1,0,0,0,1792,1793,5,64,0,0,1793,1794,5,64,0,0,1794,382,1,0,0,0,1795,1796,5,35,0,0,1796,384,1,0,0,0,1797,1798,5,36,0,0,1798,386,1,0,0,0,1799,1800,5,37,0,0,1800,388,1,0,0,0,1801,1802,5,38,0,0,1802,390,1,0,0,0,1803,1804,5,40,0,0,1804,392,1,0,0,0,1805,1806,5,41,0,0,1806,394,1,0,0,0,1807,1808,5,42,0,0,1808,396,1,0,0,0,1809,1810,5,43,0,0,1810,398,1,0,0,0,1811,1812,5,44,0,0,1812,400,1,0,0,0,1813,1814,5,45,0,0,1814,402,1,0,0,0,1815,1816,5,46,0,0,1816,404,1,0,0,0,1817,1818,5,47,0,0,1818,406,1,0,0,0,1819,1820,5,58,0,0,1820,408,1,0,0,0,1821,1822,5,59,0,0,1822,410,1,0,0,0,1823,1824,5,60,0,0,1824,412,1,0,0,0,1825,1826,5,61,0,0,1826,414,1,0,0,0,1827,1828,5,62,0,0,1828,416,1,0,0,0,1829,1830,5,63,0,0,1830,418,1,0,0,0,1831,1832,5,64,0,0,1832,420,1,0,0,0,1833,1834,5,91,0,0,1834,422,1,0,0,0,1835,1836,5,93,0,0,1836,424,1,0,0,0,1837,1838,5,94,0,0,1838,426,1,0,0,0,1839,1840,5,123,0,0,1840,428,1,0,0,0,1841,1842,5,124,0,0,1842,430,1,0,0,0,1843,1844,5,125,0,0,1844,432,1,0,0,0,1845,1846,5,126,0,0,1846,434,1,0,0,0,1847,1851,7,0,0,0,1848,1850,7,1,0,0,1849,1848,1,0,0,0,1850,1853,1,0,0,0,1851,1849,1,0,0,0,1851,1852,1,0,0,0,1852,436,1,0,0,0,1853,1851,1,0,0,0,1854,1860,5,39,0,0,1855,1856,5,92,0,0,1856,1859,9,0,0,0,1857,1859,8,2,0,0,1858,1855,1,0,0,0,1858,1857,1,0,0,0,1859,1862,1,0,0,0,1860,1858,1,0,0,0,1860,1861,1,0,0,0,1861,1863,1,0,0,0,1862,1860,1,0,0,0,1863,1864,5,39,0,0,1864,438,1,0,0,0,1865,1871,5,34,0,0,1866,1867,5,92,0,0,1867,1870,9,0,0,0,1868,1870,8,3,0,0,1869,1866,1,0,0,0,1869,1868,1,0,0,0,1870,1873,1,0,0,0,1871,1869,1,0,0,0,1871,1872,1,0,0,0,1872,1874,1,0,0,0,1873,1871,1,0,0,0,1874,1875,5,34,0,0,1875,440,1,0,0,0,1876,1878,7,4,0,0,1877,1876,1,0,0,0,1878,1879,1,0,0,0,1879,1877,1,0,0,0,1879,1880,1,0,0,0,1880,442,1,0,0,0,1881,1883,7,4,0,0,1882,1881,1,0,0,0,1883,1886,1,0,0,0,1884,1882,1,0,0,0,1884,1885,1,0,0,0,1885,1887,1,0,0,0,1886,1884,1,0,0,0,1887,1889,5,46,0,0,1888,1890,7,4,0,0,1889,1888,1,0,0,0,1890,1891,1,0,0,0,1891,1889,1,0,0,0,1891,1892,1,0,0,0,1892,1902,1,0,0,0,1893,1895,7,5,0,0,1894,1896,7,6,0,0,1895,1894,1,0,0,0,1895,1896,1,0,0,0,1896,1898,1,0,0,0,1897,1899,7,4,0,0,1898,1897,1,0,0,0,1899,1900,1,0,0,0,1900,1898,1,0,0,0,1900,1901,1,0,0,0,1901,1903,1,0,0,0,1902,1893,1,0,0,0,1902,1903,1,0,0,0,1903,1919,1,0,0,0,1904,1906,7,4,0,0,1905,1904,1,0,0,0,1906,1907,1,0,0,0,1907,1905,1,0,0,0,1907,1908,1,0,0,0,1908,1909,1,0,0,0,1909,1911,7,5,0,0,1910,1912,7,6,0,0,1911,1910,1,0,0,0,1911,1912,1,0,0,0,1912,1914,1,0,0,0,1913,1915,7,4,0,0,1914,1913,1,0,0,0,1915,1916,1,0,0,0,1916,1914,1,0,0,0,1916,1917,1,0,0,0,1917,1919,1,0,0,0,1918,1884,1,0,0,0,1918,1905,1,0,0,0,1919,444,1,0,0,0,1920,1921,5,47,0,0,1921,1922,5,42,0,0,1922,1926,1,0,0,0,1923,1925,9,0,0,0,1924,1923,1,0,0,0,1925,1928,1,0,0,0,1926,1927,1,0,0,0,1926,1924,1,0,0,0,1927,1929,1,0,0,0,1928,1926,1,0,0,0,1929,1930,5,42,0,0,1930,1931,5,47,0,0,1931,446,1,0,0,0,1932,1933,5,47,0,0,1933,1934,5,47,0,0,1934,1938,1,0,0,0,1935,1937,8,7,0,0,1936,1935,1,0,0,0,1937,1940,1,0,0,0,1938,1936,1,0,0,0,1938,1939,1,0,0,0,1939,1941,1,0,0,0,1940,1938,1,0,0,0,1941,1942,6,223,0,0,1942,448,1,0,0,0,1943,1945,7,8,0,0,1944,1943,1,0,0,0,1945,1946,1,0,0,0,1946,1944,1,0,0,0,1946,1947,1,0,0,0,1947,1948,1,0,0,0,1948,1949,6,224,0,0,1949,450,1,0,0,0,19,0,1851,1858,1860,1869,1871,1879,1884,1891,1895,1900,1902,1907,1911,1916,1918,1926,1938,1946,1,6,0,0];static __ATN;static get _ATN(){return r.__ATN||(r.__ATN=new Ks().deserialize(r._serializedATN)),r.__ATN}static vocabulary=new nn(r.literalNames,r.symbolicNames,[]);get vocabulary(){return r.vocabulary}static decisionsToDFA=r._ATN.decisionToState.map((e,t)=>new rs(e,t))};var l=class r extends F9{static ABOUT=1;static ABSTRACT=2;static ACCEPT=3;static ACTION=4;static ACTOR=5;static AFTER=6;static ALIAS=7;static ALL=8;static ALLOCATE=9;static ALLOCATION=10;static ANALYSIS=11;static AND=12;static AS=13;static ASSERT=14;static ASSIGN=15;static ASSOC=16;static ASSUME=17;static AT=18;static ATTRIBUTE=19;static BEHAVIOR=20;static BIND=21;static BINDING=22;static BOOL=23;static BY=24;static CALC=25;static CASE=26;static CHAINS=27;static CLASS=28;static CLASSIFIER=29;static COMMENT=30;static COMPOSITE=31;static CONCERN=32;static CONJUGATE=33;static CONJUGATES=34;static CONJUGATION=35;static CONNECT=36;static CONNECTION=37;static CONNECTOR=38;static CONST=39;static CONSTANT=40;static CONSTRAINT=41;static CROSSES=42;static DATATYPE=43;static DECIDE=44;static DEF=45;static DEFAULT=46;static DEFINED=47;static DEPENDENCY=48;static DERIVED=49;static DIFFERENCES=50;static DISJOINING=51;static DISJOINT=52;static DO=53;static DOC=54;static ELSE=55;static END=56;static ENTRY=57;static ENUM=58;static EVENT=59;static EXHIBIT=60;static EXIT=61;static EXPOSE=62;static EXPR=63;static FALSE=64;static FEATURE=65;static FEATURED=66;static FEATURING=67;static FILTER=68;static FIRST=69;static FLOW=70;static FOR=71;static FORK=72;static FRAME=73;static FROM=74;static FUNCTION=75;static HASTYPE=76;static IF=77;static IMPLIES=78;static IMPORT=79;static IN=80;static INCLUDE=81;static INDIVIDUAL=82;static INOUT=83;static INTERACTION=84;static INTERFACE=85;static INTERSECTS=86;static INV=87;static INVERSE=88;static INVERTING=89;static ISTYPE=90;static ITEM=91;static JOIN=92;static LANGUAGE=93;static LIBRARY=94;static LOCALE=95;static LOOP=96;static MEMBER=97;static MERGE=98;static MESSAGE=99;static META=100;static METACLASS=101;static METADATA=102;static MULTIPLICITY=103;static NAMESPACE=104;static NEW=105;static NONUNIQUE=106;static NOT=107;static NULL=108;static OBJECTIVE=109;static OCCURRENCE=110;static OF=111;static OR=112;static ORDERED=113;static OUT=114;static PACKAGE=115;static PARALLEL=116;static PART=117;static PERFORM=118;static PORT=119;static PORTION=120;static PREDICATE=121;static PRIVATE=122;static PROTECTED=123;static PUBLIC=124;static REDEFINES=125;static REDEFINITION=126;static REF=127;static REFERENCES=128;static RENDER=129;static RENDERING=130;static REP=131;static REQUIRE=132;static REQUIREMENT=133;static RETURN=134;static SATISFY=135;static SEND=136;static SNAPSHOT=137;static SPECIALIZATION=138;static SPECIALIZES=139;static STAKEHOLDER=140;static STANDARD=141;static STATE=142;static STEP=143;static STRUCT=144;static SUBCLASSIFIER=145;static SUBJECT=146;static SUBSET=147;static SUBSETS=148;static SUBTYPE=149;static SUCCESSION=150;static TERMINATE=151;static THEN=152;static TIMESLICE=153;static TO=154;static TRANSITION=155;static TRUE=156;static TYPE=157;static TYPED=158;static TYPING=159;static UNIONS=160;static UNTIL=161;static USE=162;static VAR=163;static VARIANT=164;static VARIATION=165;static VERIFICATION=166;static VERIFY=167;static VIA=168;static VIEW=169;static VIEWPOINT=170;static WHEN=171;static WHILE=172;static XOR=173;static BANG_EQ_EQ=174;static COLON_COLON_GT=175;static COLON_GT_GT=176;static EQ_EQ_EQ=177;static BANG_EQ=178;static STAR_STAR=179;static ARROW=180;static DOT_DOT=181;static DOT_QUESTION=182;static COLON_COLON=183;static COLON_EQ=184;static COLON_GT=185;static LE=186;static EQ_EQ=187;static FAT_ARROW=188;static GE=189;static QUESTION_QUESTION=190;static AT_AT=191;static HASH=192;static DOLLAR=193;static PERCENT=194;static AMP=195;static LPAREN=196;static RPAREN=197;static STAR=198;static PLUS=199;static COMMA=200;static MINUS=201;static DOT=202;static SLASH=203;static COLON=204;static SEMI=205;static LT=206;static EQ=207;static GT=208;static QUESTION=209;static AT_SIGN=210;static LBRACK=211;static RBRACK=212;static CARET=213;static LBRACE=214;static PIPE=215;static RBRACE=216;static TILDE=217;static IDENTIFIER=218;static STRING=219;static DOUBLE_STRING=220;static INTEGER=221;static REAL=222;static REGULAR_COMMENT=223;static SINGLE_LINE_NOTE=224;static WS=225;static RULE_ownedExpression=0;static RULE_typeReference=1;static RULE_sequenceExpressionList=2;static RULE_baseExpression=3;static RULE_nullExpression=4;static RULE_featureReferenceExpression=5;static RULE_metadataAccessExpression=6;static RULE_invocationExpression=7;static RULE_constructorExpression=8;static RULE_bodyExpression=9;static RULE_argumentList=10;static RULE_positionalArgumentList=11;static RULE_namedArgumentList=12;static RULE_namedArgument=13;static RULE_literalExpression=14;static RULE_literalBoolean=15;static RULE_literalString=16;static RULE_literalInteger=17;static RULE_literalReal=18;static RULE_literalInfinity=19;static RULE_argumentMember=20;static RULE_argumentExpressionMember=21;static RULE_name=22;static RULE_identification=23;static RULE_relationshipBody=24;static RULE_relationshipOwnedElement=25;static RULE_ownedRelatedElement=26;static RULE_dependency=27;static RULE_annotation=28;static RULE_ownedAnnotation=29;static RULE_annotatingElement=30;static RULE_comment=31;static RULE_documentation=32;static RULE_textualRepresentation=33;static RULE_rootNamespace=34;static RULE_namespace=35;static RULE_namespaceDeclaration=36;static RULE_namespaceBody=37;static RULE_namespaceBodyElement=38;static RULE_memberPrefix=39;static RULE_visibilityIndicator=40;static RULE_namespaceMember=41;static RULE_nonFeatureMember=42;static RULE_namespaceFeatureMember=43;static RULE_aliasMember=44;static RULE_qualifiedName=45;static RULE_importRule=46;static RULE_importDeclaration=47;static RULE_membershipImport=48;static RULE_namespaceImport=49;static RULE_filterPackage=50;static RULE_filterPackageMember=51;static RULE_memberElement=52;static RULE_nonFeatureElement=53;static RULE_featureElement=54;static RULE_type=55;static RULE_typePrefix=56;static RULE_typeDeclaration=57;static RULE_specializationPart=58;static RULE_conjugationPart=59;static RULE_typeRelationshipPart=60;static RULE_disjoiningPart=61;static RULE_unioningPart=62;static RULE_intersectingPart=63;static RULE_differencingPart=64;static RULE_typeBody=65;static RULE_typeBodyElement=66;static RULE_specialization=67;static RULE_ownedSpecialization=68;static RULE_specificType=69;static RULE_generalType=70;static RULE_conjugation=71;static RULE_ownedConjugation=72;static RULE_disjoining=73;static RULE_ownedDisjoining=74;static RULE_unioning=75;static RULE_intersecting=76;static RULE_differencing=77;static RULE_featureMember=78;static RULE_typeFeatureMember=79;static RULE_ownedFeatureMember=80;static RULE_classifier=81;static RULE_classifierDeclaration=82;static RULE_superclassingPart=83;static RULE_subclassification=84;static RULE_ownedSubclassification=85;static RULE_feature=86;static RULE_endFeaturePrefix=87;static RULE_basicFeaturePrefix=88;static RULE_featurePrefix=89;static RULE_ownedCrossFeatureMember=90;static RULE_ownedCrossFeature=91;static RULE_featureDirection=92;static RULE_featureDeclaration=93;static RULE_featureIdentification=94;static RULE_featureRelationshipPart=95;static RULE_chainingPart=96;static RULE_invertingPart=97;static RULE_typeFeaturingPart=98;static RULE_featureSpecializationPart=99;static RULE_multiplicityPart=100;static RULE_featureSpecialization=101;static RULE_typings=102;static RULE_typedBy=103;static RULE_subsettings=104;static RULE_subsets=105;static RULE_references=106;static RULE_crosses=107;static RULE_redefinitions=108;static RULE_redefines=109;static RULE_featureTyping=110;static RULE_ownedFeatureTyping=111;static RULE_subsetting=112;static RULE_ownedSubsetting=113;static RULE_ownedReferenceSubsetting=114;static RULE_ownedCrossSubsetting=115;static RULE_redefinition=116;static RULE_ownedRedefinition=117;static RULE_ownedFeatureChain=118;static RULE_featureChain=119;static RULE_ownedFeatureChaining=120;static RULE_featureInverting=121;static RULE_ownedFeatureInverting=122;static RULE_typeFeaturing=123;static RULE_ownedTypeFeaturing=124;static RULE_dataType=125;static RULE_class=126;static RULE_structure=127;static RULE_association=128;static RULE_associationStructure=129;static RULE_connector=130;static RULE_connectorDeclaration=131;static RULE_binaryConnectorDeclaration=132;static RULE_naryConnectorDeclaration=133;static RULE_connectorEndMember=134;static RULE_connectorEnd=135;static RULE_ownedCrossMultiplicityMember=136;static RULE_ownedCrossMultiplicity=137;static RULE_bindingConnector=138;static RULE_bindingConnectorDeclaration=139;static RULE_succession=140;static RULE_successionDeclaration=141;static RULE_behavior=142;static RULE_step=143;static RULE_function=144;static RULE_functionBody=145;static RULE_functionBodyPart=146;static RULE_returnFeatureMember=147;static RULE_resultExpressionMember=148;static RULE_expression=149;static RULE_predicate=150;static RULE_booleanExpression=151;static RULE_invariant=152;static RULE_ownedExpressionMember=153;static RULE_metadataReference=154;static RULE_typeReferenceMember=155;static RULE_typeResultMember=156;static RULE_referenceTyping=157;static RULE_emptyResultMember=158;static RULE_sequenceOperatorExpression=159;static RULE_sequenceExpressionListMember=160;static RULE_bodyArgumentMember=161;static RULE_bodyArgument=162;static RULE_bodyArgumentValue=163;static RULE_functionReferenceArgumentMember=164;static RULE_functionReferenceArgument=165;static RULE_functionReferenceArgumentValue=166;static RULE_functionReferenceExpression=167;static RULE_functionReferenceMember=168;static RULE_functionReference=169;static RULE_featureChainMember=170;static RULE_ownedFeatureChainMember=171;static RULE_featureReferenceMember=172;static RULE_featureReference=173;static RULE_elementReferenceMember=174;static RULE_constructorResultMember=175;static RULE_constructorResult=176;static RULE_instantiatedTypeMember=177;static RULE_instantiatedTypeReference=178;static RULE_namedArgumentMember=179;static RULE_parameterRedefinition=180;static RULE_expressionBodyMember=181;static RULE_expressionBody=182;static RULE_booleanValue=183;static RULE_realValue=184;static RULE_interaction=185;static RULE_flow=186;static RULE_successionFlow=187;static RULE_flowDeclaration=188;static RULE_payloadFeatureMember=189;static RULE_payloadFeature=190;static RULE_payloadFeatureSpecializationPart=191;static RULE_flowEndMember=192;static RULE_flowEnd=193;static RULE_flowFeatureMember=194;static RULE_flowFeature=195;static RULE_flowFeatureRedefinition=196;static RULE_valuePart=197;static RULE_featureValue=198;static RULE_multiplicity=199;static RULE_multiplicitySubset=200;static RULE_multiplicityRange=201;static RULE_ownedMultiplicity=202;static RULE_ownedMultiplicityRange=203;static RULE_multiplicityBounds=204;static RULE_multiplicityExpressionMember=205;static RULE_metaclass=206;static RULE_prefixMetadataAnnotation=207;static RULE_prefixMetadataMember=208;static RULE_prefixMetadataFeature=209;static RULE_metadataFeature=210;static RULE_metadataFeatureDeclaration=211;static RULE_metadataBody=212;static RULE_metadataBodyElement=213;static RULE_metadataBodyFeatureMember=214;static RULE_metadataBodyFeature=215;static RULE_package=216;static RULE_libraryPackage=217;static RULE_packageDeclaration=218;static RULE_packageBody=219;static RULE_elementFilterMember=220;static RULE_dependencyDeclaration=221;static RULE_annotatingMember=222;static RULE_packageBodyElement=223;static RULE_packageMember=224;static RULE_definitionElement=225;static RULE_usageElement=226;static RULE_basicDefinitionPrefix=227;static RULE_definitionExtensionKeyword=228;static RULE_definitionPrefix=229;static RULE_definition=230;static RULE_definitionDeclaration=231;static RULE_definitionBody=232;static RULE_definitionBodyItem=233;static RULE_definitionBodyItemContent=234;static RULE_definitionMember=235;static RULE_variantUsageMember=236;static RULE_nonOccurrenceUsageMember=237;static RULE_occurrenceUsageMember=238;static RULE_structureUsageMember=239;static RULE_behaviorUsageMember=240;static RULE_refPrefix=241;static RULE_basicUsagePrefix=242;static RULE_endUsagePrefix=243;static RULE_usageExtensionKeyword=244;static RULE_unextendedUsagePrefix=245;static RULE_usagePrefix=246;static RULE_usage=247;static RULE_usageDeclaration=248;static RULE_usageCompletion=249;static RULE_usageBody=250;static RULE_defaultReferenceUsage=251;static RULE_referenceUsage=252;static RULE_endFeatureUsage=253;static RULE_variantReference=254;static RULE_nonOccurrenceUsageElement=255;static RULE_occurrenceUsageElement=256;static RULE_structureUsageElement=257;static RULE_behaviorUsageElement=258;static RULE_variantUsageElement=259;static RULE_subclassificationPart=260;static RULE_attributeDefinition=261;static RULE_attributeUsage=262;static RULE_enumerationDefinition=263;static RULE_enumerationBody=264;static RULE_enumerationUsageMember=265;static RULE_enumeratedValue=266;static RULE_enumerationUsage=267;static RULE_occurrenceDefinitionPrefix=268;static RULE_occurrenceDefinition=269;static RULE_individualDefinition=270;static RULE_emptyMultiplicityMember=271;static RULE_occurrenceUsagePrefix=272;static RULE_occurrenceUsage=273;static RULE_individualUsage=274;static RULE_portionUsage=275;static RULE_portionKind=276;static RULE_eventOccurrenceUsage=277;static RULE_sourceSuccessionMember=278;static RULE_sourceSuccession=279;static RULE_sourceEndMember=280;static RULE_sourceEnd=281;static RULE_itemDefinition=282;static RULE_itemUsage=283;static RULE_partDefinition=284;static RULE_partUsage=285;static RULE_portDefinition=286;static RULE_conjugatedPortDefinitionMember=287;static RULE_conjugatedPortDefinition=288;static RULE_portUsage=289;static RULE_conjugatedPortTyping=290;static RULE_connectionDefinition=291;static RULE_connectionUsage=292;static RULE_connectorPart=293;static RULE_binaryConnectorPart=294;static RULE_naryConnectorPart=295;static RULE_bindingConnectorAsUsage=296;static RULE_successionAsUsage=297;static RULE_interfaceDefinition=298;static RULE_interfaceBody=299;static RULE_interfaceBodyItem=300;static RULE_interfaceNonOccurrenceUsageMember=301;static RULE_interfaceNonOccurrenceUsageElement=302;static RULE_interfaceOccurrenceUsageMember=303;static RULE_interfaceOccurrenceUsageElement=304;static RULE_defaultInterfaceEnd=305;static RULE_interfaceUsage=306;static RULE_interfaceUsageDeclaration=307;static RULE_interfacePart=308;static RULE_binaryInterfacePart=309;static RULE_naryInterfacePart=310;static RULE_interfaceEndMember=311;static RULE_interfaceEnd=312;static RULE_allocationDefinition=313;static RULE_allocationUsage=314;static RULE_allocationUsageDeclaration=315;static RULE_flowDefinition=316;static RULE_message=317;static RULE_messageDeclaration=318;static RULE_messageEventMember=319;static RULE_messageEvent=320;static RULE_flowUsage=321;static RULE_successionFlowUsage=322;static RULE_flowPayloadFeatureMember=323;static RULE_flowPayloadFeature=324;static RULE_flowEndSubsetting=325;static RULE_featureChainPrefix=326;static RULE_actionDefinition=327;static RULE_actionBody=328;static RULE_actionBodyItem=329;static RULE_nonBehaviorBodyItem=330;static RULE_actionBehaviorMember=331;static RULE_initialNodeMember=332;static RULE_actionNodeMember=333;static RULE_actionTargetSuccessionMember=334;static RULE_guardedSuccessionMember=335;static RULE_actionUsage=336;static RULE_actionUsageDeclaration=337;static RULE_performActionUsage=338;static RULE_performActionUsageDeclaration=339;static RULE_actionNode=340;static RULE_actionNodeUsageDeclaration=341;static RULE_actionNodePrefix=342;static RULE_controlNode=343;static RULE_controlNodePrefix=344;static RULE_mergeNode=345;static RULE_decisionNode=346;static RULE_joinNode=347;static RULE_forkNode=348;static RULE_acceptNode=349;static RULE_acceptNodeDeclaration=350;static RULE_acceptParameterPart=351;static RULE_payloadParameterMember=352;static RULE_payloadParameter=353;static RULE_triggerValuePart=354;static RULE_triggerFeatureValue=355;static RULE_triggerExpression=356;static RULE_sendNode=357;static RULE_sendNodeDeclaration=358;static RULE_senderReceiverPart=359;static RULE_nodeParameterMember=360;static RULE_nodeParameter=361;static RULE_featureBinding=362;static RULE_emptyParameterMember=363;static RULE_assignmentNode=364;static RULE_assignmentNodeDeclaration=365;static RULE_assignmentTargetMember=366;static RULE_assignmentTargetParameter=367;static RULE_assignmentTargetBinding=368;static RULE_terminateNode=369;static RULE_ifNode=370;static RULE_expressionParameterMember=371;static RULE_actionBodyParameterMember=372;static RULE_actionBodyParameter=373;static RULE_ifNodeParameterMember=374;static RULE_whileLoopNode=375;static RULE_forLoopNode=376;static RULE_forVariableDeclarationMember=377;static RULE_forVariableDeclaration=378;static RULE_actionTargetSuccession=379;static RULE_targetSuccession=380;static RULE_guardedTargetSuccession=381;static RULE_defaultTargetSuccession=382;static RULE_guardedSuccession=383;static RULE_stateDefinition=384;static RULE_stateDefBody=385;static RULE_stateBodyItem=386;static RULE_entryActionMember=387;static RULE_doActionMember=388;static RULE_exitActionMember=389;static RULE_entryTransitionMember=390;static RULE_stateActionUsage=391;static RULE_statePerformActionUsage=392;static RULE_stateAcceptActionUsage=393;static RULE_stateSendActionUsage=394;static RULE_stateAssignmentActionUsage=395;static RULE_transitionUsageMember=396;static RULE_targetTransitionUsageMember=397;static RULE_stateUsage=398;static RULE_stateUsageBody=399;static RULE_exhibitStateUsage=400;static RULE_transitionUsage=401;static RULE_targetTransitionUsage=402;static RULE_triggerActionMember=403;static RULE_triggerAction=404;static RULE_guardExpressionMember=405;static RULE_effectBehaviorMember=406;static RULE_effectBehaviorUsage=407;static RULE_transitionPerformActionUsage=408;static RULE_transitionAcceptActionUsage=409;static RULE_transitionSendActionUsage=410;static RULE_transitionAssignmentActionUsage=411;static RULE_transitionSuccessionMember=412;static RULE_transitionSuccession=413;static RULE_emptyEndMember=414;static RULE_calculationDefinition=415;static RULE_calculationUsage=416;static RULE_calculationBody=417;static RULE_calculationBodyPart=418;static RULE_calculationBodyItem=419;static RULE_returnParameterMember=420;static RULE_constraintDefinition=421;static RULE_constraintUsage=422;static RULE_assertConstraintUsage=423;static RULE_constraintUsageDeclaration=424;static RULE_requirementDefinition=425;static RULE_requirementBody=426;static RULE_requirementBodyItem=427;static RULE_subjectMember=428;static RULE_subjectUsage=429;static RULE_requirementConstraintMember=430;static RULE_requirementKind=431;static RULE_requirementConstraintUsage=432;static RULE_framedConcernMember=433;static RULE_framedConcernUsage=434;static RULE_actorMember=435;static RULE_actorUsage=436;static RULE_stakeholderMember=437;static RULE_stakeholderUsage=438;static RULE_requirementUsage=439;static RULE_satisfyRequirementUsage=440;static RULE_satisfactionSubjectMember=441;static RULE_satisfactionParameter=442;static RULE_satisfactionFeatureValue=443;static RULE_satisfactionReferenceExpression=444;static RULE_concernDefinition=445;static RULE_concernUsage=446;static RULE_caseDefinition=447;static RULE_caseUsage=448;static RULE_caseBody=449;static RULE_caseBodyItem=450;static RULE_objectiveMember=451;static RULE_objectiveRequirementUsage=452;static RULE_analysisCaseDefinition=453;static RULE_analysisCaseUsage=454;static RULE_verificationCaseDefinition=455;static RULE_verificationCaseUsage=456;static RULE_requirementVerificationMember=457;static RULE_requirementVerificationUsage=458;static RULE_useCaseDefinition=459;static RULE_useCaseUsage=460;static RULE_includeUseCaseUsage=461;static RULE_viewDefinition=462;static RULE_viewDefinitionBody=463;static RULE_viewDefinitionBodyItem=464;static RULE_viewRenderingMember=465;static RULE_viewRenderingUsage=466;static RULE_viewUsage=467;static RULE_viewBody=468;static RULE_viewBodyItem=469;static RULE_expose=470;static RULE_membershipExpose=471;static RULE_namespaceExpose=472;static RULE_viewpointDefinition=473;static RULE_viewpointUsage=474;static RULE_renderingDefinition=475;static RULE_renderingUsage=476;static RULE_metadataDefinition=477;static RULE_prefixMetadataUsage=478;static RULE_metadataUsage=479;static RULE_metadataUsageDeclaration=480;static RULE_metadataBodyUsageMember=481;static RULE_metadataBodyUsage=482;static RULE_extendedDefinition=483;static RULE_extendedUsage=484;static RULE_filterPackageImportDeclaration=485;static RULE_namespaceImportDirect=486;static RULE_calculationUsageDeclaration=487;static RULE_emptyActionUsage_=488;static RULE_emptyFeature_=489;static RULE_emptyMultiplicity_=490;static RULE_emptyUsage_=491;static RULE_filterPackageImport=492;static RULE_nonFeatureChainPrimaryExpression=493;static RULE_portConjugation=494;static literalNames=[null,"'about'","'abstract'","'accept'","'action'","'actor'","'after'","'alias'","'all'","'allocate'","'allocation'","'analysis'","'and'","'as'","'assert'","'assign'","'assoc'","'assume'","'at'","'attribute'","'behavior'","'bind'","'binding'","'bool'","'by'","'calc'","'case'","'chains'","'class'","'classifier'","'comment'","'composite'","'concern'","'conjugate'","'conjugates'","'conjugation'","'connect'","'connection'","'connector'","'const'","'constant'","'constraint'","'crosses'","'datatype'","'decide'","'def'","'default'","'defined'","'dependency'","'derived'","'differences'","'disjoining'","'disjoint'","'do'","'doc'","'else'","'end'","'entry'","'enum'","'event'","'exhibit'","'exit'","'expose'","'expr'","'false'","'feature'","'featured'","'featuring'","'filter'","'first'","'flow'","'for'","'fork'","'frame'","'from'","'function'","'hastype'","'if'","'implies'","'import'","'in'","'include'","'individual'","'inout'","'interaction'","'interface'","'intersects'","'inv'","'inverse'","'inverting'","'istype'","'item'","'join'","'language'","'library'","'locale'","'loop'","'member'","'merge'","'message'","'meta'","'metaclass'","'metadata'","'multiplicity'","'namespace'","'new'","'nonunique'","'not'","'null'","'objective'","'occurrence'","'of'","'or'","'ordered'","'out'","'package'","'parallel'","'part'","'perform'","'port'","'portion'","'predicate'","'private'","'protected'","'public'","'redefines'","'redefinition'","'ref'","'references'","'render'","'rendering'","'rep'","'require'","'requirement'","'return'","'satisfy'","'send'","'snapshot'","'specialization'","'specializes'","'stakeholder'","'standard'","'state'","'step'","'struct'","'subclassifier'","'subject'","'subset'","'subsets'","'subtype'","'succession'","'terminate'","'then'","'timeslice'","'to'","'transition'","'true'","'type'","'typed'","'typing'","'unions'","'until'","'use'","'var'","'variant'","'variation'","'verification'","'verify'","'via'","'view'","'viewpoint'","'when'","'while'","'xor'","'!=='","'::>'","':>>'","'==='","'!='","'**'","'->'","'..'","'.?'","'::'","':='","':>'","'<='","'=='","'=>'","'>='","'??'","'@@'","'#'","'$'","'%'","'&'","'('","')'","'*'","'+'","','","'-'","'.'","'/'","':'","';'","'<'","'='","'>'","'?'","'@'","'['","']'","'^'","'{'","'|'","'}'","'~'"];static symbolicNames=[null,"ABOUT","ABSTRACT","ACCEPT","ACTION","ACTOR","AFTER","ALIAS","ALL","ALLOCATE","ALLOCATION","ANALYSIS","AND","AS","ASSERT","ASSIGN","ASSOC","ASSUME","AT","ATTRIBUTE","BEHAVIOR","BIND","BINDING","BOOL","BY","CALC","CASE","CHAINS","CLASS","CLASSIFIER","COMMENT","COMPOSITE","CONCERN","CONJUGATE","CONJUGATES","CONJUGATION","CONNECT","CONNECTION","CONNECTOR","CONST","CONSTANT","CONSTRAINT","CROSSES","DATATYPE","DECIDE","DEF","DEFAULT","DEFINED","DEPENDENCY","DERIVED","DIFFERENCES","DISJOINING","DISJOINT","DO","DOC","ELSE","END","ENTRY","ENUM","EVENT","EXHIBIT","EXIT","EXPOSE","EXPR","FALSE","FEATURE","FEATURED","FEATURING","FILTER","FIRST","FLOW","FOR","FORK","FRAME","FROM","FUNCTION","HASTYPE","IF","IMPLIES","IMPORT","IN","INCLUDE","INDIVIDUAL","INOUT","INTERACTION","INTERFACE","INTERSECTS","INV","INVERSE","INVERTING","ISTYPE","ITEM","JOIN","LANGUAGE","LIBRARY","LOCALE","LOOP","MEMBER","MERGE","MESSAGE","META","METACLASS","METADATA","MULTIPLICITY","NAMESPACE","NEW","NONUNIQUE","NOT","NULL","OBJECTIVE","OCCURRENCE","OF","OR","ORDERED","OUT","PACKAGE","PARALLEL","PART","PERFORM","PORT","PORTION","PREDICATE","PRIVATE","PROTECTED","PUBLIC","REDEFINES","REDEFINITION","REF","REFERENCES","RENDER","RENDERING","REP","REQUIRE","REQUIREMENT","RETURN","SATISFY","SEND","SNAPSHOT","SPECIALIZATION","SPECIALIZES","STAKEHOLDER","STANDARD","STATE","STEP","STRUCT","SUBCLASSIFIER","SUBJECT","SUBSET","SUBSETS","SUBTYPE","SUCCESSION","TERMINATE","THEN","TIMESLICE","TO","TRANSITION","TRUE","TYPE","TYPED","TYPING","UNIONS","UNTIL","USE","VAR","VARIANT","VARIATION","VERIFICATION","VERIFY","VIA","VIEW","VIEWPOINT","WHEN","WHILE","XOR","BANG_EQ_EQ","COLON_COLON_GT","COLON_GT_GT","EQ_EQ_EQ","BANG_EQ","STAR_STAR","ARROW","DOT_DOT","DOT_QUESTION","COLON_COLON","COLON_EQ","COLON_GT","LE","EQ_EQ","FAT_ARROW","GE","QUESTION_QUESTION","AT_AT","HASH","DOLLAR","PERCENT","AMP","LPAREN","RPAREN","STAR","PLUS","COMMA","MINUS","DOT","SLASH","COLON","SEMI","LT","EQ","GT","QUESTION","AT_SIGN","LBRACK","RBRACK","CARET","LBRACE","PIPE","RBRACE","TILDE","IDENTIFIER","STRING","DOUBLE_STRING","INTEGER","REAL","REGULAR_COMMENT","SINGLE_LINE_NOTE","WS"];static ruleNames=["ownedExpression","typeReference","sequenceExpressionList","baseExpression","nullExpression","featureReferenceExpression","metadataAccessExpression","invocationExpression","constructorExpression","bodyExpression","argumentList","positionalArgumentList","namedArgumentList","namedArgument","literalExpression","literalBoolean","literalString","literalInteger","literalReal","literalInfinity","argumentMember","argumentExpressionMember","name","identification","relationshipBody","relationshipOwnedElement","ownedRelatedElement","dependency","annotation","ownedAnnotation","annotatingElement","comment","documentation","textualRepresentation","rootNamespace","namespace","namespaceDeclaration","namespaceBody","namespaceBodyElement","memberPrefix","visibilityIndicator","namespaceMember","nonFeatureMember","namespaceFeatureMember","aliasMember","qualifiedName","importRule","importDeclaration","membershipImport","namespaceImport","filterPackage","filterPackageMember","memberElement","nonFeatureElement","featureElement","type","typePrefix","typeDeclaration","specializationPart","conjugationPart","typeRelationshipPart","disjoiningPart","unioningPart","intersectingPart","differencingPart","typeBody","typeBodyElement","specialization","ownedSpecialization","specificType","generalType","conjugation","ownedConjugation","disjoining","ownedDisjoining","unioning","intersecting","differencing","featureMember","typeFeatureMember","ownedFeatureMember","classifier","classifierDeclaration","superclassingPart","subclassification","ownedSubclassification","feature","endFeaturePrefix","basicFeaturePrefix","featurePrefix","ownedCrossFeatureMember","ownedCrossFeature","featureDirection","featureDeclaration","featureIdentification","featureRelationshipPart","chainingPart","invertingPart","typeFeaturingPart","featureSpecializationPart","multiplicityPart","featureSpecialization","typings","typedBy","subsettings","subsets","references","crosses","redefinitions","redefines","featureTyping","ownedFeatureTyping","subsetting","ownedSubsetting","ownedReferenceSubsetting","ownedCrossSubsetting","redefinition","ownedRedefinition","ownedFeatureChain","featureChain","ownedFeatureChaining","featureInverting","ownedFeatureInverting","typeFeaturing","ownedTypeFeaturing","dataType","class","structure","association","associationStructure","connector","connectorDeclaration","binaryConnectorDeclaration","naryConnectorDeclaration","connectorEndMember","connectorEnd","ownedCrossMultiplicityMember","ownedCrossMultiplicity","bindingConnector","bindingConnectorDeclaration","succession","successionDeclaration","behavior","step","function","functionBody","functionBodyPart","returnFeatureMember","resultExpressionMember","expression","predicate","booleanExpression","invariant","ownedExpressionMember","metadataReference","typeReferenceMember","typeResultMember","referenceTyping","emptyResultMember","sequenceOperatorExpression","sequenceExpressionListMember","bodyArgumentMember","bodyArgument","bodyArgumentValue","functionReferenceArgumentMember","functionReferenceArgument","functionReferenceArgumentValue","functionReferenceExpression","functionReferenceMember","functionReference","featureChainMember","ownedFeatureChainMember","featureReferenceMember","featureReference","elementReferenceMember","constructorResultMember","constructorResult","instantiatedTypeMember","instantiatedTypeReference","namedArgumentMember","parameterRedefinition","expressionBodyMember","expressionBody","booleanValue","realValue","interaction","flow","successionFlow","flowDeclaration","payloadFeatureMember","payloadFeature","payloadFeatureSpecializationPart","flowEndMember","flowEnd","flowFeatureMember","flowFeature","flowFeatureRedefinition","valuePart","featureValue","multiplicity","multiplicitySubset","multiplicityRange","ownedMultiplicity","ownedMultiplicityRange","multiplicityBounds","multiplicityExpressionMember","metaclass","prefixMetadataAnnotation","prefixMetadataMember","prefixMetadataFeature","metadataFeature","metadataFeatureDeclaration","metadataBody","metadataBodyElement","metadataBodyFeatureMember","metadataBodyFeature","package","libraryPackage","packageDeclaration","packageBody","elementFilterMember","dependencyDeclaration","annotatingMember","packageBodyElement","packageMember","definitionElement","usageElement","basicDefinitionPrefix","definitionExtensionKeyword","definitionPrefix","definition","definitionDeclaration","definitionBody","definitionBodyItem","definitionBodyItemContent","definitionMember","variantUsageMember","nonOccurrenceUsageMember","occurrenceUsageMember","structureUsageMember","behaviorUsageMember","refPrefix","basicUsagePrefix","endUsagePrefix","usageExtensionKeyword","unextendedUsagePrefix","usagePrefix","usage","usageDeclaration","usageCompletion","usageBody","defaultReferenceUsage","referenceUsage","endFeatureUsage","variantReference","nonOccurrenceUsageElement","occurrenceUsageElement","structureUsageElement","behaviorUsageElement","variantUsageElement","subclassificationPart","attributeDefinition","attributeUsage","enumerationDefinition","enumerationBody","enumerationUsageMember","enumeratedValue","enumerationUsage","occurrenceDefinitionPrefix","occurrenceDefinition","individualDefinition","emptyMultiplicityMember","occurrenceUsagePrefix","occurrenceUsage","individualUsage","portionUsage","portionKind","eventOccurrenceUsage","sourceSuccessionMember","sourceSuccession","sourceEndMember","sourceEnd","itemDefinition","itemUsage","partDefinition","partUsage","portDefinition","conjugatedPortDefinitionMember","conjugatedPortDefinition","portUsage","conjugatedPortTyping","connectionDefinition","connectionUsage","connectorPart","binaryConnectorPart","naryConnectorPart","bindingConnectorAsUsage","successionAsUsage","interfaceDefinition","interfaceBody","interfaceBodyItem","interfaceNonOccurrenceUsageMember","interfaceNonOccurrenceUsageElement","interfaceOccurrenceUsageMember","interfaceOccurrenceUsageElement","defaultInterfaceEnd","interfaceUsage","interfaceUsageDeclaration","interfacePart","binaryInterfacePart","naryInterfacePart","interfaceEndMember","interfaceEnd","allocationDefinition","allocationUsage","allocationUsageDeclaration","flowDefinition","message","messageDeclaration","messageEventMember","messageEvent","flowUsage","successionFlowUsage","flowPayloadFeatureMember","flowPayloadFeature","flowEndSubsetting","featureChainPrefix","actionDefinition","actionBody","actionBodyItem","nonBehaviorBodyItem","actionBehaviorMember","initialNodeMember","actionNodeMember","actionTargetSuccessionMember","guardedSuccessionMember","actionUsage","actionUsageDeclaration","performActionUsage","performActionUsageDeclaration","actionNode","actionNodeUsageDeclaration","actionNodePrefix","controlNode","controlNodePrefix","mergeNode","decisionNode","joinNode","forkNode","acceptNode","acceptNodeDeclaration","acceptParameterPart","payloadParameterMember","payloadParameter","triggerValuePart","triggerFeatureValue","triggerExpression","sendNode","sendNodeDeclaration","senderReceiverPart","nodeParameterMember","nodeParameter","featureBinding","emptyParameterMember","assignmentNode","assignmentNodeDeclaration","assignmentTargetMember","assignmentTargetParameter","assignmentTargetBinding","terminateNode","ifNode","expressionParameterMember","actionBodyParameterMember","actionBodyParameter","ifNodeParameterMember","whileLoopNode","forLoopNode","forVariableDeclarationMember","forVariableDeclaration","actionTargetSuccession","targetSuccession","guardedTargetSuccession","defaultTargetSuccession","guardedSuccession","stateDefinition","stateDefBody","stateBodyItem","entryActionMember","doActionMember","exitActionMember","entryTransitionMember","stateActionUsage","statePerformActionUsage","stateAcceptActionUsage","stateSendActionUsage","stateAssignmentActionUsage","transitionUsageMember","targetTransitionUsageMember","stateUsage","stateUsageBody","exhibitStateUsage","transitionUsage","targetTransitionUsage","triggerActionMember","triggerAction","guardExpressionMember","effectBehaviorMember","effectBehaviorUsage","transitionPerformActionUsage","transitionAcceptActionUsage","transitionSendActionUsage","transitionAssignmentActionUsage","transitionSuccessionMember","transitionSuccession","emptyEndMember","calculationDefinition","calculationUsage","calculationBody","calculationBodyPart","calculationBodyItem","returnParameterMember","constraintDefinition","constraintUsage","assertConstraintUsage","constraintUsageDeclaration","requirementDefinition","requirementBody","requirementBodyItem","subjectMember","subjectUsage","requirementConstraintMember","requirementKind","requirementConstraintUsage","framedConcernMember","framedConcernUsage","actorMember","actorUsage","stakeholderMember","stakeholderUsage","requirementUsage","satisfyRequirementUsage","satisfactionSubjectMember","satisfactionParameter","satisfactionFeatureValue","satisfactionReferenceExpression","concernDefinition","concernUsage","caseDefinition","caseUsage","caseBody","caseBodyItem","objectiveMember","objectiveRequirementUsage","analysisCaseDefinition","analysisCaseUsage","verificationCaseDefinition","verificationCaseUsage","requirementVerificationMember","requirementVerificationUsage","useCaseDefinition","useCaseUsage","includeUseCaseUsage","viewDefinition","viewDefinitionBody","viewDefinitionBodyItem","viewRenderingMember","viewRenderingUsage","viewUsage","viewBody","viewBodyItem","expose","membershipExpose","namespaceExpose","viewpointDefinition","viewpointUsage","renderingDefinition","renderingUsage","metadataDefinition","prefixMetadataUsage","metadataUsage","metadataUsageDeclaration","metadataBodyUsageMember","metadataBodyUsage","extendedDefinition","extendedUsage","filterPackageImportDeclaration","namespaceImportDirect","calculationUsageDeclaration","emptyActionUsage_","emptyFeature_","emptyMultiplicity_","emptyUsage_","filterPackageImport","nonFeatureChainPrimaryExpression","portConjugation"];get grammarFileName(){return"SysMLv2Parser.g4"}get literalNames(){return r.literalNames}get symbolicNames(){return r.symbolicNames}get ruleNames(){return r.ruleNames}get serializedATN(){return r._serializedATN}createFailedPredicateException(e,t){return new L1(this,e,t)}constructor(e){super(e),this.interpreter=new T1(this,r._ATN,r.decisionsToDFA,new oa)}ownedExpression(e){e===void 0&&(e=0);let t=this.context,i=this.state,n=new Me(this.context,i),s=n,o=0;this.enterRecursionRule(n,0,r.RULE_ownedExpression,e);let a;try{let u;this.enterOuterAlt(n,1);{switch(this.state=1005,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.IF:this.state=991,this.match(r.IF),this.state=992,this.ownedExpression(0),this.state=993,this.match(r.QUESTION),this.state=994,this.ownedExpression(0),this.state=995,this.match(r.ELSE),this.state=996,this.ownedExpression(28);break;case r.NOT:case r.PLUS:case r.MINUS:case r.TILDE:this.state=998,a=this.tokenStream.LA(1),a===107||(a-199&-32)===0&&(1<<a-199&262149)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=999,this.ownedExpression(14);break;case r.AT_AT:case r.AT_SIGN:this.state=1e3,a=this.tokenStream.LA(1),a===191||a===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1001,this.typeReference();break;case r.ALL:this.state=1002,this.match(r.ALL),this.state=1003,this.typeReference();break;case r.FALSE:case r.NEW:case r.NULL:case r.TRUE:case r.DOLLAR:case r.LPAREN:case r.STAR:case r.LBRACE:case r.IDENTIFIER:case r.STRING:case r.DOUBLE_STRING:case r.INTEGER:case r.REAL:this.state=1004,this.baseExpression();break;default:throw new ne(this)}for(this.context.stop=this.tokenStream.LT(-1),this.state=1088,this.errorHandler.sync(this),u=this.interpreter.adaptivePredict(this.tokenStream,5,this.context);u!==2&&u!==Ce.INVALID_ALT_NUMBER;){if(u===1)switch(this.parseListeners!=null&&this.triggerExitRuleEvent(),s=n,this.state=1086,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,4,this.context)){case 1:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1007,!this.precpred(this.context,27))throw this.createFailedPredicateException("this.precpred(this.context, 27)");this.state=1008,this.match(r.QUESTION_QUESTION),this.state=1009,this.ownedExpression(28)}break;case 2:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1010,!this.precpred(this.context,26))throw this.createFailedPredicateException("this.precpred(this.context, 26)");this.state=1011,this.match(r.IMPLIES),this.state=1012,this.ownedExpression(27)}break;case 3:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1013,!this.precpred(this.context,25))throw this.createFailedPredicateException("this.precpred(this.context, 25)");this.state=1014,this.match(r.OR),this.state=1015,this.ownedExpression(26)}break;case 4:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1016,!this.precpred(this.context,24))throw this.createFailedPredicateException("this.precpred(this.context, 24)");this.state=1017,this.match(r.AND),this.state=1018,this.ownedExpression(25)}break;case 5:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1019,!this.precpred(this.context,23))throw this.createFailedPredicateException("this.precpred(this.context, 23)");this.state=1020,this.match(r.XOR),this.state=1021,this.ownedExpression(24)}break;case 6:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1022,!this.precpred(this.context,22))throw this.createFailedPredicateException("this.precpred(this.context, 22)");this.state=1023,this.match(r.PIPE),this.state=1024,this.ownedExpression(23)}break;case 7:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1025,!this.precpred(this.context,21))throw this.createFailedPredicateException("this.precpred(this.context, 21)");this.state=1026,this.match(r.AMP),this.state=1027,this.ownedExpression(22)}break;case 8:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1028,!this.precpred(this.context,20))throw this.createFailedPredicateException("this.precpred(this.context, 20)");this.state=1029,a=this.tokenStream.LA(1),(a-174&-32)===0&&(1<<a-174&8217)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1030,this.ownedExpression(21)}break;case 9:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1031,!this.precpred(this.context,19))throw this.createFailedPredicateException("this.precpred(this.context, 19)");this.state=1032,a=this.tokenStream.LA(1),(a-186&-32)===0&&(1<<a-186&5242889)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1033,this.ownedExpression(20)}break;case 10:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1034,!this.precpred(this.context,18))throw this.createFailedPredicateException("this.precpred(this.context, 18)");this.state=1035,this.match(r.DOT_DOT),this.state=1036,this.ownedExpression(19)}break;case 11:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1037,!this.precpred(this.context,17))throw this.createFailedPredicateException("this.precpred(this.context, 17)");this.state=1038,a=this.tokenStream.LA(1),a===199||a===201?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1039,this.ownedExpression(18)}break;case 12:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1040,!this.precpred(this.context,16))throw this.createFailedPredicateException("this.precpred(this.context, 16)");this.state=1041,a=this.tokenStream.LA(1),(a-194&-32)===0&&(1<<a-194&529)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1042,this.ownedExpression(17)}break;case 13:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1043,!this.precpred(this.context,15))throw this.createFailedPredicateException("this.precpred(this.context, 15)");this.state=1044,a=this.tokenStream.LA(1),a===179||a===213?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1045,this.ownedExpression(15)}break;case 14:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1046,!this.precpred(this.context,12))throw this.createFailedPredicateException("this.precpred(this.context, 12)");this.state=1047,a=this.tokenStream.LA(1),a===76||a===90||a===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1048,this.typeReference()}break;case 15:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1049,!this.precpred(this.context,11))throw this.createFailedPredicateException("this.precpred(this.context, 11)");this.state=1050,this.match(r.AS),this.state=1051,this.typeReference()}break;case 16:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1052,!this.precpred(this.context,10))throw this.createFailedPredicateException("this.precpred(this.context, 10)");this.state=1053,this.match(r.AT_AT),this.state=1054,this.typeReference()}break;case 17:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1055,!this.precpred(this.context,9))throw this.createFailedPredicateException("this.precpred(this.context, 9)");this.state=1056,this.match(r.META),this.state=1057,this.typeReference()}break;case 18:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1058,!this.precpred(this.context,8))throw this.createFailedPredicateException("this.precpred(this.context, 8)");this.state=1059,this.match(r.LBRACK),this.state=1061,this.errorHandler.sync(this),a=this.tokenStream.LA(1),(a===8||a===64||a===77||(a-105&-32)===0&&(1<<a-105&13)!==0||a===156||(a-191&-32)===0&&(1<<a-191&4236772773)!==0)&&(this.state=1060,this.sequenceExpressionList()),this.state=1063,this.match(r.RBRACK)}break;case 19:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1064,!this.precpred(this.context,7))throw this.createFailedPredicateException("this.precpred(this.context, 7)");this.state=1065,this.match(r.HASH),this.state=1066,this.match(r.LPAREN),this.state=1068,this.errorHandler.sync(this),a=this.tokenStream.LA(1),(a===8||a===64||a===77||(a-105&-32)===0&&(1<<a-105&13)!==0||a===156||(a-191&-32)===0&&(1<<a-191&4236772773)!==0)&&(this.state=1067,this.sequenceExpressionList()),this.state=1070,this.match(r.RPAREN)}break;case 20:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1071,!this.precpred(this.context,6))throw this.createFailedPredicateException("this.precpred(this.context, 6)");this.state=1072,this.argumentList()}break;case 21:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1073,!this.precpred(this.context,5))throw this.createFailedPredicateException("this.precpred(this.context, 5)");this.state=1074,this.match(r.DOT),this.state=1075,this.qualifiedName()}break;case 22:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1076,!this.precpred(this.context,4))throw this.createFailedPredicateException("this.precpred(this.context, 4)");this.state=1077,this.match(r.DOT_QUESTION),this.state=1078,this.bodyExpression()}break;case 23:{if(n=new Me(t,i),this.pushNewRecursionContext(n,o,r.RULE_ownedExpression),this.state=1079,!this.precpred(this.context,3))throw this.createFailedPredicateException("this.precpred(this.context, 3)");switch(this.state=1080,this.match(r.ARROW),this.state=1081,this.qualifiedName(),this.state=1084,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LBRACE:this.state=1082,this.bodyExpression();break;case r.LPAREN:this.state=1083,this.argumentList();break;default:throw new ne(this)}}break}this.state=1090,this.errorHandler.sync(this),u=this.interpreter.adaptivePredict(this.tokenStream,5,this.context)}}}catch(u){if(u instanceof p)this.errorHandler.reportError(this,u),this.errorHandler.recover(this,u);else throw u}finally{this.unrollRecursionContexts(t)}return n}typeReference(){let e=new cu(this.context,this.state);this.enterRule(e,2,r.RULE_typeReference);try{this.enterOuterAlt(e,1),this.state=1091,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sequenceExpressionList(){let e=new du(this.context,this.state);this.enterRule(e,4,r.RULE_sequenceExpressionList);let t;try{for(this.enterOuterAlt(e,1),this.state=1093,this.ownedExpression(0),this.state=1098,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1094,this.match(r.COMMA),this.state=1095,this.ownedExpression(0),this.state=1100,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}baseExpression(){let e=new Sg(this.context,this.state);this.enterRule(e,6,r.RULE_baseExpression);let t;try{switch(this.state=1116,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,9,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1101,this.nullExpression();break;case 2:this.enterOuterAlt(e,2),this.state=1102,this.literalExpression();break;case 3:switch(this.enterOuterAlt(e,3),this.state=1103,this.qualifiedName(),this.state=1107,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,7,this.context)){case 1:this.state=1104,this.argumentList();break;case 2:this.state=1105,this.match(r.DOT),this.state=1106,this.match(r.METADATA);break}break;case 4:this.enterOuterAlt(e,4),this.state=1109,this.constructorExpression();break;case 5:this.enterOuterAlt(e,5),this.state=1110,this.bodyExpression();break;case 6:this.enterOuterAlt(e,6),this.state=1111,this.match(r.LPAREN),this.state=1113,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&13)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=1112,this.sequenceExpressionList()),this.state=1115,this.match(r.RPAREN);break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nullExpression(){let e=new Pg(this.context,this.state);this.enterRule(e,8,r.RULE_nullExpression);try{switch(this.state=1121,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.NULL:this.enterOuterAlt(e,1),this.state=1118,this.match(r.NULL);break;case r.LPAREN:this.enterOuterAlt(e,2),this.state=1119,this.match(r.LPAREN),this.state=1120,this.match(r.RPAREN);break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureReferenceExpression(){let e=new Lg(this.context,this.state);this.enterRule(e,10,r.RULE_featureReferenceExpression);try{this.enterOuterAlt(e,1),this.state=1123,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataAccessExpression(){let e=new H9(this.context,this.state);this.enterRule(e,12,r.RULE_metadataAccessExpression);try{this.enterOuterAlt(e,1),this.state=1125,this.qualifiedName(),this.state=1126,this.match(r.DOT),this.state=1127,this.match(r.METADATA)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}invocationExpression(){let e=new z9(this.context,this.state);this.enterRule(e,14,r.RULE_invocationExpression);try{this.enterOuterAlt(e,1),this.state=1129,this.qualifiedName(),this.state=1130,this.argumentList()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constructorExpression(){let e=new Tg(this.context,this.state);this.enterRule(e,16,r.RULE_constructorExpression);try{this.enterOuterAlt(e,1),this.state=1132,this.match(r.NEW),this.state=1133,this.qualifiedName(),this.state=1134,this.argumentList()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyExpression(){let e=new hu(this.context,this.state);this.enterRule(e,18,r.RULE_bodyExpression);try{this.enterOuterAlt(e,1),this.state=1136,this.match(r.LBRACE),this.state=1137,this.functionBodyPart(),this.state=1138,this.match(r.RBRACE)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}argumentList(){let e=new Js(this.context,this.state);this.enterRule(e,20,r.RULE_argumentList);try{this.enterOuterAlt(e,1);{switch(this.state=1140,this.match(r.LPAREN),this.state=1143,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,11,this.context)){case 1:this.state=1141,this.positionalArgumentList();break;case 2:this.state=1142,this.namedArgumentList();break}this.state=1145,this.match(r.RPAREN)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}positionalArgumentList(){let e=new wg(this.context,this.state);this.enterRule(e,22,r.RULE_positionalArgumentList);let t;try{for(this.enterOuterAlt(e,1),this.state=1147,this.ownedExpression(0),this.state=1152,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1148,this.match(r.COMMA),this.state=1149,this.ownedExpression(0),this.state=1154,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namedArgumentList(){let e=new kg(this.context,this.state);this.enterRule(e,24,r.RULE_namedArgumentList);let t;try{for(this.enterOuterAlt(e,1),this.state=1155,this.namedArgument(),this.state=1160,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1156,this.match(r.COMMA),this.state=1157,this.namedArgument(),this.state=1162,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namedArgument(){let e=new pu(this.context,this.state);this.enterRule(e,26,r.RULE_namedArgument);try{this.enterOuterAlt(e,1),this.state=1163,this.qualifiedName(),this.state=1164,this.match(r.EQ),this.state=1165,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalExpression(){let e=new w1(this.context,this.state);this.enterRule(e,28,r.RULE_literalExpression);try{switch(this.state=1172,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.FALSE:case r.TRUE:this.enterOuterAlt(e,1),this.state=1167,this.literalBoolean();break;case r.DOUBLE_STRING:this.enterOuterAlt(e,2),this.state=1168,this.literalString();break;case r.INTEGER:this.enterOuterAlt(e,3),this.state=1169,this.literalInteger();break;case r.REAL:this.enterOuterAlt(e,4),this.state=1170,this.literalReal();break;case r.STAR:this.enterOuterAlt(e,5),this.state=1171,this.literalInfinity();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalBoolean(){let e=new Ag(this.context,this.state);this.enterRule(e,30,r.RULE_literalBoolean);let t;try{this.enterOuterAlt(e,1),this.state=1174,t=this.tokenStream.LA(1),t===64||t===156?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}literalString(){let e=new Mg(this.context,this.state);this.enterRule(e,32,r.RULE_literalString);try{this.enterOuterAlt(e,1),this.state=1176,this.match(r.DOUBLE_STRING)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalInteger(){let e=new _g(this.context,this.state);this.enterRule(e,34,r.RULE_literalInteger);try{this.enterOuterAlt(e,1),this.state=1178,this.match(r.INTEGER)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalReal(){let e=new Ng(this.context,this.state);this.enterRule(e,36,r.RULE_literalReal);try{this.enterOuterAlt(e,1),this.state=1180,this.match(r.REAL)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}literalInfinity(){let e=new Ig(this.context,this.state);this.enterRule(e,38,r.RULE_literalInfinity);try{this.enterOuterAlt(e,1),this.state=1182,this.match(r.STAR)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}argumentMember(){let e=new Ug(this.context,this.state);this.enterRule(e,40,r.RULE_argumentMember);try{this.enterOuterAlt(e,1),this.state=1184,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}argumentExpressionMember(){let e=new Og(this.context,this.state);this.enterRule(e,42,r.RULE_argumentExpressionMember);try{this.enterOuterAlt(e,1),this.state=1186,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}name(){let e=new Or(this.context,this.state);this.enterRule(e,44,r.RULE_name);let t;try{this.enterOuterAlt(e,1),this.state=1188,t=this.tokenStream.LA(1),t===218||t===219?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}identification(){let e=new ot(this.context,this.state);this.enterRule(e,46,r.RULE_identification);try{switch(this.state=1200,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,15,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1190,this.match(r.LT),this.state=1191,this.name(),this.state=1192,this.match(r.GT),this.state=1193,this.name();break;case 2:this.enterOuterAlt(e,2),this.state=1195,this.match(r.LT),this.state=1196,this.name(),this.state=1197,this.match(r.GT);break;case 3:this.enterOuterAlt(e,3),this.state=1199,this.name();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}relationshipBody(){let e=new Xt(this.context,this.state);this.enterRule(e,48,r.RULE_relationshipBody);let t;try{switch(this.state=1219,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,18,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1202,this.match(r.SEMI);break;case 2:this.enterOuterAlt(e,2);{for(this.state=1203,this.match(r.LBRACE),this.state=1207,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&4040229124)!==0||(t-33&-32)===0&&(1<<t-33&1085130343)!==0||(t-65&-32)===0&&(1<<t-65&1909228581)!==0||(t-101&-32)===0&&(1<<t-101&1259892783)!==0||(t-138&-32)===0&&(1<<t-138&37232361)!==0||(t-175&-32)===0&&(1<<t-175&2684756995)!==0||(t-210&-32)===0&&(1<<t-210&9091)!==0;)this.state=1204,this.relationshipOwnedElement(),this.state=1209,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1210,this.match(r.RBRACE)}break;case 3:this.enterOuterAlt(e,3);{for(this.state=1211,this.match(r.LBRACE),this.state=1215,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===30||t===54||(t-93&-32)===0&&(1<<t-93&517)!==0||t===131||(t-192&-32)===0&&(1<<t-192&2147745793)!==0;)this.state=1212,this.ownedAnnotation(),this.state=1217,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1218,this.match(r.RBRACE)}break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}relationshipOwnedElement(){let e=new k1(this.context,this.state);this.enterRule(e,50,r.RULE_relationshipOwnedElement);try{switch(this.state=1223,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,19,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1221,this.ownedRelatedElement();break;case 2:this.enterOuterAlt(e,2),this.state=1222,this.ownedAnnotation();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedRelatedElement(){let e=new Dg(this.context,this.state);this.enterRule(e,52,r.RULE_ownedRelatedElement);try{switch(this.state=1227,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,20,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1225,this.nonFeatureElement();break;case 2:this.enterOuterAlt(e,2),this.state=1226,this.featureElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}dependency(){let e=new A1(this.context,this.state);this.enterRule(e,54,r.RULE_dependency);let t;try{switch(this.state=1271,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,27,this.context)){case 1:this.enterOuterAlt(e,1);{for(this.state=1232,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1229,this.prefixMetadataAnnotation(),this.state=1234,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1235,this.match(r.DEPENDENCY),this.state=1240,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,23,this.context)===1&&(this.state=1237,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1236,this.identification()),this.state=1239,this.match(r.FROM)),this.state=1242,this.qualifiedName(),this.state=1247,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1243,this.match(r.COMMA),this.state=1244,this.qualifiedName(),this.state=1249,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1250,this.match(r.TO),this.state=1251,this.qualifiedName(),this.state=1256,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1252,this.match(r.COMMA),this.state=1253,this.qualifiedName(),this.state=1258,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1259,this.relationshipBody()}break;case 2:this.enterOuterAlt(e,2);{for(this.state=1264,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1261,this.prefixMetadataAnnotation(),this.state=1266,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1267,this.match(r.DEPENDENCY),this.state=1268,this.dependencyDeclaration(),this.state=1269,this.relationshipBody()}break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}annotation(){let e=new is(this.context,this.state);this.enterRule(e,56,r.RULE_annotation);try{this.enterOuterAlt(e,1),this.state=1273,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedAnnotation(){let e=new fu(this.context,this.state);this.enterRule(e,58,r.RULE_ownedAnnotation);try{this.enterOuterAlt(e,1),this.state=1275,this.annotatingElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}annotatingElement(){let e=new aa(this.context,this.state);this.enterRule(e,60,r.RULE_annotatingElement);try{switch(this.state=1281,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COMMENT:case r.LOCALE:case r.REGULAR_COMMENT:this.enterOuterAlt(e,1),this.state=1277,this.comment();break;case r.DOC:this.enterOuterAlt(e,2),this.state=1278,this.documentation();break;case r.LANGUAGE:case r.REP:this.enterOuterAlt(e,3),this.state=1279,this.textualRepresentation();break;case r.METADATA:case r.HASH:case r.AT_SIGN:this.enterOuterAlt(e,4),this.state=1280,this.metadataFeature();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}comment(){let e=new $g(this.context,this.state);this.enterRule(e,62,r.RULE_comment);let t;try{this.enterOuterAlt(e,1);{if(this.state=1298,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===30&&(this.state=1283,this.match(r.COMMENT),this.state=1285,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1284,this.identification()),this.state=1296,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===1))for(this.state=1287,this.match(r.ABOUT),this.state=1288,this.annotation(),this.state=1293,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1289,this.match(r.COMMA),this.state=1290,this.annotation(),this.state=1295,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1302,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===95&&(this.state=1300,this.match(r.LOCALE),this.state=1301,this.match(r.DOUBLE_STRING)),this.state=1304,this.match(r.REGULAR_COMMENT)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}documentation(){let e=new Fg(this.context,this.state);this.enterRule(e,64,r.RULE_documentation);let t;try{this.enterOuterAlt(e,1),this.state=1306,this.match(r.DOC),this.state=1308,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1307,this.identification()),this.state=1312,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===95&&(this.state=1310,this.match(r.LOCALE),this.state=1311,this.match(r.DOUBLE_STRING)),this.state=1314,this.match(r.REGULAR_COMMENT)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}textualRepresentation(){let e=new Hg(this.context,this.state);this.enterRule(e,66,r.RULE_textualRepresentation);let t;try{this.enterOuterAlt(e,1),this.state=1320,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===131&&(this.state=1316,this.match(r.REP),this.state=1318,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1317,this.identification())),this.state=1322,this.match(r.LANGUAGE),this.state=1323,this.match(r.DOUBLE_STRING),this.state=1324,this.match(r.REGULAR_COMMENT)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}rootNamespace(){let e=new B9(this.context,this.state);this.enterRule(e,68,r.RULE_rootNamespace);let t;try{this.enterOuterAlt(e,1);{for(this.state=1329,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3364135109)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=1326,this.packageBodyElement(),this.state=1331,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1332,this.match(r.EOF)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespace(){let e=new zg(this.context,this.state);this.enterRule(e,70,r.RULE_namespace);let t;try{this.enterOuterAlt(e,1);{for(this.state=1337,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1334,this.prefixMetadataMember(),this.state=1339,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1340,this.namespaceDeclaration(),this.state=1341,this.namespaceBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceDeclaration(){let e=new Bg(this.context,this.state);this.enterRule(e,72,r.RULE_namespaceDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=1343,this.match(r.NAMESPACE),this.state=1345,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1344,this.identification())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceBody(){let e=new jg(this.context,this.state);this.enterRule(e,74,r.RULE_namespaceBody);let t;try{switch(this.state=1356,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=1347,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=1348,this.match(r.LBRACE),this.state=1352,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&4040229252)!==0||(t-33&-32)===0&&(1<<t-33&1085130343)!==0||(t-65&-32)===0&&(1<<t-65&1909244965)!==0||(t-101&-32)===0&&(1<<t-101&1274572847)!==0||(t-138&-32)===0&&(1<<t-138&37232361)!==0||(t-175&-32)===0&&(1<<t-175&2684756995)!==0||(t-210&-32)===0&&(1<<t-210&9091)!==0;)this.state=1349,this.namespaceBodyElement(),this.state=1354,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1355,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceBodyElement(){let e=new M1(this.context,this.state);this.enterRule(e,76,r.RULE_namespaceBodyElement);try{switch(this.state=1361,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,43,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1358,this.namespaceMember();break;case 2:this.enterOuterAlt(e,2),this.state=1359,this.aliasMember();break;case 3:this.enterOuterAlt(e,3),this.state=1360,this.importRule();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}memberPrefix(){let e=new _e(this.context,this.state);this.enterRule(e,78,r.RULE_memberPrefix);let t;try{this.enterOuterAlt(e,1),this.state=1364,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-122&-32)===0&&(1<<t-122&7)!==0&&(this.state=1363,this.visibilityIndicator())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}visibilityIndicator(){let e=new _1(this.context,this.state);this.enterRule(e,80,r.RULE_visibilityIndicator);let t;try{this.enterOuterAlt(e,1),this.state=1366,t=this.tokenStream.LA(1),(t-122&-32)===0&&(1<<t-122&7)!==0?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceMember(){let e=new qg(this.context,this.state);this.enterRule(e,82,r.RULE_namespaceMember);try{switch(this.state=1370,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,45,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1368,this.nonFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=1369,this.namespaceFeatureMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonFeatureMember(){let e=new mu(this.context,this.state);this.enterRule(e,84,r.RULE_nonFeatureMember);try{this.enterOuterAlt(e,1),this.state=1372,this.memberPrefix(),this.state=1373,this.memberElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namespaceFeatureMember(){let e=new Vg(this.context,this.state);this.enterRule(e,86,r.RULE_namespaceFeatureMember);try{this.enterOuterAlt(e,1),this.state=1375,this.memberPrefix(),this.state=1376,this.featureElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}aliasMember(){let e=new sn(this.context,this.state);this.enterRule(e,88,r.RULE_aliasMember);let t;try{this.enterOuterAlt(e,1),this.state=1378,this.memberPrefix(),this.state=1379,this.match(r.ALIAS),this.state=1384,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===206&&(this.state=1380,this.match(r.LT),this.state=1381,this.name(),this.state=1382,this.match(r.GT)),this.state=1387,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===218||t===219)&&(this.state=1386,this.name()),this.state=1389,this.match(r.FOR),this.state=1390,this.qualifiedName(),this.state=1391,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}qualifiedName(){let e=new Y(this.context,this.state);this.enterRule(e,90,r.RULE_qualifiedName);let t;try{let i;this.enterOuterAlt(e,1);{for(this.state=1395,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===193&&(this.state=1393,this.match(r.DOLLAR),this.state=1394,this.match(r.COLON_COLON)),this.state=1402,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,49,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=1397,this.name(),this.state=1398,this.match(r.COLON_COLON)),this.state=1404,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,49,this.context);this.state=1405,this.name()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}importRule(){let e=new wi(this.context,this.state);this.enterRule(e,92,r.RULE_importRule);let t;try{this.enterOuterAlt(e,1),this.state=1408,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-122&-32)===0&&(1<<t-122&7)!==0&&(this.state=1407,this.visibilityIndicator()),this.state=1410,this.match(r.IMPORT),this.state=1412,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1411,this.match(r.ALL)),this.state=1414,this.importDeclaration(),this.state=1415,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}importDeclaration(){let e=new Zg(this.context,this.state);this.enterRule(e,94,r.RULE_importDeclaration);try{switch(this.state=1419,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,52,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1417,this.membershipImport();break;case 2:this.enterOuterAlt(e,2),this.state=1418,this.namespaceImport();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}membershipImport(){let e=new gu(this.context,this.state);this.enterRule(e,96,r.RULE_membershipImport);let t;try{this.enterOuterAlt(e,1),this.state=1421,this.qualifiedName(),this.state=1424,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===183&&(this.state=1422,this.match(r.COLON_COLON),this.state=1423,this.match(r.STAR_STAR))}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}namespaceImport(){let e=new N1(this.context,this.state);this.enterRule(e,98,r.RULE_namespaceImport);let t;try{switch(this.state=1434,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,55,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1426,this.qualifiedName(),this.state=1427,this.match(r.COLON_COLON),this.state=1428,this.match(r.STAR),this.state=1431,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===183&&(this.state=1429,this.match(r.COLON_COLON),this.state=1430,this.match(r.STAR_STAR));break;case 2:this.enterOuterAlt(e,2),this.state=1433,this.filterPackage();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}filterPackage(){let e=new Gg(this.context,this.state);this.enterRule(e,100,r.RULE_filterPackage);let t;try{switch(this.state=1448,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,58,this.context)){case 1:this.enterOuterAlt(e,1);{this.state=1436,this.filterPackageImportDeclaration(),this.state=1438,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=1437,this.filterPackageMember(),this.state=1440,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===211)}break;case 2:this.enterOuterAlt(e,2);{this.state=1442,this.filterPackageImport(),this.state=1444,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=1443,this.filterPackageMember(),this.state=1446,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===211)}break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}filterPackageMember(){let e=new I1(this.context,this.state);this.enterRule(e,102,r.RULE_filterPackageMember);try{this.enterOuterAlt(e,1),this.state=1450,this.match(r.LBRACK),this.state=1451,this.ownedExpression(0),this.state=1452,this.match(r.RBRACK)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}memberElement(){let e=new Wg(this.context,this.state);this.enterRule(e,104,r.RULE_memberElement);try{switch(this.state=1456,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,59,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1454,this.annotatingElement();break;case 2:this.enterOuterAlt(e,2),this.state=1455,this.nonFeatureElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonFeatureElement(){let e=new U1(this.context,this.state);this.enterRule(e,106,r.RULE_nonFeatureElement);try{switch(this.state=1484,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,60,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1458,this.dependency();break;case 2:this.enterOuterAlt(e,2),this.state=1459,this.namespace();break;case 3:this.enterOuterAlt(e,3),this.state=1460,this.type_();break;case 4:this.enterOuterAlt(e,4),this.state=1461,this.classifier();break;case 5:this.enterOuterAlt(e,5),this.state=1462,this.dataType();break;case 6:this.enterOuterAlt(e,6),this.state=1463,this.class_();break;case 7:this.enterOuterAlt(e,7),this.state=1464,this.structure();break;case 8:this.enterOuterAlt(e,8),this.state=1465,this.metaclass();break;case 9:this.enterOuterAlt(e,9),this.state=1466,this.association();break;case 10:this.enterOuterAlt(e,10),this.state=1467,this.associationStructure();break;case 11:this.enterOuterAlt(e,11),this.state=1468,this.interaction();break;case 12:this.enterOuterAlt(e,12),this.state=1469,this.behavior();break;case 13:this.enterOuterAlt(e,13),this.state=1470,this.function_();break;case 14:this.enterOuterAlt(e,14),this.state=1471,this.predicate();break;case 15:this.enterOuterAlt(e,15),this.state=1472,this.multiplicity();break;case 16:this.enterOuterAlt(e,16),this.state=1473,this.package_();break;case 17:this.enterOuterAlt(e,17),this.state=1474,this.libraryPackage();break;case 18:this.enterOuterAlt(e,18),this.state=1475,this.specialization();break;case 19:this.enterOuterAlt(e,19),this.state=1476,this.conjugation();break;case 20:this.enterOuterAlt(e,20),this.state=1477,this.subclassification();break;case 21:this.enterOuterAlt(e,21),this.state=1478,this.disjoining();break;case 22:this.enterOuterAlt(e,22),this.state=1479,this.featureInverting();break;case 23:this.enterOuterAlt(e,23),this.state=1480,this.featureTyping();break;case 24:this.enterOuterAlt(e,24),this.state=1481,this.subsetting();break;case 25:this.enterOuterAlt(e,25),this.state=1482,this.redefinition();break;case 26:this.enterOuterAlt(e,26),this.state=1483,this.typeFeaturing();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureElement(){let e=new Qs(this.context,this.state);this.enterRule(e,108,r.RULE_featureElement);try{switch(this.state=1496,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,61,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1486,this.feature();break;case 2:this.enterOuterAlt(e,2),this.state=1487,this.step();break;case 3:this.enterOuterAlt(e,3),this.state=1488,this.expression();break;case 4:this.enterOuterAlt(e,4),this.state=1489,this.booleanExpression();break;case 5:this.enterOuterAlt(e,5),this.state=1490,this.invariant();break;case 6:this.enterOuterAlt(e,6),this.state=1491,this.connector();break;case 7:this.enterOuterAlt(e,7),this.state=1492,this.bindingConnector();break;case 8:this.enterOuterAlt(e,8),this.state=1493,this.succession();break;case 9:this.enterOuterAlt(e,9),this.state=1494,this.flow();break;case 10:this.enterOuterAlt(e,10),this.state=1495,this.successionFlow();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}type_(){let e=new Kg(this.context,this.state);this.enterRule(e,110,r.RULE_type);try{this.enterOuterAlt(e,1),this.state=1498,this.typePrefix(),this.state=1499,this.match(r.TYPE),this.state=1500,this.typeDeclaration(),this.state=1501,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typePrefix(){let e=new Dr(this.context,this.state);this.enterRule(e,112,r.RULE_typePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=1504,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===2&&(this.state=1503,this.match(r.ABSTRACT)),this.state=1509,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=1506,this.prefixMetadataMember(),this.state=1511,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeDeclaration(){let e=new Jg(this.context,this.state);this.enterRule(e,114,r.RULE_typeDeclaration);let t;try{this.enterOuterAlt(e,1);{this.state=1513,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1512,this.match(r.ALL)),this.state=1516,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1515,this.identification()),this.state=1519,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===211&&(this.state=1518,this.ownedMultiplicity()),this.state=1523,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do{switch(this.state=1523,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SPECIALIZES:case r.COLON_GT:this.state=1521,this.specializationPart();break;case r.CONJUGATES:case r.TILDE:this.state=1522,this.conjugationPart();break;default:throw new ne(this)}this.state=1525,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}while(t===34||t===139||t===185||t===217);for(this.state=1530,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===50||t===52||t===86||t===160;)this.state=1527,this.typeRelationshipPart(),this.state=1532,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}specializationPart(){let e=new O1(this.context,this.state);this.enterRule(e,116,r.RULE_specializationPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1533,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1534,this.ownedSpecialization(),this.state=1539,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1535,this.match(r.COMMA),this.state=1536,this.ownedSpecialization(),this.state=1541,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}conjugationPart(){let e=new la(this.context,this.state);this.enterRule(e,118,r.RULE_conjugationPart);let t;try{this.enterOuterAlt(e,1),this.state=1542,t=this.tokenStream.LA(1),t===34||t===217?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1543,this.ownedConjugation()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeRelationshipPart(){let e=new Ys(this.context,this.state);this.enterRule(e,120,r.RULE_typeRelationshipPart);try{switch(this.state=1549,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DISJOINT:this.enterOuterAlt(e,1),this.state=1545,this.disjoiningPart();break;case r.UNIONS:this.enterOuterAlt(e,2),this.state=1546,this.unioningPart();break;case r.INTERSECTS:this.enterOuterAlt(e,3),this.state=1547,this.intersectingPart();break;case r.DIFFERENCES:this.enterOuterAlt(e,4),this.state=1548,this.differencingPart();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}disjoiningPart(){let e=new Qg(this.context,this.state);this.enterRule(e,122,r.RULE_disjoiningPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1551,this.match(r.DISJOINT),this.state=1552,this.match(r.FROM),this.state=1553,this.ownedDisjoining(),this.state=1558,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1554,this.match(r.COMMA),this.state=1555,this.ownedDisjoining(),this.state=1560,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}unioningPart(){let e=new Yg(this.context,this.state);this.enterRule(e,124,r.RULE_unioningPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1561,this.match(r.UNIONS),this.state=1562,this.unioning(),this.state=1567,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1563,this.match(r.COMMA),this.state=1564,this.unioning(),this.state=1569,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}intersectingPart(){let e=new Xg(this.context,this.state);this.enterRule(e,126,r.RULE_intersectingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1570,this.match(r.INTERSECTS),this.state=1571,this.intersecting(),this.state=1576,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1572,this.match(r.COMMA),this.state=1573,this.intersecting(),this.state=1578,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}differencingPart(){let e=new e3(this.context,this.state);this.enterRule(e,128,r.RULE_differencingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1579,this.match(r.DIFFERENCES),this.state=1580,this.differencing(),this.state=1585,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1581,this.match(r.COMMA),this.state=1582,this.differencing(),this.state=1587,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeBody(){let e=new Ut(this.context,this.state);this.enterRule(e,130,r.RULE_typeBody);let t;try{switch(this.state=1597,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=1588,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=1589,this.match(r.LBRACE),this.state=1593,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&4040229252)!==0||(t-33&-32)===0&&(1<<t-33&1085130343)!==0||(t-65&-32)===0&&(1<<t-65&1909244965)!==0||(t-97&-32)===0&&(1<<t-97&3213296369)!==0||(t-131&-32)===0&&(1<<t-131&470774913)!==0||(t-163&-32)===0&&(1<<t-163&1648373761)!==0||(t-204&-32)===0&&(1<<t-204&581829)!==0;)this.state=1590,this.typeBodyElement(),this.state=1595,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1596,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeBodyElement(){let e=new ua(this.context,this.state);this.enterRule(e,132,r.RULE_typeBodyElement);try{switch(this.state=1603,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,78,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1599,this.nonFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=1600,this.featureMember();break;case 3:this.enterOuterAlt(e,3),this.state=1601,this.aliasMember();break;case 4:this.enterOuterAlt(e,4),this.state=1602,this.importRule();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}specialization(){let e=new t3(this.context,this.state);this.enterRule(e,134,r.RULE_specialization);let t;try{this.enterOuterAlt(e,1),this.state=1609,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=1605,this.match(r.SPECIALIZATION),this.state=1607,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1606,this.identification())),this.state=1611,this.match(r.SUBTYPE),this.state=1612,this.specificType(),this.state=1613,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1614,this.generalType(),this.state=1615,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedSpecialization(){let e=new D1(this.context,this.state);this.enterRule(e,136,r.RULE_ownedSpecialization);try{this.enterOuterAlt(e,1),this.state=1617,this.generalType()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}specificType(){let e=new xu(this.context,this.state);this.enterRule(e,138,r.RULE_specificType);let t;try{for(this.enterOuterAlt(e,1),this.state=1619,this.qualifiedName(),this.state=1624,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1620,this.match(r.DOT),this.state=1621,this.qualifiedName(),this.state=1626,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}generalType(){let e=new Xs(this.context,this.state);this.enterRule(e,140,r.RULE_generalType);let t;try{for(this.enterOuterAlt(e,1),this.state=1627,this.qualifiedName(),this.state=1632,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1628,this.match(r.DOT),this.state=1629,this.qualifiedName(),this.state=1634,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}conjugation(){let e=new r3(this.context,this.state);this.enterRule(e,142,r.RULE_conjugation);let t;try{this.enterOuterAlt(e,1);{for(this.state=1639,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===35&&(this.state=1635,this.match(r.CONJUGATION),this.state=1637,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1636,this.identification())),this.state=1641,this.match(r.CONJUGATE),this.state=1642,this.qualifiedName(),this.state=1647,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1643,this.match(r.DOT),this.state=1644,this.qualifiedName(),this.state=1649,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1650,t=this.tokenStream.LA(1),t===34||t===217?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1651,this.qualifiedName(),this.state=1656,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1652,this.match(r.DOT),this.state=1653,this.qualifiedName(),this.state=1658,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1659,this.relationshipBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedConjugation(){let e=new i3(this.context,this.state);this.enterRule(e,144,r.RULE_ownedConjugation);let t;try{for(this.enterOuterAlt(e,1),this.state=1661,this.qualifiedName(),this.state=1666,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1662,this.match(r.DOT),this.state=1663,this.qualifiedName(),this.state=1668,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}disjoining(){let e=new n3(this.context,this.state);this.enterRule(e,146,r.RULE_disjoining);let t;try{this.enterOuterAlt(e,1);{for(this.state=1673,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===51&&(this.state=1669,this.match(r.DISJOINING),this.state=1671,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1670,this.identification())),this.state=1675,this.match(r.DISJOINT),this.state=1676,this.qualifiedName(),this.state=1681,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1677,this.match(r.DOT),this.state=1678,this.qualifiedName(),this.state=1683,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=1684,this.match(r.FROM),this.state=1685,this.qualifiedName(),this.state=1690,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1686,this.match(r.DOT),this.state=1687,this.qualifiedName(),this.state=1692,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=1693,this.relationshipBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedDisjoining(){let e=new $1(this.context,this.state);this.enterRule(e,148,r.RULE_ownedDisjoining);let t;try{for(this.enterOuterAlt(e,1),this.state=1695,this.qualifiedName(),this.state=1700,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1696,this.match(r.DOT),this.state=1697,this.qualifiedName(),this.state=1702,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}unioning(){let e=new F1(this.context,this.state);this.enterRule(e,150,r.RULE_unioning);let t;try{for(this.enterOuterAlt(e,1),this.state=1703,this.qualifiedName(),this.state=1708,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1704,this.match(r.DOT),this.state=1705,this.qualifiedName(),this.state=1710,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}intersecting(){let e=new H1(this.context,this.state);this.enterRule(e,152,r.RULE_intersecting);let t;try{for(this.enterOuterAlt(e,1),this.state=1711,this.qualifiedName(),this.state=1716,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1712,this.match(r.DOT),this.state=1713,this.qualifiedName(),this.state=1718,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}differencing(){let e=new z1(this.context,this.state);this.enterRule(e,154,r.RULE_differencing);let t;try{for(this.enterOuterAlt(e,1),this.state=1719,this.qualifiedName(),this.state=1724,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1720,this.match(r.DOT),this.state=1721,this.qualifiedName(),this.state=1726,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureMember(){let e=new s3(this.context,this.state);this.enterRule(e,156,r.RULE_featureMember);try{switch(this.state=1729,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,96,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1727,this.typeFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=1728,this.ownedFeatureMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeFeatureMember(){let e=new o3(this.context,this.state);this.enterRule(e,158,r.RULE_typeFeatureMember);try{this.enterOuterAlt(e,1),this.state=1731,this.memberPrefix(),this.state=1732,this.match(r.MEMBER),this.state=1733,this.featureElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedFeatureMember(){let e=new a3(this.context,this.state);this.enterRule(e,160,r.RULE_ownedFeatureMember);try{this.enterOuterAlt(e,1),this.state=1735,this.memberPrefix(),this.state=1736,this.featureElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}classifier(){let e=new l3(this.context,this.state);this.enterRule(e,162,r.RULE_classifier);try{this.enterOuterAlt(e,1),this.state=1738,this.typePrefix(),this.state=1739,this.match(r.CLASSIFIER),this.state=1740,this.classifierDeclaration(),this.state=1741,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}classifierDeclaration(){let e=new Qr(this.context,this.state);this.enterRule(e,164,r.RULE_classifierDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=1744,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1743,this.match(r.ALL)),this.state=1747,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1746,this.identification()),this.state=1750,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===211&&(this.state=1749,this.ownedMultiplicity()),this.state=1754,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SPECIALIZES:case r.COLON_GT:this.state=1752,this.superclassingPart();break;case r.CONJUGATES:case r.TILDE:this.state=1753,this.conjugationPart();break;case r.DIFFERENCES:case r.DISJOINT:case r.INTERSECTS:case r.UNIONS:case r.SEMI:case r.LBRACE:break;default:break}for(this.state=1759,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===50||t===52||t===86||t===160;)this.state=1756,this.typeRelationshipPart(),this.state=1761,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}superclassingPart(){let e=new u3(this.context,this.state);this.enterRule(e,166,r.RULE_superclassingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1762,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1763,this.ownedSubclassification(),this.state=1768,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1764,this.match(r.COMMA),this.state=1765,this.ownedSubclassification(),this.state=1770,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}subclassification(){let e=new c3(this.context,this.state);this.enterRule(e,168,r.RULE_subclassification);let t;try{this.enterOuterAlt(e,1),this.state=1775,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=1771,this.match(r.SPECIALIZATION),this.state=1773,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=1772,this.identification())),this.state=1777,this.match(r.SUBCLASSIFIER),this.state=1778,this.qualifiedName(),this.state=1779,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1780,this.qualifiedName(),this.state=1781,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedSubclassification(){let e=new ca(this.context,this.state);this.enterRule(e,170,r.RULE_ownedSubclassification);try{this.enterOuterAlt(e,1),this.state=1783,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}feature(){let e=new d3(this.context,this.state);this.enterRule(e,172,r.RULE_feature);let t;try{this.enterOuterAlt(e,1);{switch(this.state=1799,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,108,this.context)){case 1:{switch(this.state=1785,this.featurePrefix(),this.state=1788,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.FEATURE:this.state=1786,this.match(r.FEATURE);break;case r.HASH:this.state=1787,this.prefixMetadataMember();break;default:throw new ne(this)}this.state=1791,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=1790,this.featureDeclaration())}break;case 2:{switch(this.state=1795,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,107,this.context)){case 1:this.state=1793,this.endFeaturePrefix();break;case 2:this.state=1794,this.basicFeaturePrefix();break}this.state=1797,this.featureDeclaration()}break}this.state=1802,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=1801,this.valuePart()),this.state=1804,this.typeBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}endFeaturePrefix(){let e=new B1(this.context,this.state);this.enterRule(e,174,r.RULE_endFeaturePrefix);let t;try{this.enterOuterAlt(e,1),this.state=1807,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===39&&(this.state=1806,this.match(r.CONST)),this.state=1809,this.match(r.END)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}basicFeaturePrefix(){let e=new bu(this.context,this.state);this.enterRule(e,176,r.RULE_basicFeaturePrefix);let t;try{this.enterOuterAlt(e,1),this.state=1812,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===80||t===83||t===114)&&(this.state=1811,this.featureDirection()),this.state=1815,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===49&&(this.state=1814,this.match(r.DERIVED)),this.state=1818,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===2&&(this.state=1817,this.match(r.ABSTRACT)),this.state=1821,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===31||t===120)&&(this.state=1820,t=this.tokenStream.LA(1),t===31||t===120?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=1824,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===39||t===163)&&(this.state=1823,t=this.tokenStream.LA(1),t===39||t===163?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this))}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featurePrefix(){let e=new ci(this.context,this.state);this.enterRule(e,178,r.RULE_featurePrefix);try{let t;this.enterOuterAlt(e,1);{switch(this.state=1830,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,116,this.context)){case 1:this.state=1826,this.endFeaturePrefix(),this.state=1827,this.ownedCrossFeatureMember();break;case 2:this.state=1829,this.basicFeaturePrefix();break}for(this.state=1835,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,117,this.context);t!==2&&t!==Ce.INVALID_ALT_NUMBER;)t===1&&(this.state=1832,this.prefixMetadataMember()),this.state=1837,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,117,this.context)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedCrossFeatureMember(){let e=new j1(this.context,this.state);this.enterRule(e,180,r.RULE_ownedCrossFeatureMember);try{this.enterOuterAlt(e,1),this.state=1838,this.ownedCrossFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedCrossFeature(){let e=new h3(this.context,this.state);this.enterRule(e,182,r.RULE_ownedCrossFeature);try{switch(this.state=1847,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,119,this.context)){case 1:this.enterOuterAlt(e,1),this.state=1840,this.basicFeaturePrefix(),this.state=1841,this.featureDeclaration();break;case 2:this.enterOuterAlt(e,2),this.state=1843,this.basicUsagePrefix(),this.state=1845,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,118,this.context)===1&&(this.state=1844,this.usageDeclaration());break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureDirection(){let e=new q1(this.context,this.state);this.enterRule(e,184,r.RULE_featureDirection);let t;try{this.enterOuterAlt(e,1),this.state=1849,t=this.tokenStream.LA(1),t===80||t===83||t===114?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureDeclaration(){let e=new Er(this.context,this.state);this.enterRule(e,186,r.RULE_featureDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=1852,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=1851,this.match(r.ALL)),this.state=1861,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LT:case r.IDENTIFIER:case r.STRING:switch(this.state=1854,this.featureIdentification(),this.state=1857,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,121,this.context)){case 1:this.state=1855,this.featureSpecializationPart();break;case 2:this.state=1856,this.conjugationPart();break}break;case r.CROSSES:case r.DEFINED:case r.NONUNIQUE:case r.ORDERED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.LBRACK:this.state=1859,this.featureSpecializationPart();break;case r.CONJUGATES:case r.TILDE:this.state=1860,this.conjugationPart();break;default:throw new ne(this)}for(this.state=1866,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t-27&-32)===0&&(1<<t-27&41943041)!==0||(t-66&-32)===0&&(1<<t-66&5242881)!==0||t===160;)this.state=1863,this.featureRelationshipPart(),this.state=1868,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureIdentification(){let e=new p3(this.context,this.state);this.enterRule(e,188,r.RULE_featureIdentification);try{switch(this.state=1876,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LT:this.enterOuterAlt(e,1),this.state=1869,this.match(r.LT),this.state=1870,this.name(),this.state=1871,this.match(r.GT),this.state=1873,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,124,this.context)===1&&(this.state=1872,this.name());break;case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,2),this.state=1875,this.name();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureRelationshipPart(){let e=new V1(this.context,this.state);this.enterRule(e,190,r.RULE_featureRelationshipPart);try{switch(this.state=1882,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DIFFERENCES:case r.DISJOINT:case r.INTERSECTS:case r.UNIONS:this.enterOuterAlt(e,1),this.state=1878,this.typeRelationshipPart();break;case r.CHAINS:this.enterOuterAlt(e,2),this.state=1879,this.chainingPart();break;case r.INVERSE:this.enterOuterAlt(e,3),this.state=1880,this.invertingPart();break;case r.FEATURED:this.enterOuterAlt(e,4),this.state=1881,this.typeFeaturingPart();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}chainingPart(){let e=new f3(this.context,this.state);this.enterRule(e,192,r.RULE_chainingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1884,this.match(r.CHAINS),this.state=1885,this.qualifiedName(),this.state=1890,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=1886,this.match(r.DOT),this.state=1887,this.qualifiedName(),this.state=1892,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}invertingPart(){let e=new m3(this.context,this.state);this.enterRule(e,194,r.RULE_invertingPart);try{this.enterOuterAlt(e,1),this.state=1893,this.match(r.INVERSE),this.state=1894,this.match(r.OF),this.state=1895,this.ownedFeatureInverting()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeFeaturingPart(){let e=new g3(this.context,this.state);this.enterRule(e,196,r.RULE_typeFeaturingPart);let t;try{for(this.enterOuterAlt(e,1),this.state=1897,this.match(r.FEATURED),this.state=1898,this.match(r.BY),this.state=1899,this.ownedTypeFeaturing(),this.state=1904,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1900,this.match(r.COMMA),this.state=1901,this.ownedTypeFeaturing(),this.state=1906,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureSpecializationPart(){let e=new Sr(this.context,this.state);this.enterRule(e,198,r.RULE_featureSpecializationPart);try{let t;switch(this.state=1928,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.CROSSES:case r.DEFINED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:this.enterOuterAlt(e,1);{this.state=1908,this.errorHandler.sync(this),t=1;do{if(t===1)this.state=1907,this.featureSpecialization();else throw new ne(this);this.state=1910,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,129,this.context)}while(t!==2&&t!==Ce.INVALID_ALT_NUMBER);for(this.state=1913,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,130,this.context)===1&&(this.state=1912,this.multiplicityPart()),this.state=1918,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,131,this.context);t!==2&&t!==Ce.INVALID_ALT_NUMBER;)t===1&&(this.state=1915,this.featureSpecialization()),this.state=1920,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,131,this.context)}break;case r.NONUNIQUE:case r.ORDERED:case r.LBRACK:for(this.enterOuterAlt(e,2),this.state=1921,this.multiplicityPart(),this.state=1925,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,132,this.context);t!==2&&t!==Ce.INVALID_ALT_NUMBER;)t===1&&(this.state=1922,this.featureSpecialization()),this.state=1927,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,132,this.context);break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicityPart(){let e=new Z1(this.context,this.state);this.enterRule(e,200,r.RULE_multiplicityPart);try{switch(this.state=1951,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LBRACK:switch(this.enterOuterAlt(e,1),this.state=1930,this.ownedMultiplicity(),this.state=1939,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,136,this.context)){case 1:this.state=1931,this.match(r.ORDERED),this.state=1933,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,134,this.context)===1&&(this.state=1932,this.match(r.NONUNIQUE));break;case 2:this.state=1935,this.match(r.NONUNIQUE),this.state=1937,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,135,this.context)===1&&(this.state=1936,this.match(r.ORDERED));break}break;case r.NONUNIQUE:case r.ORDERED:switch(this.enterOuterAlt(e,2),this.state=1949,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.ORDERED:this.state=1941,this.match(r.ORDERED),this.state=1943,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,137,this.context)===1&&(this.state=1942,this.match(r.NONUNIQUE));break;case r.NONUNIQUE:this.state=1945,this.match(r.NONUNIQUE),this.state=1947,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,138,this.context)===1&&(this.state=1946,this.match(r.ORDERED));break;default:throw new ne(this)}break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureSpecialization(){let e=new on(this.context,this.state);this.enterRule(e,202,r.RULE_featureSpecialization);try{switch(this.state=1958,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DEFINED:case r.TYPED:case r.COLON:this.enterOuterAlt(e,1),this.state=1953,this.typings();break;case r.SUBSETS:case r.COLON_GT:this.enterOuterAlt(e,2),this.state=1954,this.subsettings();break;case r.REFERENCES:case r.COLON_COLON_GT:this.enterOuterAlt(e,3),this.state=1955,this.references();break;case r.CROSSES:case r.FAT_ARROW:this.enterOuterAlt(e,4),this.state=1956,this.crosses();break;case r.REDEFINES:case r.COLON_GT_GT:this.enterOuterAlt(e,5),this.state=1957,this.redefinitions();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typings(){let e=new x3(this.context,this.state);this.enterRule(e,204,r.RULE_typings);let t;try{for(this.enterOuterAlt(e,1),this.state=1960,this.typedBy(),this.state=1965,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1961,this.match(r.COMMA),this.state=1962,this.featureTyping(),this.state=1967,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typedBy(){let e=new b3(this.context,this.state);this.enterRule(e,206,r.RULE_typedBy);try{this.enterOuterAlt(e,1);{switch(this.state=1973,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=1968,this.match(r.COLON);break;case r.TYPED:this.state=1969,this.match(r.TYPED),this.state=1970,this.match(r.BY);break;case r.DEFINED:this.state=1971,this.match(r.DEFINED),this.state=1972,this.match(r.BY);break;default:throw new ne(this)}this.state=1975,this.featureTyping()}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subsettings(){let e=new y3(this.context,this.state);this.enterRule(e,208,r.RULE_subsettings);let t;try{for(this.enterOuterAlt(e,1),this.state=1977,this.subsets(),this.state=1982,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1978,this.match(r.COMMA),this.state=1979,this.ownedSubsetting(),this.state=1984,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}subsets(){let e=new G1(this.context,this.state);this.enterRule(e,210,r.RULE_subsets);let t;try{this.enterOuterAlt(e,1),this.state=1985,t=this.tokenStream.LA(1),t===148||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1986,this.ownedSubsetting()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}references(){let e=new v3(this.context,this.state);this.enterRule(e,212,r.RULE_references);let t;try{this.enterOuterAlt(e,1),this.state=1988,t=this.tokenStream.LA(1),t===128||t===175?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1989,this.ownedReferenceSubsetting()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}crosses(){let e=new R3(this.context,this.state);this.enterRule(e,214,r.RULE_crosses);let t;try{this.enterOuterAlt(e,1),this.state=1991,t=this.tokenStream.LA(1),t===42||t===188?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=1992,this.ownedCrossSubsetting()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}redefinitions(){let e=new C3(this.context,this.state);this.enterRule(e,216,r.RULE_redefinitions);let t;try{for(this.enterOuterAlt(e,1),this.state=1994,this.redefines(),this.state=1999,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=1995,this.match(r.COMMA),this.state=1996,this.ownedRedefinition(),this.state=2001,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}redefines(){let e=new E3(this.context,this.state);this.enterRule(e,218,r.RULE_redefines);let t;try{this.enterOuterAlt(e,1),this.state=2002,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2003,this.ownedRedefinition()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureTyping(){let e=new da(this.context,this.state);this.enterRule(e,220,r.RULE_featureTyping);let t;try{switch(this.state=2023,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SPECIALIZATION:case r.TYPING:this.enterOuterAlt(e,1);{switch(this.state=2009,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=2005,this.match(r.SPECIALIZATION),this.state=2007,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2006,this.identification())),this.state=2011,this.match(r.TYPING),this.state=2012,this.qualifiedName(),this.state=2016,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=2013,this.match(r.COLON);break;case r.TYPED:this.state=2014,this.match(r.TYPED),this.state=2015,this.match(r.BY);break;default:throw new ne(this)}this.state=2018,this.generalType(),this.state=2019,this.relationshipBody()}break;case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,2),this.state=2021,this.ownedFeatureTyping();break;case r.TILDE:this.enterOuterAlt(e,3),this.state=2022,this.conjugatedPortTyping();break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureTyping(){let e=new ns(this.context,this.state);this.enterRule(e,222,r.RULE_ownedFeatureTyping);let t;try{for(this.enterOuterAlt(e,1),this.state=2025,this.qualifiedName(),this.state=2030,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2026,this.match(r.DOT),this.state=2027,this.qualifiedName(),this.state=2032,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}subsetting(){let e=new S3(this.context,this.state);this.enterRule(e,224,r.RULE_subsetting);let t;try{this.enterOuterAlt(e,1),this.state=2037,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=2033,this.match(r.SPECIALIZATION),this.state=2035,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2034,this.identification())),this.state=2039,this.match(r.SUBSET),this.state=2040,this.specificType(),this.state=2041,t=this.tokenStream.LA(1),t===148||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2042,this.generalType(),this.state=2043,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedSubsetting(){let e=new yu(this.context,this.state);this.enterRule(e,226,r.RULE_ownedSubsetting);let t;try{for(this.enterOuterAlt(e,1),this.state=2045,this.qualifiedName(),this.state=2050,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2046,this.match(r.DOT),this.state=2047,this.qualifiedName(),this.state=2052,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedReferenceSubsetting(){let e=new er(this.context,this.state);this.enterRule(e,228,r.RULE_ownedReferenceSubsetting);let t;try{for(this.enterOuterAlt(e,1),this.state=2053,this.qualifiedName(),this.state=2058,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2054,this.match(r.DOT),this.state=2055,this.qualifiedName(),this.state=2060,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedCrossSubsetting(){let e=new P3(this.context,this.state);this.enterRule(e,230,r.RULE_ownedCrossSubsetting);let t;try{for(this.enterOuterAlt(e,1),this.state=2061,this.qualifiedName(),this.state=2066,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2062,this.match(r.DOT),this.state=2063,this.qualifiedName(),this.state=2068,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}redefinition(){let e=new L3(this.context,this.state);this.enterRule(e,232,r.RULE_redefinition);let t;try{this.enterOuterAlt(e,1),this.state=2073,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===138&&(this.state=2069,this.match(r.SPECIALIZATION),this.state=2071,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2070,this.identification())),this.state=2075,this.match(r.REDEFINITION),this.state=2076,this.specificType(),this.state=2077,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2078,this.generalType(),this.state=2079,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedRedefinition(){let e=new eo(this.context,this.state);this.enterRule(e,234,r.RULE_ownedRedefinition);let t;try{for(this.enterOuterAlt(e,1),this.state=2081,this.qualifiedName(),this.state=2086,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2082,this.match(r.DOT),this.state=2083,this.qualifiedName(),this.state=2088,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureChain(){let e=new T3(this.context,this.state);this.enterRule(e,236,r.RULE_ownedFeatureChain);let t;try{switch(this.state=2097,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,160,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2089,this.featureChain();break;case 2:this.enterOuterAlt(e,2);{this.state=2090,this.ownedFeatureChaining(),this.state=2093,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=2091,this.match(r.DOT),this.state=2092,this.ownedFeatureChaining(),this.state=2095,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===202)}break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}featureChain(){let e=new W1(this.context,this.state);this.enterRule(e,238,r.RULE_featureChain);let t;try{this.enterOuterAlt(e,1);{this.state=2099,this.ownedFeatureChaining(),this.state=2102,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=2100,this.match(r.DOT),this.state=2101,this.ownedFeatureChaining(),this.state=2104,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===202)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureChaining(){let e=new ss(this.context,this.state);this.enterRule(e,240,r.RULE_ownedFeatureChaining);try{this.enterOuterAlt(e,1),this.state=2106,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureInverting(){let e=new w3(this.context,this.state);this.enterRule(e,242,r.RULE_featureInverting);let t;try{this.enterOuterAlt(e,1);{for(this.state=2112,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===89&&(this.state=2108,this.match(r.INVERTING),this.state=2110,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2109,this.identification())),this.state=2114,this.match(r.INVERSE),this.state=2115,this.qualifiedName(),this.state=2120,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2116,this.match(r.DOT),this.state=2117,this.qualifiedName(),this.state=2122,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=2123,this.match(r.OF),this.state=2124,this.qualifiedName(),this.state=2129,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2125,this.match(r.DOT),this.state=2126,this.qualifiedName(),this.state=2131,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2132,this.relationshipBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureInverting(){let e=new k3(this.context,this.state);this.enterRule(e,244,r.RULE_ownedFeatureInverting);let t;try{for(this.enterOuterAlt(e,1),this.state=2134,this.qualifiedName(),this.state=2139,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2135,this.match(r.DOT),this.state=2136,this.qualifiedName(),this.state=2141,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}typeFeaturing(){let e=new A3(this.context,this.state);this.enterRule(e,246,r.RULE_typeFeaturing);let t;try{this.enterOuterAlt(e,1),this.state=2142,this.match(r.FEATURING),this.state=2147,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,168,this.context)===1&&(this.state=2144,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2143,this.identification()),this.state=2146,this.match(r.OF)),this.state=2149,this.qualifiedName(),this.state=2150,this.match(r.BY),this.state=2151,this.qualifiedName(),this.state=2152,this.relationshipBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedTypeFeaturing(){let e=new K1(this.context,this.state);this.enterRule(e,248,r.RULE_ownedTypeFeaturing);try{this.enterOuterAlt(e,1),this.state=2154,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}dataType(){let e=new M3(this.context,this.state);this.enterRule(e,250,r.RULE_dataType);try{this.enterOuterAlt(e,1),this.state=2156,this.typePrefix(),this.state=2157,this.match(r.DATATYPE),this.state=2158,this.classifierDeclaration(),this.state=2159,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}class_(){let e=new _3(this.context,this.state);this.enterRule(e,252,r.RULE_class);try{this.enterOuterAlt(e,1),this.state=2161,this.typePrefix(),this.state=2162,this.match(r.CLASS),this.state=2163,this.classifierDeclaration(),this.state=2164,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}structure(){let e=new N3(this.context,this.state);this.enterRule(e,254,r.RULE_structure);try{this.enterOuterAlt(e,1),this.state=2166,this.typePrefix(),this.state=2167,this.match(r.STRUCT),this.state=2168,this.classifierDeclaration(),this.state=2169,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}association(){let e=new I3(this.context,this.state);this.enterRule(e,256,r.RULE_association);try{this.enterOuterAlt(e,1),this.state=2171,this.typePrefix(),this.state=2172,this.match(r.ASSOC),this.state=2173,this.classifierDeclaration(),this.state=2174,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}associationStructure(){let e=new U3(this.context,this.state);this.enterRule(e,258,r.RULE_associationStructure);try{this.enterOuterAlt(e,1),this.state=2176,this.typePrefix(),this.state=2177,this.match(r.ASSOC),this.state=2178,this.match(r.STRUCT),this.state=2179,this.classifierDeclaration(),this.state=2180,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connector(){let e=new O3(this.context,this.state);this.enterRule(e,260,r.RULE_connector);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2182,this.featurePrefix(),this.state=2183,this.match(r.CONNECTOR),this.state=2191,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,171,this.context)){case 1:this.state=2185,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=2184,this.featureDeclaration()),this.state=2188,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2187,this.valuePart());break;case 2:this.state=2190,this.connectorDeclaration();break}this.state=2193,this.typeBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}connectorDeclaration(){let e=new D3(this.context,this.state);this.enterRule(e,262,r.RULE_connectorDeclaration);try{switch(this.state=2197,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,172,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2195,this.binaryConnectorDeclaration();break;case 2:this.enterOuterAlt(e,2),this.state=2196,this.naryConnectorDeclaration();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}binaryConnectorDeclaration(){let e=new $3(this.context,this.state);this.enterRule(e,264,r.RULE_binaryConnectorDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2207,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,175,this.context)){case 1:this.state=2200,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=2199,this.featureDeclaration()),this.state=2202,this.match(r.FROM);break;case 2:this.state=2203,this.match(r.ALL),this.state=2205,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=2204,this.match(r.FROM));break}this.state=2209,this.connectorEndMember(),this.state=2210,this.match(r.TO),this.state=2211,this.connectorEndMember()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}naryConnectorDeclaration(){let e=new F3(this.context,this.state);this.enterRule(e,266,r.RULE_naryConnectorDeclaration);let t;try{this.enterOuterAlt(e,1);{for(this.state=2214,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||(t-34&-32)===0&&(1<<t-34&8449)!==0||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||(t-217&-32)===0&&(1<<t-217&7)!==0)&&(this.state=2213,this.featureDeclaration()),this.state=2216,this.match(r.LPAREN),this.state=2217,this.connectorEndMember(),this.state=2218,this.match(r.COMMA),this.state=2219,this.connectorEndMember(),this.state=2224,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2220,this.match(r.COMMA),this.state=2221,this.connectorEndMember(),this.state=2226,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2227,this.match(r.RPAREN)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}connectorEndMember(){let e=new Ft(this.context,this.state);this.enterRule(e,268,r.RULE_connectorEndMember);try{this.enterOuterAlt(e,1),this.state=2229,this.connectorEnd()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connectorEnd(){let e=new H3(this.context,this.state);this.enterRule(e,270,r.RULE_connectorEnd);let t;try{this.enterOuterAlt(e,1),this.state=2232,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===211&&(this.state=2231,this.ownedCrossMultiplicityMember()),this.state=2237,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,179,this.context)===1&&(this.state=2234,this.name(),this.state=2235,t=this.tokenStream.LA(1),t===128||t===175?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2239,this.ownedReferenceSubsetting()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedCrossMultiplicityMember(){let e=new J1(this.context,this.state);this.enterRule(e,272,r.RULE_ownedCrossMultiplicityMember);try{this.enterOuterAlt(e,1),this.state=2241,this.ownedCrossMultiplicity()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedCrossMultiplicity(){let e=new z3(this.context,this.state);this.enterRule(e,274,r.RULE_ownedCrossMultiplicity);try{this.enterOuterAlt(e,1),this.state=2243,this.ownedMultiplicity()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bindingConnector(){let e=new B3(this.context,this.state);this.enterRule(e,276,r.RULE_bindingConnector);try{this.enterOuterAlt(e,1),this.state=2245,this.featurePrefix(),this.state=2246,this.match(r.BINDING),this.state=2247,this.bindingConnectorDeclaration(),this.state=2248,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bindingConnectorDeclaration(){let e=new j3(this.context,this.state);this.enterRule(e,278,r.RULE_bindingConnectorDeclaration);let t;try{switch(this.state=2270,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,184,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2250,this.featureDeclaration(),this.state=2256,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2251,this.match(r.OF),this.state=2252,this.connectorEndMember(),this.state=2253,this.match(r.EQ),this.state=2254,this.connectorEndMember());break;case 2:this.enterOuterAlt(e,2),this.state=2259,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=2258,this.match(r.ALL)),this.state=2268,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===111||(t-193&-32)===0&&(1<<t-193&100925441)!==0)&&(this.state=2262,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2261,this.match(r.OF)),this.state=2264,this.connectorEndMember(),this.state=2265,this.match(r.EQ),this.state=2266,this.connectorEndMember());break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}succession(){let e=new q3(this.context,this.state);this.enterRule(e,280,r.RULE_succession);try{this.enterOuterAlt(e,1),this.state=2272,this.featurePrefix(),this.state=2273,this.match(r.SUCCESSION),this.state=2274,this.successionDeclaration(),this.state=2275,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}successionDeclaration(){let e=new V3(this.context,this.state);this.enterRule(e,282,r.RULE_successionDeclaration);let t;try{switch(this.state=2297,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,189,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2277,this.featureDeclaration(),this.state=2283,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===69&&(this.state=2278,this.match(r.FIRST),this.state=2279,this.connectorEndMember(),this.state=2280,this.match(r.THEN),this.state=2281,this.connectorEndMember());break;case 2:this.enterOuterAlt(e,2),this.state=2286,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=2285,this.match(r.ALL)),this.state=2295,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===69||(t-193&-32)===0&&(1<<t-193&100925441)!==0)&&(this.state=2289,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===69&&(this.state=2288,this.match(r.FIRST)),this.state=2291,this.connectorEndMember(),this.state=2292,this.match(r.THEN),this.state=2293,this.connectorEndMember());break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}behavior(){let e=new Z3(this.context,this.state);this.enterRule(e,284,r.RULE_behavior);try{this.enterOuterAlt(e,1),this.state=2299,this.typePrefix(),this.state=2300,this.match(r.BEHAVIOR),this.state=2301,this.classifierDeclaration(),this.state=2302,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}step(){let e=new G3(this.context,this.state);this.enterRule(e,286,r.RULE_step);let t;try{this.enterOuterAlt(e,1),this.state=2304,this.featurePrefix(),this.state=2305,this.match(r.STEP),this.state=2306,this.featureDeclaration(),this.state=2308,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2307,this.valuePart()),this.state=2310,this.typeBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}function_(){let e=new W3(this.context,this.state);this.enterRule(e,288,r.RULE_function);try{this.enterOuterAlt(e,1),this.state=2312,this.typePrefix(),this.state=2313,this.match(r.FUNCTION),this.state=2314,this.classifierDeclaration(),this.state=2315,this.functionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionBody(){let e=new to(this.context,this.state);this.enterRule(e,290,r.RULE_functionBody);try{switch(this.state=2322,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=2317,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2),this.state=2318,this.match(r.LBRACE),this.state=2319,this.functionBodyPart(),this.state=2320,this.match(r.RBRACE);break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionBodyPart(){let e=new vu(this.context,this.state);this.enterRule(e,292,r.RULE_functionBodyPart);let t;try{let i;this.enterOuterAlt(e,1);{for(this.state=2328,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,193,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;){if(i===1)switch(this.state=2326,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,192,this.context)){case 1:this.state=2324,this.typeBodyElement();break;case 2:this.state=2325,this.returnFeatureMember();break}this.state=2330,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,193,this.context)}this.state=2332,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&917517)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=2331,this.resultExpressionMember())}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}returnFeatureMember(){let e=new Q1(this.context,this.state);this.enterRule(e,294,r.RULE_returnFeatureMember);try{this.enterOuterAlt(e,1),this.state=2334,this.memberPrefix(),this.state=2335,this.match(r.RETURN),this.state=2336,this.featureElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}resultExpressionMember(){let e=new Ru(this.context,this.state);this.enterRule(e,296,r.RULE_resultExpressionMember);try{this.enterOuterAlt(e,1),this.state=2338,this.memberPrefix(),this.state=2339,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expression(){let e=new K3(this.context,this.state);this.enterRule(e,298,r.RULE_expression);let t;try{this.enterOuterAlt(e,1),this.state=2341,this.featurePrefix(),this.state=2342,this.match(r.EXPR),this.state=2343,this.featureDeclaration(),this.state=2345,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2344,this.valuePart()),this.state=2347,this.functionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}predicate(){let e=new J3(this.context,this.state);this.enterRule(e,300,r.RULE_predicate);try{this.enterOuterAlt(e,1),this.state=2349,this.typePrefix(),this.state=2350,this.match(r.PREDICATE),this.state=2351,this.classifierDeclaration(),this.state=2352,this.functionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}booleanExpression(){let e=new Q3(this.context,this.state);this.enterRule(e,302,r.RULE_booleanExpression);let t;try{this.enterOuterAlt(e,1),this.state=2354,this.featurePrefix(),this.state=2355,this.match(r.BOOL),this.state=2356,this.featureDeclaration(),this.state=2358,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2357,this.valuePart()),this.state=2360,this.functionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}invariant(){let e=new Y3(this.context,this.state);this.enterRule(e,304,r.RULE_invariant);let t;try{this.enterOuterAlt(e,1),this.state=2362,this.featurePrefix(),this.state=2363,this.match(r.INV),this.state=2365,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===64||t===156)&&(this.state=2364,t=this.tokenStream.LA(1),t===64||t===156?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2367,this.featureDeclaration(),this.state=2369,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2368,this.valuePart()),this.state=2371,this.functionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedExpressionMember(){let e=new X3(this.context,this.state);this.enterRule(e,306,r.RULE_ownedExpressionMember);try{this.enterOuterAlt(e,1),this.state=2373,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataReference(){let e=new j9(this.context,this.state);this.enterRule(e,308,r.RULE_metadataReference);try{this.enterOuterAlt(e,1),this.state=2375,this.elementReferenceMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeReferenceMember(){let e=new q9(this.context,this.state);this.enterRule(e,310,r.RULE_typeReferenceMember);try{this.enterOuterAlt(e,1),this.state=2377,this.typeReference()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}typeResultMember(){let e=new V9(this.context,this.state);this.enterRule(e,312,r.RULE_typeResultMember);try{this.enterOuterAlt(e,1),this.state=2379,this.typeReference()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}referenceTyping(){let e=new ex(this.context,this.state);this.enterRule(e,314,r.RULE_referenceTyping);try{this.enterOuterAlt(e,1),this.state=2381,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyResultMember(){let e=new Z9(this.context,this.state);this.enterRule(e,316,r.RULE_emptyResultMember);try{this.enterOuterAlt(e,1),this.state=2383,this.emptyFeature_()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sequenceOperatorExpression(){let e=new G9(this.context,this.state);this.enterRule(e,318,r.RULE_sequenceOperatorExpression);try{this.enterOuterAlt(e,1),this.state=2385,this.ownedExpressionMember(),this.state=2386,this.match(r.COMMA),this.state=2387,this.sequenceExpressionListMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sequenceExpressionListMember(){let e=new tx(this.context,this.state);this.enterRule(e,320,r.RULE_sequenceExpressionListMember);try{this.enterOuterAlt(e,1),this.state=2389,this.sequenceExpressionList()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyArgumentMember(){let e=new W9(this.context,this.state);this.enterRule(e,322,r.RULE_bodyArgumentMember);try{this.enterOuterAlt(e,1),this.state=2391,this.bodyArgument()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyArgument(){let e=new rx(this.context,this.state);this.enterRule(e,324,r.RULE_bodyArgument);try{this.enterOuterAlt(e,1),this.state=2393,this.bodyArgumentValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}bodyArgumentValue(){let e=new ix(this.context,this.state);this.enterRule(e,326,r.RULE_bodyArgumentValue);try{this.enterOuterAlt(e,1),this.state=2395,this.bodyExpression()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceArgumentMember(){let e=new K9(this.context,this.state);this.enterRule(e,328,r.RULE_functionReferenceArgumentMember);try{this.enterOuterAlt(e,1),this.state=2397,this.functionReferenceArgument()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceArgument(){let e=new nx(this.context,this.state);this.enterRule(e,330,r.RULE_functionReferenceArgument);try{this.enterOuterAlt(e,1),this.state=2399,this.functionReferenceArgumentValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceArgumentValue(){let e=new sx(this.context,this.state);this.enterRule(e,332,r.RULE_functionReferenceArgumentValue);try{this.enterOuterAlt(e,1),this.state=2401,this.functionReferenceExpression()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceExpression(){let e=new ox(this.context,this.state);this.enterRule(e,334,r.RULE_functionReferenceExpression);try{this.enterOuterAlt(e,1),this.state=2403,this.functionReferenceMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReferenceMember(){let e=new ax(this.context,this.state);this.enterRule(e,336,r.RULE_functionReferenceMember);try{this.enterOuterAlt(e,1),this.state=2405,this.functionReference()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}functionReference(){let e=new lx(this.context,this.state);this.enterRule(e,338,r.RULE_functionReference);try{this.enterOuterAlt(e,1),this.state=2407,this.referenceTyping()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureChainMember(){let e=new ha(this.context,this.state);this.enterRule(e,340,r.RULE_featureChainMember);let t;try{for(this.enterOuterAlt(e,1),this.state=2409,this.qualifiedName(),this.state=2414,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2410,this.match(r.DOT),this.state=2411,this.qualifiedName(),this.state=2416,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedFeatureChainMember(){let e=new J9(this.context,this.state);this.enterRule(e,342,r.RULE_ownedFeatureChainMember);try{switch(this.state=2419,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,200,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2417,this.featureChain();break;case 2:this.enterOuterAlt(e,2),this.state=2418,this.ownedFeatureChain();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureReferenceMember(){let e=new Q9(this.context,this.state);this.enterRule(e,344,r.RULE_featureReferenceMember);try{this.enterOuterAlt(e,1),this.state=2421,this.featureReference()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureReference(){let e=new ux(this.context,this.state);this.enterRule(e,346,r.RULE_featureReference);try{this.enterOuterAlt(e,1),this.state=2423,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}elementReferenceMember(){let e=new cx(this.context,this.state);this.enterRule(e,348,r.RULE_elementReferenceMember);try{this.enterOuterAlt(e,1),this.state=2425,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constructorResultMember(){let e=new Y9(this.context,this.state);this.enterRule(e,350,r.RULE_constructorResultMember);try{this.enterOuterAlt(e,1),this.state=2427,this.constructorResult()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constructorResult(){let e=new dx(this.context,this.state);this.enterRule(e,352,r.RULE_constructorResult);try{this.enterOuterAlt(e,1),this.state=2429,this.argumentList()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}instantiatedTypeMember(){let e=new X9(this.context,this.state);this.enterRule(e,354,r.RULE_instantiatedTypeMember);let t;try{for(this.enterOuterAlt(e,1),this.state=2431,this.qualifiedName(),this.state=2436,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2432,this.match(r.DOT),this.state=2433,this.qualifiedName(),this.state=2438,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}instantiatedTypeReference(){let e=new eC(this.context,this.state);this.enterRule(e,356,r.RULE_instantiatedTypeReference);try{this.enterOuterAlt(e,1),this.state=2439,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namedArgumentMember(){let e=new tC(this.context,this.state);this.enterRule(e,358,r.RULE_namedArgumentMember);try{this.enterOuterAlt(e,1),this.state=2441,this.namedArgument()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}parameterRedefinition(){let e=new rC(this.context,this.state);this.enterRule(e,360,r.RULE_parameterRedefinition);try{this.enterOuterAlt(e,1),this.state=2443,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expressionBodyMember(){let e=new iC(this.context,this.state);this.enterRule(e,362,r.RULE_expressionBodyMember);try{this.enterOuterAlt(e,1),this.state=2445,this.expressionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expressionBody(){let e=new hx(this.context,this.state);this.enterRule(e,364,r.RULE_expressionBody);try{this.enterOuterAlt(e,1),this.state=2447,this.match(r.LBRACE),this.state=2448,this.functionBodyPart(),this.state=2449,this.match(r.RBRACE)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}booleanValue(){let e=new nC(this.context,this.state);this.enterRule(e,366,r.RULE_booleanValue);let t;try{this.enterOuterAlt(e,1),this.state=2451,t=this.tokenStream.LA(1),t===64||t===156?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}realValue(){let e=new sC(this.context,this.state);this.enterRule(e,368,r.RULE_realValue);let t;try{switch(this.state=2459,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOT:case r.INTEGER:this.enterOuterAlt(e,1),this.state=2454,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===221&&(this.state=2453,this.match(r.INTEGER)),this.state=2456,this.match(r.DOT),this.state=2457,t=this.tokenStream.LA(1),t===221||t===222?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this);break;case r.REAL:this.enterOuterAlt(e,2),this.state=2458,this.match(r.REAL);break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interaction(){let e=new px(this.context,this.state);this.enterRule(e,370,r.RULE_interaction);try{this.enterOuterAlt(e,1),this.state=2461,this.typePrefix(),this.state=2462,this.match(r.INTERACTION),this.state=2463,this.classifierDeclaration(),this.state=2464,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flow(){let e=new fx(this.context,this.state);this.enterRule(e,372,r.RULE_flow);try{this.enterOuterAlt(e,1),this.state=2466,this.featurePrefix(),this.state=2467,this.match(r.FLOW),this.state=2468,this.flowDeclaration(),this.state=2469,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}successionFlow(){let e=new mx(this.context,this.state);this.enterRule(e,374,r.RULE_successionFlow);try{this.enterOuterAlt(e,1),this.state=2471,this.featurePrefix(),this.state=2472,this.match(r.SUCCESSION),this.state=2473,this.match(r.FLOW),this.state=2474,this.flowDeclaration(),this.state=2475,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowDeclaration(){let e=new pa(this.context,this.state);this.enterRule(e,376,r.RULE_flowDeclaration);let t;try{switch(this.state=2516,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,212,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2477,this.featureDeclaration(),this.state=2479,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2478,this.valuePart()),this.state=2483,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2481,this.match(r.OF),this.state=2482,this.payloadFeatureMember()),this.state=2490,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=2485,this.match(r.FROM),this.state=2486,this.flowEndMember(),this.state=2487,this.match(r.TO),this.state=2488,this.flowEndMember());break;case 2:this.enterOuterAlt(e,2),this.state=2493,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===8&&(this.state=2492,this.match(r.ALL)),this.state=2495,this.flowEndMember(),this.state=2496,this.match(r.TO),this.state=2497,this.flowEndMember();break;case 3:this.enterOuterAlt(e,3),this.state=2500,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=2499,this.usageDeclaration()),this.state=2503,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2502,this.valuePart()),this.state=2507,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=2505,this.match(r.OF),this.state=2506,this.flowPayloadFeatureMember()),this.state=2514,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=2509,this.match(r.FROM),this.state=2510,this.flowEndMember(),this.state=2511,this.match(r.TO),this.state=2512,this.flowEndMember());break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}payloadFeatureMember(){let e=new gx(this.context,this.state);this.enterRule(e,378,r.RULE_payloadFeatureMember);try{this.enterOuterAlt(e,1),this.state=2518,this.payloadFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}payloadFeature(){let e=new Cu(this.context,this.state);this.enterRule(e,380,r.RULE_payloadFeature);let t;try{switch(this.state=2539,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,218,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2521,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2520,this.identification()),this.state=2523,this.valuePart();break;case 2:this.enterOuterAlt(e,2),this.state=2525,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2524,this.identification()),this.state=2527,this.payloadFeatureSpecializationPart(),this.state=2529,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2528,this.valuePart());break;case 3:this.enterOuterAlt(e,3),this.state=2531,this.ownedFeatureTyping(),this.state=2533,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===211&&(this.state=2532,this.ownedMultiplicity());break;case 4:this.enterOuterAlt(e,4),this.state=2535,this.ownedMultiplicity(),this.state=2537,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-193&-32)===0&&(1<<t-193&100663297)!==0&&(this.state=2536,this.ownedFeatureTyping());break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}payloadFeatureSpecializationPart(){let e=new Y1(this.context,this.state);this.enterRule(e,382,r.RULE_payloadFeatureSpecializationPart);let t;try{let i;switch(this.state=2561,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.CROSSES:case r.DEFINED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:this.enterOuterAlt(e,1);{this.state=2542,this.errorHandler.sync(this),i=1;do{if(i===1)this.state=2541,this.featureSpecialization();else throw new ne(this);this.state=2544,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,219,this.context)}while(i!==2&&i!==Ce.INVALID_ALT_NUMBER);for(this.state=2547,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===106||t===113||t===211)&&(this.state=2546,this.multiplicityPart()),this.state=2552,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204;)this.state=2549,this.featureSpecialization(),this.state=2554,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}break;case r.NONUNIQUE:case r.ORDERED:case r.LBRACK:this.enterOuterAlt(e,2);{this.state=2555,this.multiplicityPart(),this.state=2557,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=2556,this.featureSpecialization(),this.state=2559,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}flowEndMember(){let e=new X1(this.context,this.state);this.enterRule(e,384,r.RULE_flowEndMember);try{this.enterOuterAlt(e,1),this.state=2563,this.flowEnd()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowEnd(){let e=new xx(this.context,this.state);this.enterRule(e,386,r.RULE_flowEnd);let t;try{for(this.enterOuterAlt(e,1),this.state=2565,this.qualifiedName(),this.state=2570,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===202;)this.state=2566,this.match(r.DOT),this.state=2567,this.qualifiedName(),this.state=2572,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}flowFeatureMember(){let e=new oC(this.context,this.state);this.enterRule(e,388,r.RULE_flowFeatureMember);try{this.enterOuterAlt(e,1),this.state=2573,this.flowFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowFeature(){let e=new bx(this.context,this.state);this.enterRule(e,390,r.RULE_flowFeature);try{this.enterOuterAlt(e,1),this.state=2575,this.flowFeatureRedefinition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowFeatureRedefinition(){let e=new yx(this.context,this.state);this.enterRule(e,392,r.RULE_flowFeatureRedefinition);try{this.enterOuterAlt(e,1),this.state=2577,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}valuePart(){let e=new St(this.context,this.state);this.enterRule(e,394,r.RULE_valuePart);try{this.enterOuterAlt(e,1),this.state=2579,this.featureValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureValue(){let e=new vx(this.context,this.state);this.enterRule(e,396,r.RULE_featureValue);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2587,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.EQ:this.state=2581,this.match(r.EQ);break;case r.COLON_EQ:this.state=2582,this.match(r.COLON_EQ);break;case r.DEFAULT:this.state=2583,this.match(r.DEFAULT),this.state=2585,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===184||t===207)&&(this.state=2584,t=this.tokenStream.LA(1),t===184||t===207?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this));break;default:throw new ne(this)}this.state=2589,this.ownedExpression(0)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}multiplicity(){let e=new Rx(this.context,this.state);this.enterRule(e,398,r.RULE_multiplicity);try{switch(this.state=2593,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,227,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2591,this.multiplicitySubset();break;case 2:this.enterOuterAlt(e,2),this.state=2592,this.multiplicityRange();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicitySubset(){let e=new Cx(this.context,this.state);this.enterRule(e,400,r.RULE_multiplicitySubset);let t;try{this.enterOuterAlt(e,1),this.state=2595,this.match(r.MULTIPLICITY),this.state=2597,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2596,this.identification()),this.state=2599,this.subsets(),this.state=2600,this.typeBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}multiplicityRange(){let e=new Ex(this.context,this.state);this.enterRule(e,402,r.RULE_multiplicityRange);let t;try{this.enterOuterAlt(e,1),this.state=2602,this.match(r.MULTIPLICITY),this.state=2604,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2603,this.identification()),this.state=2606,this.multiplicityBounds(),this.state=2607,this.typeBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ownedMultiplicity(){let e=new os(this.context,this.state);this.enterRule(e,404,r.RULE_ownedMultiplicity);try{this.enterOuterAlt(e,1),this.state=2609,this.ownedMultiplicityRange()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}ownedMultiplicityRange(){let e=new Sx(this.context,this.state);this.enterRule(e,406,r.RULE_ownedMultiplicityRange);try{this.enterOuterAlt(e,1),this.state=2611,this.multiplicityBounds()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicityBounds(){let e=new ed(this.context,this.state);this.enterRule(e,408,r.RULE_multiplicityBounds);try{this.enterOuterAlt(e,1),this.state=2613,this.match(r.LBRACK),this.state=2617,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,230,this.context)===1&&(this.state=2614,this.multiplicityExpressionMember(),this.state=2615,this.match(r.DOT_DOT)),this.state=2619,this.multiplicityExpressionMember(),this.state=2620,this.match(r.RBRACK)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}multiplicityExpressionMember(){let e=new td(this.context,this.state);this.enterRule(e,410,r.RULE_multiplicityExpressionMember);try{switch(this.enterOuterAlt(e,1),this.state=2624,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.FALSE:case r.TRUE:case r.STAR:case r.DOUBLE_STRING:case r.INTEGER:case r.REAL:this.state=2622,this.literalExpression();break;case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=2623,this.featureReferenceExpression();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metaclass(){let e=new Px(this.context,this.state);this.enterRule(e,412,r.RULE_metaclass);try{this.enterOuterAlt(e,1),this.state=2626,this.typePrefix(),this.state=2627,this.match(r.METACLASS),this.state=2628,this.classifierDeclaration(),this.state=2629,this.typeBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}prefixMetadataAnnotation(){let e=new rd(this.context,this.state);this.enterRule(e,414,r.RULE_prefixMetadataAnnotation);try{switch(this.state=2635,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,232,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2631,this.match(r.HASH),this.state=2632,this.prefixMetadataFeature();break;case 2:this.enterOuterAlt(e,2),this.state=2633,this.match(r.HASH),this.state=2634,this.prefixMetadataUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}prefixMetadataMember(){let e=new tr(this.context,this.state);this.enterRule(e,416,r.RULE_prefixMetadataMember);try{switch(this.state=2641,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,233,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2637,this.match(r.HASH),this.state=2638,this.prefixMetadataFeature();break;case 2:this.enterOuterAlt(e,2),this.state=2639,this.match(r.HASH),this.state=2640,this.prefixMetadataUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}prefixMetadataFeature(){let e=new id(this.context,this.state);this.enterRule(e,418,r.RULE_prefixMetadataFeature);try{this.enterOuterAlt(e,1),this.state=2643,this.ownedFeatureTyping()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataFeature(){let e=new Lx(this.context,this.state);this.enterRule(e,420,r.RULE_metadataFeature);let t;try{this.enterOuterAlt(e,1);{for(this.state=2648,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2645,this.prefixMetadataMember(),this.state=2650,this.errorHandler.sync(this),t=this.tokenStream.LA(1);if(this.state=2651,t=this.tokenStream.LA(1),t===102||t===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=2652,this.metadataFeatureDeclaration(),this.state=2662,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===1)for(this.state=2653,this.match(r.ABOUT),this.state=2654,this.annotation(),this.state=2659,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2655,this.match(r.COMMA),this.state=2656,this.annotation(),this.state=2661,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2664,this.metadataBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataFeatureDeclaration(){let e=new Tx(this.context,this.state);this.enterRule(e,422,r.RULE_metadataFeatureDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=2674,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,239,this.context)){case 1:switch(this.state=2667,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2666,this.identification()),this.state=2672,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=2669,this.match(r.COLON);break;case r.TYPED:this.state=2670,this.match(r.TYPED),this.state=2671,this.match(r.BY);break;default:throw new ne(this)}break}this.state=2676,this.ownedFeatureTyping()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataBody(){let e=new fa(this.context,this.state);this.enterRule(e,424,r.RULE_metadataBody);let t;try{switch(this.state=2698,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,243,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2678,this.match(r.SEMI);break;case 2:this.enterOuterAlt(e,2);{for(this.state=2679,this.match(r.LBRACE),this.state=2683,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1880162436)!==0||(t-33&-32)===0&&(1<<t-33&2917381)!==0||(t-65&-32)===0&&(1<<t-65&1904755717)!==0||(t-101&-32)===0&&(1<<t-101&1139818511)!==0||(t-138&-32)===0&&(1<<t-138&2624201)!==0||(t-176&-32)===0&&(1<<t-176&196609)!==0||(t-210&-32)===0&&(1<<t-210&9089)!==0;)this.state=2680,this.metadataBodyElement(),this.state=2685,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2686,this.match(r.RBRACE)}break;case 3:this.enterOuterAlt(e,3);{for(this.state=2687,this.match(r.LBRACE),this.state=2694,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1174932628)!==0||(t-32&-32)===0&&(1<<t-32&71369249)!==0||(t-70&-32)===0&&(1<<t-70&60854785)!==0||(t-102&-32)===0&&(1<<t-102&3002245377)!==0||(t-141&-32)===0&&(1<<t-141&857735171)!==0||(t-176&-32)===0&&(1<<t-176&196609)!==0||(t-210&-32)===0&&(1<<t-210&8961)!==0;){switch(this.state=2692,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,241,this.context)){case 1:this.state=2688,this.definitionMember();break;case 2:this.state=2689,this.metadataBodyUsageMember();break;case 3:this.state=2690,this.aliasMember();break;case 4:this.state=2691,this.importRule();break}this.state=2696,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}this.state=2697,this.match(r.RBRACE)}break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataBodyElement(){let e=new nd(this.context,this.state);this.enterRule(e,426,r.RULE_metadataBodyElement);try{switch(this.state=2704,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,244,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2700,this.nonFeatureMember();break;case 2:this.enterOuterAlt(e,2),this.state=2701,this.metadataBodyFeatureMember();break;case 3:this.enterOuterAlt(e,3),this.state=2702,this.aliasMember();break;case 4:this.enterOuterAlt(e,4),this.state=2703,this.importRule();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataBodyFeatureMember(){let e=new wx(this.context,this.state);this.enterRule(e,428,r.RULE_metadataBodyFeatureMember);try{this.enterOuterAlt(e,1),this.state=2706,this.metadataBodyFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataBodyFeature(){let e=new kx(this.context,this.state);this.enterRule(e,430,r.RULE_metadataBodyFeature);let t;try{this.enterOuterAlt(e,1),this.state=2709,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===65&&(this.state=2708,this.match(r.FEATURE)),this.state=2712,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===125||t===176)&&(this.state=2711,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2714,this.ownedRedefinition(),this.state=2716,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=2715,this.featureSpecializationPart()),this.state=2719,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2718,this.valuePart()),this.state=2721,this.metadataBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}package_(){let e=new sd(this.context,this.state);this.enterRule(e,432,r.RULE_package);let t;try{this.enterOuterAlt(e,1);{for(this.state=2726,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2723,this.prefixMetadataMember(),this.state=2728,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2729,this.packageDeclaration(),this.state=2730,this.packageBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}libraryPackage(){let e=new od(this.context,this.state);this.enterRule(e,434,r.RULE_libraryPackage);let t;try{this.enterOuterAlt(e,1);{for(this.state=2733,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===141&&(this.state=2732,this.match(r.STANDARD)),this.state=2735,this.match(r.LIBRARY),this.state=2739,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2736,this.prefixMetadataMember(),this.state=2741,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2742,this.packageDeclaration(),this.state=2743,this.packageBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}packageDeclaration(){let e=new ad(this.context,this.state);this.enterRule(e,436,r.RULE_packageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=2745,this.match(r.PACKAGE),this.state=2747,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2746,this.identification())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}packageBody(){let e=new ld(this.context,this.state);this.enterRule(e,438,r.RULE_packageBody);let t;try{switch(this.state=2758,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=2749,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=2750,this.match(r.LBRACE),this.state=2754,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3364135109)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=2751,this.packageBodyElement(),this.state=2756,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2757,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}elementFilterMember(){let e=new Eu(this.context,this.state);this.enterRule(e,440,r.RULE_elementFilterMember);try{this.enterOuterAlt(e,1),this.state=2760,this.memberPrefix(),this.state=2761,this.match(r.FILTER),this.state=2762,this.ownedExpression(0),this.state=2763,this.match(r.SEMI)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}dependencyDeclaration(){let e=new Ax(this.context,this.state);this.enterRule(e,442,r.RULE_dependencyDeclaration);let t;try{this.enterOuterAlt(e,1);{for(this.state=2769,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,256,this.context)===1&&(this.state=2766,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2765,this.identification()),this.state=2768,this.match(r.FROM)),this.state=2771,this.qualifiedName(),this.state=2776,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2772,this.match(r.COMMA),this.state=2773,this.qualifiedName(),this.state=2778,this.errorHandler.sync(this),t=this.tokenStream.LA(1);for(this.state=2779,this.match(r.TO),this.state=2780,this.qualifiedName(),this.state=2785,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=2781,this.match(r.COMMA),this.state=2782,this.qualifiedName(),this.state=2787,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}annotatingMember(){let e=new ud(this.context,this.state);this.enterRule(e,444,r.RULE_annotatingMember);try{this.enterOuterAlt(e,1),this.state=2788,this.annotatingElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}packageBodyElement(){let e=new ma(this.context,this.state);this.enterRule(e,446,r.RULE_packageBodyElement);try{switch(this.state=2794,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,259,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2790,this.packageMember();break;case 2:this.enterOuterAlt(e,2),this.state=2791,this.elementFilterMember();break;case 3:this.enterOuterAlt(e,3),this.state=2792,this.aliasMember();break;case 4:this.enterOuterAlt(e,4),this.state=2793,this.importRule();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}packageMember(){let e=new Mx(this.context,this.state);this.enterRule(e,448,r.RULE_packageMember);try{switch(this.enterOuterAlt(e,1),this.state=2796,this.memberPrefix(),this.state=2799,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,260,this.context)){case 1:this.state=2797,this.definitionElement();break;case 2:this.state=2798,this.usageElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}definitionElement(){let e=new Su(this.context,this.state);this.enterRule(e,450,r.RULE_definitionElement);try{switch(this.state=2831,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,261,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2801,this.package_();break;case 2:this.enterOuterAlt(e,2),this.state=2802,this.libraryPackage();break;case 3:this.enterOuterAlt(e,3),this.state=2803,this.annotatingElement();break;case 4:this.enterOuterAlt(e,4),this.state=2804,this.dependency();break;case 5:this.enterOuterAlt(e,5),this.state=2805,this.attributeDefinition();break;case 6:this.enterOuterAlt(e,6),this.state=2806,this.enumerationDefinition();break;case 7:this.enterOuterAlt(e,7),this.state=2807,this.occurrenceDefinition();break;case 8:this.enterOuterAlt(e,8),this.state=2808,this.individualDefinition();break;case 9:this.enterOuterAlt(e,9),this.state=2809,this.itemDefinition();break;case 10:this.enterOuterAlt(e,10),this.state=2810,this.partDefinition();break;case 11:this.enterOuterAlt(e,11),this.state=2811,this.connectionDefinition();break;case 12:this.enterOuterAlt(e,12),this.state=2812,this.flowDefinition();break;case 13:this.enterOuterAlt(e,13),this.state=2813,this.interfaceDefinition();break;case 14:this.enterOuterAlt(e,14),this.state=2814,this.portDefinition();break;case 15:this.enterOuterAlt(e,15),this.state=2815,this.actionDefinition();break;case 16:this.enterOuterAlt(e,16),this.state=2816,this.calculationDefinition();break;case 17:this.enterOuterAlt(e,17),this.state=2817,this.stateDefinition();break;case 18:this.enterOuterAlt(e,18),this.state=2818,this.constraintDefinition();break;case 19:this.enterOuterAlt(e,19),this.state=2819,this.requirementDefinition();break;case 20:this.enterOuterAlt(e,20),this.state=2820,this.concernDefinition();break;case 21:this.enterOuterAlt(e,21),this.state=2821,this.caseDefinition();break;case 22:this.enterOuterAlt(e,22),this.state=2822,this.analysisCaseDefinition();break;case 23:this.enterOuterAlt(e,23),this.state=2823,this.verificationCaseDefinition();break;case 24:this.enterOuterAlt(e,24),this.state=2824,this.useCaseDefinition();break;case 25:this.enterOuterAlt(e,25),this.state=2825,this.viewDefinition();break;case 26:this.enterOuterAlt(e,26),this.state=2826,this.viewpointDefinition();break;case 27:this.enterOuterAlt(e,27),this.state=2827,this.renderingDefinition();break;case 28:this.enterOuterAlt(e,28),this.state=2828,this.metadataDefinition();break;case 29:this.enterOuterAlt(e,29),this.state=2829,this.allocationDefinition();break;case 30:this.enterOuterAlt(e,30),this.state=2830,this.extendedDefinition();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usageElement(){let e=new cd(this.context,this.state);this.enterRule(e,452,r.RULE_usageElement);try{switch(this.state=2835,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,262,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2833,this.nonOccurrenceUsageElement();break;case 2:this.enterOuterAlt(e,2),this.state=2834,this.occurrenceUsageElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}basicDefinitionPrefix(){let e=new ga(this.context,this.state);this.enterRule(e,454,r.RULE_basicDefinitionPrefix);let t;try{this.enterOuterAlt(e,1),this.state=2837,t=this.tokenStream.LA(1),t===2||t===165?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionExtensionKeyword(){let e=new $r(this.context,this.state);this.enterRule(e,456,r.RULE_definitionExtensionKeyword);try{this.enterOuterAlt(e,1),this.state=2839,this.prefixMetadataMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}definitionPrefix(){let e=new dd(this.context,this.state);this.enterRule(e,458,r.RULE_definitionPrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=2842,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=2841,this.basicDefinitionPrefix()),this.state=2847,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2844,this.definitionExtensionKeyword(),this.state=2849,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definition(){let e=new Fr(this.context,this.state);this.enterRule(e,460,r.RULE_definition);try{this.enterOuterAlt(e,1),this.state=2850,this.definitionDeclaration(),this.state=2851,this.definitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}definitionDeclaration(){let e=new rr(this.context,this.state);this.enterRule(e,462,r.RULE_definitionDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=2854,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=2853,this.identification()),this.state=2857,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===139||t===185)&&(this.state=2856,this.subclassificationPart())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionBody(){let e=new ro(this.context,this.state);this.enterRule(e,464,r.RULE_definitionBody);let t;try{switch(this.state=2868,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=2859,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=2860,this.match(r.LBRACE),this.state=2864,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901137093)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=2861,this.definitionBodyItem(),this.state=2866,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2867,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionBodyItem(){let e=new io(this.context,this.state);this.enterRule(e,466,r.RULE_definitionBodyItem);let t;try{switch(this.state=2880,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,270,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2870,this.importRule();break;case 2:this.enterOuterAlt(e,2),this.state=2871,this.memberPrefix(),this.state=2872,this.definitionBodyItemContent();break;case 3:this.enterOuterAlt(e,3),this.state=2875,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=2874,this.sourceSuccessionMember()),this.state=2877,this.memberPrefix(),this.state=2878,this.occurrenceUsageElement();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionBodyItemContent(){let e=new _x(this.context,this.state);this.enterRule(e,468,r.RULE_definitionBodyItemContent);let t;try{switch(this.state=2900,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,273,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2882,this.match(r.ALIAS),this.state=2887,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===206&&(this.state=2883,this.match(r.LT),this.state=2884,this.name(),this.state=2885,this.match(r.GT)),this.state=2890,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===218||t===219)&&(this.state=2889,this.name()),this.state=2892,this.match(r.FOR),this.state=2893,this.qualifiedName(),this.state=2894,this.relationshipBody();break;case 2:this.enterOuterAlt(e,2),this.state=2896,this.match(r.VARIANT),this.state=2897,this.variantUsageElement();break;case 3:this.enterOuterAlt(e,3),this.state=2898,this.definitionElement();break;case 4:this.enterOuterAlt(e,4),this.state=2899,this.nonOccurrenceUsageElement();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}definitionMember(){let e=new xa(this.context,this.state);this.enterRule(e,470,r.RULE_definitionMember);try{this.enterOuterAlt(e,1),this.state=2902,this.memberPrefix(),this.state=2903,this.definitionElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}variantUsageMember(){let e=new hd(this.context,this.state);this.enterRule(e,472,r.RULE_variantUsageMember);try{this.enterOuterAlt(e,1),this.state=2905,this.memberPrefix(),this.state=2906,this.match(r.VARIANT),this.state=2907,this.variantUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonOccurrenceUsageMember(){let e=new Nx(this.context,this.state);this.enterRule(e,474,r.RULE_nonOccurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=2909,this.memberPrefix(),this.state=2910,this.nonOccurrenceUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceUsageMember(){let e=new aC(this.context,this.state);this.enterRule(e,476,r.RULE_occurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=2912,this.memberPrefix(),this.state=2913,this.occurrenceUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}structureUsageMember(){let e=new Ix(this.context,this.state);this.enterRule(e,478,r.RULE_structureUsageMember);try{this.enterOuterAlt(e,1),this.state=2915,this.memberPrefix(),this.state=2916,this.structureUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}behaviorUsageMember(){let e=new pd(this.context,this.state);this.enterRule(e,480,r.RULE_behaviorUsageMember);try{this.enterOuterAlt(e,1),this.state=2918,this.memberPrefix(),this.state=2919,this.behaviorUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}refPrefix(){let e=new ba(this.context,this.state);this.enterRule(e,482,r.RULE_refPrefix);let t;try{this.enterOuterAlt(e,1),this.state=2922,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===80||t===83||t===114)&&(this.state=2921,this.featureDirection()),this.state=2925,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===49&&(this.state=2924,this.match(r.DERIVED)),this.state=2928,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=2927,t=this.tokenStream.LA(1),t===2||t===165?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=2931,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===40&&(this.state=2930,this.match(r.CONSTANT))}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}basicUsagePrefix(){let e=new no(this.context,this.state);this.enterRule(e,484,r.RULE_basicUsagePrefix);try{this.enterOuterAlt(e,1),this.state=2933,this.refPrefix(),this.state=2935,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,278,this.context)===1&&(this.state=2934,this.match(r.REF))}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}endUsagePrefix(){let e=new Pu(this.context,this.state);this.enterRule(e,486,r.RULE_endUsagePrefix);try{this.enterOuterAlt(e,1),this.state=2937,this.match(r.END),this.state=2938,this.ownedCrossFeatureMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usageExtensionKeyword(){let e=new Ke(this.context,this.state);this.enterRule(e,488,r.RULE_usageExtensionKeyword);try{this.enterOuterAlt(e,1),this.state=2940,this.prefixMetadataMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}unextendedUsagePrefix(){let e=new fd(this.context,this.state);this.enterRule(e,490,r.RULE_unextendedUsagePrefix);try{switch(this.state=2944,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.END:this.enterOuterAlt(e,1),this.state=2942,this.endUsagePrefix();break;case r.ABSTRACT:case r.ATTRIBUTE:case r.BIND:case r.BINDING:case r.CONSTANT:case r.DERIVED:case r.ENUM:case r.FIRST:case r.IN:case r.INOUT:case r.OUT:case r.REF:case r.SUCCESSION:case r.VARIATION:case r.HASH:this.enterOuterAlt(e,2),this.state=2943,this.basicUsagePrefix();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usagePrefix(){let e=new ya(this.context,this.state);this.enterRule(e,492,r.RULE_usagePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=2946,this.unextendedUsagePrefix(),this.state=2950,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=2947,this.usageExtensionKeyword(),this.state=2952,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}usage(){let e=new Ht(this.context,this.state);this.enterRule(e,494,r.RULE_usage);let t;try{this.enterOuterAlt(e,1),this.state=2954,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=2953,this.usageDeclaration()),this.state=2956,this.usageCompletion()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}usageDeclaration(){let e=new Xe(this.context,this.state);this.enterRule(e,496,r.RULE_usageDeclaration);try{switch(this.state=2963,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.LT:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=2958,this.identification(),this.state=2960,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,282,this.context)===1&&(this.state=2959,this.featureSpecializationPart());break;case r.CROSSES:case r.DEFINED:case r.NONUNIQUE:case r.ORDERED:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.LBRACK:this.enterOuterAlt(e,2),this.state=2962,this.featureSpecializationPart();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}usageCompletion(){let e=new Lu(this.context,this.state);this.enterRule(e,498,r.RULE_usageCompletion);let t;try{this.enterOuterAlt(e,1),this.state=2966,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=2965,this.valuePart()),this.state=2968,this.usageBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}usageBody(){let e=new ki(this.context,this.state);this.enterRule(e,500,r.RULE_usageBody);try{this.enterOuterAlt(e,1),this.state=2970,this.definitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}defaultReferenceUsage(){let e=new Ux(this.context,this.state);this.enterRule(e,502,r.RULE_defaultReferenceUsage);try{this.enterOuterAlt(e,1),this.state=2972,this.refPrefix(),this.state=2973,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}referenceUsage(){let e=new Tu(this.context,this.state);this.enterRule(e,504,r.RULE_referenceUsage);try{this.enterOuterAlt(e,1);{switch(this.state=2977,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.END:this.state=2975,this.endUsagePrefix();break;case r.ABSTRACT:case r.CONSTANT:case r.DERIVED:case r.IN:case r.INOUT:case r.OUT:case r.REF:case r.VARIATION:this.state=2976,this.refPrefix();break;default:throw new ne(this)}this.state=2979,this.match(r.REF),this.state=2980,this.usage()}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}endFeatureUsage(){let e=new Ox(this.context,this.state);this.enterRule(e,506,r.RULE_endFeatureUsage);try{this.enterOuterAlt(e,1),this.state=2982,this.endUsagePrefix(),this.state=2983,this.featureDeclaration(),this.state=2984,this.usageCompletion()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}variantReference(){let e=new Dx(this.context,this.state);this.enterRule(e,508,r.RULE_variantReference);let t;try{this.enterOuterAlt(e,1);{for(this.state=2986,this.ownedReferenceSubsetting(),this.state=2990,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204;)this.state=2987,this.featureSpecialization(),this.state=2992,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=2993,this.usageBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nonOccurrenceUsageElement(){let e=new wu(this.context,this.state);this.enterRule(e,510,r.RULE_nonOccurrenceUsageElement);try{switch(this.state=3003,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,287,this.context)){case 1:this.enterOuterAlt(e,1),this.state=2995,this.referenceUsage();break;case 2:this.enterOuterAlt(e,2),this.state=2996,this.endFeatureUsage();break;case 3:this.enterOuterAlt(e,3),this.state=2997,this.attributeUsage();break;case 4:this.enterOuterAlt(e,4),this.state=2998,this.enumerationUsage();break;case 5:this.enterOuterAlt(e,5),this.state=2999,this.bindingConnectorAsUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3e3,this.successionAsUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3001,this.extendedUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3002,this.defaultReferenceUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceUsageElement(){let e=new ku(this.context,this.state);this.enterRule(e,512,r.RULE_occurrenceUsageElement);try{switch(this.state=3007,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,288,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3005,this.structureUsageElement();break;case 2:this.enterOuterAlt(e,2),this.state=3006,this.behaviorUsageElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}structureUsageElement(){let e=new Au(this.context,this.state);this.enterRule(e,514,r.RULE_structureUsageElement);try{switch(this.state=3024,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,289,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3009,this.occurrenceUsage();break;case 2:this.enterOuterAlt(e,2),this.state=3010,this.individualUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3011,this.portionUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3012,this.eventOccurrenceUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3013,this.itemUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3014,this.partUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3015,this.viewUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3016,this.renderingUsage();break;case 9:this.enterOuterAlt(e,9),this.state=3017,this.portUsage();break;case 10:this.enterOuterAlt(e,10),this.state=3018,this.connectionUsage();break;case 11:this.enterOuterAlt(e,11),this.state=3019,this.interfaceUsage();break;case 12:this.enterOuterAlt(e,12),this.state=3020,this.allocationUsage();break;case 13:this.enterOuterAlt(e,13),this.state=3021,this.message();break;case 14:this.enterOuterAlt(e,14),this.state=3022,this.flowUsage();break;case 15:this.enterOuterAlt(e,15),this.state=3023,this.successionFlowUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}behaviorUsageElement(){let e=new va(this.context,this.state);this.enterRule(e,516,r.RULE_behaviorUsageElement);try{switch(this.state=3042,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,290,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3026,this.actionUsage();break;case 2:this.enterOuterAlt(e,2),this.state=3027,this.calculationUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3028,this.stateUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3029,this.constraintUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3030,this.requirementUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3031,this.concernUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3032,this.caseUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3033,this.analysisCaseUsage();break;case 9:this.enterOuterAlt(e,9),this.state=3034,this.verificationCaseUsage();break;case 10:this.enterOuterAlt(e,10),this.state=3035,this.useCaseUsage();break;case 11:this.enterOuterAlt(e,11),this.state=3036,this.viewpointUsage();break;case 12:this.enterOuterAlt(e,12),this.state=3037,this.performActionUsage();break;case 13:this.enterOuterAlt(e,13),this.state=3038,this.exhibitStateUsage();break;case 14:this.enterOuterAlt(e,14),this.state=3039,this.includeUseCaseUsage();break;case 15:this.enterOuterAlt(e,15),this.state=3040,this.assertConstraintUsage();break;case 16:this.enterOuterAlt(e,16),this.state=3041,this.satisfyRequirementUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}variantUsageElement(){let e=new md(this.context,this.state);this.enterRule(e,518,r.RULE_variantUsageElement);try{switch(this.state=3065,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,291,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3044,this.variantReference();break;case 2:this.enterOuterAlt(e,2),this.state=3045,this.referenceUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3046,this.attributeUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3047,this.bindingConnectorAsUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3048,this.successionAsUsage();break;case 6:this.enterOuterAlt(e,6),this.state=3049,this.occurrenceUsage();break;case 7:this.enterOuterAlt(e,7),this.state=3050,this.individualUsage();break;case 8:this.enterOuterAlt(e,8),this.state=3051,this.portionUsage();break;case 9:this.enterOuterAlt(e,9),this.state=3052,this.eventOccurrenceUsage();break;case 10:this.enterOuterAlt(e,10),this.state=3053,this.itemUsage();break;case 11:this.enterOuterAlt(e,11),this.state=3054,this.partUsage();break;case 12:this.enterOuterAlt(e,12),this.state=3055,this.viewUsage();break;case 13:this.enterOuterAlt(e,13),this.state=3056,this.renderingUsage();break;case 14:this.enterOuterAlt(e,14),this.state=3057,this.portUsage();break;case 15:this.enterOuterAlt(e,15),this.state=3058,this.connectionUsage();break;case 16:this.enterOuterAlt(e,16),this.state=3059,this.interfaceUsage();break;case 17:this.enterOuterAlt(e,17),this.state=3060,this.allocationUsage();break;case 18:this.enterOuterAlt(e,18),this.state=3061,this.message();break;case 19:this.enterOuterAlt(e,19),this.state=3062,this.flowUsage();break;case 20:this.enterOuterAlt(e,20),this.state=3063,this.successionFlowUsage();break;case 21:this.enterOuterAlt(e,21),this.state=3064,this.behaviorUsageElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subclassificationPart(){let e=new $x(this.context,this.state);this.enterRule(e,520,r.RULE_subclassificationPart);let t;try{for(this.enterOuterAlt(e,1),this.state=3067,t=this.tokenStream.LA(1),t===139||t===185?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3068,this.ownedSubclassification(),this.state=3073,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=3069,this.match(r.COMMA),this.state=3070,this.ownedSubclassification(),this.state=3075,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}attributeDefinition(){let e=new Fx(this.context,this.state);this.enterRule(e,522,r.RULE_attributeDefinition);try{this.enterOuterAlt(e,1),this.state=3076,this.definitionPrefix(),this.state=3077,this.match(r.ATTRIBUTE),this.state=3078,this.match(r.DEF),this.state=3079,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}attributeUsage(){let e=new Mu(this.context,this.state);this.enterRule(e,524,r.RULE_attributeUsage);try{this.enterOuterAlt(e,1),this.state=3081,this.usagePrefix(),this.state=3082,this.match(r.ATTRIBUTE),this.state=3083,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}enumerationDefinition(){let e=new Hx(this.context,this.state);this.enterRule(e,526,r.RULE_enumerationDefinition);let t;try{this.enterOuterAlt(e,1);{for(this.state=3088,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3085,this.definitionExtensionKeyword(),this.state=3090,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3091,this.match(r.ENUM),this.state=3092,this.match(r.DEF),this.state=3093,this.definitionDeclaration(),this.state=3094,this.enumerationBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}enumerationBody(){let e=new zx(this.context,this.state);this.enterRule(e,528,r.RULE_enumerationBody);let t;try{switch(this.state=3106,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3096,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3097,this.match(r.LBRACE),this.state=3102,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t-30&-32)===0&&(1<<t-30&285413377)!==0||(t-93&-32)===0&&(1<<t-93&3759153669)!==0||(t-125&-32)===0&&(1<<t-125&8388681)!==0||(t-158&-32)===0&&(1<<t-158&1275461633)!==0||(t-192&-32)===0&&(1<<t-192&2353852417)!==0;){switch(this.state=3100,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COMMENT:case r.DOC:case r.LANGUAGE:case r.LOCALE:case r.METADATA:case r.REP:case r.HASH:case r.AT_SIGN:case r.REGULAR_COMMENT:this.state=3098,this.annotatingMember();break;case r.CROSSES:case r.DEFAULT:case r.DEFINED:case r.ENUM:case r.NONUNIQUE:case r.ORDERED:case r.PRIVATE:case r.PROTECTED:case r.PUBLIC:case r.REDEFINES:case r.REFERENCES:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_EQ:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.SEMI:case r.LT:case r.EQ:case r.LBRACK:case r.LBRACE:case r.IDENTIFIER:case r.STRING:this.state=3099,this.enumerationUsageMember();break;default:throw new ne(this)}this.state=3104,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}this.state=3105,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}enumerationUsageMember(){let e=new gd(this.context,this.state);this.enterRule(e,530,r.RULE_enumerationUsageMember);try{this.enterOuterAlt(e,1),this.state=3108,this.memberPrefix(),this.state=3109,this.enumeratedValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}enumeratedValue(){let e=new Bx(this.context,this.state);this.enterRule(e,532,r.RULE_enumeratedValue);let t;try{this.enterOuterAlt(e,1),this.state=3112,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===58&&(this.state=3111,this.match(r.ENUM)),this.state=3114,this.usage()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}enumerationUsage(){let e=new xd(this.context,this.state);this.enterRule(e,534,r.RULE_enumerationUsage);try{this.enterOuterAlt(e,1),this.state=3116,this.usagePrefix(),this.state=3117,this.match(r.ENUM),this.state=3118,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceDefinitionPrefix(){let e=new Mt(this.context,this.state);this.enterRule(e,536,r.RULE_occurrenceDefinitionPrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=3121,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=3120,this.basicDefinitionPrefix()),this.state=3125,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3123,this.match(r.INDIVIDUAL),this.state=3124,this.emptyMultiplicityMember()),this.state=3130,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3127,this.definitionExtensionKeyword(),this.state=3132,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}occurrenceDefinition(){let e=new jx(this.context,this.state);this.enterRule(e,538,r.RULE_occurrenceDefinition);try{this.enterOuterAlt(e,1),this.state=3133,this.occurrenceDefinitionPrefix(),this.state=3134,this.match(r.OCCURRENCE),this.state=3135,this.match(r.DEF),this.state=3136,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}individualDefinition(){let e=new qx(this.context,this.state);this.enterRule(e,540,r.RULE_individualDefinition);let t;try{this.enterOuterAlt(e,1);{for(this.state=3139,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=3138,this.basicDefinitionPrefix()),this.state=3141,this.match(r.INDIVIDUAL),this.state=3145,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3142,this.definitionExtensionKeyword(),this.state=3147,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3148,this.match(r.DEF),this.state=3149,this.definition(),this.state=3150,this.emptyMultiplicityMember()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}emptyMultiplicityMember(){let e=new bd(this.context,this.state);this.enterRule(e,542,r.RULE_emptyMultiplicityMember);try{this.enterOuterAlt(e,1),this.state=3152,this.emptyMultiplicity_()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}occurrenceUsagePrefix(){let e=new Fe(this.context,this.state);this.enterRule(e,544,r.RULE_occurrenceUsagePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=3154,this.basicUsagePrefix(),this.state=3156,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3155,this.match(r.INDIVIDUAL)),this.state=3159,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===137||t===153)&&(this.state=3158,this.portionKind()),this.state=3164,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3161,this.usageExtensionKeyword(),this.state=3166,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}occurrenceUsage(){let e=new yd(this.context,this.state);this.enterRule(e,546,r.RULE_occurrenceUsage);try{this.enterOuterAlt(e,1),this.state=3167,this.occurrenceUsagePrefix(),this.state=3168,this.match(r.OCCURRENCE),this.state=3169,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}individualUsage(){let e=new vd(this.context,this.state);this.enterRule(e,548,r.RULE_individualUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=3171,this.basicUsagePrefix(),this.state=3172,this.match(r.INDIVIDUAL),this.state=3176,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3173,this.usageExtensionKeyword(),this.state=3178,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3179,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}portionUsage(){let e=new Rd(this.context,this.state);this.enterRule(e,550,r.RULE_portionUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=3181,this.basicUsagePrefix(),this.state=3183,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3182,this.match(r.INDIVIDUAL)),this.state=3185,this.portionKind(),this.state=3189,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3186,this.usageExtensionKeyword(),this.state=3191,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3192,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}portionKind(){let e=new _u(this.context,this.state);this.enterRule(e,552,r.RULE_portionKind);let t;try{this.enterOuterAlt(e,1),this.state=3194,t=this.tokenStream.LA(1),t===137||t===153?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}eventOccurrenceUsage(){let e=new Cd(this.context,this.state);this.enterRule(e,554,r.RULE_eventOccurrenceUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3196,this.occurrenceUsagePrefix(),this.state=3197,this.match(r.EVENT),this.state=3206,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=3198,this.ownedReferenceSubsetting(),this.state=3200,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3199,this.featureSpecializationPart());break;case r.OCCURRENCE:this.state=3202,this.match(r.OCCURRENCE),this.state=3204,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3203,this.usageDeclaration());break;default:throw new ne(this)}this.state=3208,this.usageCompletion()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}sourceSuccessionMember(){let e=new so(this.context,this.state);this.enterRule(e,556,r.RULE_sourceSuccessionMember);try{this.enterOuterAlt(e,1),this.state=3210,this.match(r.THEN),this.state=3211,this.sourceSuccession()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sourceSuccession(){let e=new Vx(this.context,this.state);this.enterRule(e,558,r.RULE_sourceSuccession);try{this.enterOuterAlt(e,1),this.state=3213,this.sourceEndMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sourceEndMember(){let e=new Ed(this.context,this.state);this.enterRule(e,560,r.RULE_sourceEndMember);try{this.enterOuterAlt(e,1),this.state=3215,this.sourceEnd()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sourceEnd(){let e=new Zx(this.context,this.state);this.enterRule(e,562,r.RULE_sourceEnd);try{this.enterOuterAlt(e,1),this.state=3218,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,312,this.context)===1&&(this.state=3217,this.ownedMultiplicity())}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}itemDefinition(){let e=new Gx(this.context,this.state);this.enterRule(e,564,r.RULE_itemDefinition);try{this.enterOuterAlt(e,1),this.state=3220,this.occurrenceDefinitionPrefix(),this.state=3221,this.match(r.ITEM),this.state=3222,this.match(r.DEF),this.state=3223,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}itemUsage(){let e=new Sd(this.context,this.state);this.enterRule(e,566,r.RULE_itemUsage);try{this.enterOuterAlt(e,1),this.state=3225,this.occurrenceUsagePrefix(),this.state=3226,this.match(r.ITEM),this.state=3227,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}partDefinition(){let e=new Wx(this.context,this.state);this.enterRule(e,568,r.RULE_partDefinition);try{this.enterOuterAlt(e,1),this.state=3229,this.occurrenceDefinitionPrefix(),this.state=3230,this.match(r.PART),this.state=3231,this.match(r.DEF),this.state=3232,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}partUsage(){let e=new Pd(this.context,this.state);this.enterRule(e,570,r.RULE_partUsage);try{this.enterOuterAlt(e,1),this.state=3234,this.occurrenceUsagePrefix(),this.state=3235,this.match(r.PART),this.state=3236,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}portDefinition(){let e=new Kx(this.context,this.state);this.enterRule(e,572,r.RULE_portDefinition);try{this.enterOuterAlt(e,1),this.state=3238,this.definitionPrefix(),this.state=3239,this.match(r.PORT),this.state=3240,this.match(r.DEF),this.state=3241,this.definition(),this.state=3242,this.conjugatedPortDefinitionMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}conjugatedPortDefinitionMember(){let e=new Jx(this.context,this.state);this.enterRule(e,574,r.RULE_conjugatedPortDefinitionMember);try{this.enterOuterAlt(e,1),this.state=3244,this.conjugatedPortDefinition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}conjugatedPortDefinition(){let e=new Qx(this.context,this.state);this.enterRule(e,576,r.RULE_conjugatedPortDefinition);try{this.enterOuterAlt(e,1),this.state=3246,this.portConjugation()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}portUsage(){let e=new Ld(this.context,this.state);this.enterRule(e,578,r.RULE_portUsage);try{this.enterOuterAlt(e,1),this.state=3248,this.occurrenceUsagePrefix(),this.state=3249,this.match(r.PORT),this.state=3250,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}conjugatedPortTyping(){let e=new Yx(this.context,this.state);this.enterRule(e,580,r.RULE_conjugatedPortTyping);try{this.enterOuterAlt(e,1),this.state=3252,this.match(r.TILDE),this.state=3253,this.qualifiedName()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connectionDefinition(){let e=new Xx(this.context,this.state);this.enterRule(e,582,r.RULE_connectionDefinition);try{this.enterOuterAlt(e,1),this.state=3255,this.occurrenceDefinitionPrefix(),this.state=3256,this.match(r.CONNECTION),this.state=3257,this.match(r.DEF),this.state=3258,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}connectionUsage(){let e=new Td(this.context,this.state);this.enterRule(e,584,r.RULE_connectionUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3260,this.occurrenceUsagePrefix(),this.state=3274,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.CONNECTION:this.state=3261,this.match(r.CONNECTION),this.state=3263,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3262,this.usageDeclaration()),this.state=3266,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3265,this.valuePart()),this.state=3270,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===36&&(this.state=3268,this.match(r.CONNECT),this.state=3269,this.connectorPart());break;case r.CONNECT:this.state=3272,this.match(r.CONNECT),this.state=3273,this.connectorPart();break;default:throw new ne(this)}this.state=3276,this.usageBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}connectorPart(){let e=new wd(this.context,this.state);this.enterRule(e,586,r.RULE_connectorPart);try{switch(this.state=3280,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.LBRACK:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=3278,this.binaryConnectorPart();break;case r.LPAREN:this.enterOuterAlt(e,2),this.state=3279,this.naryConnectorPart();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}binaryConnectorPart(){let e=new eb(this.context,this.state);this.enterRule(e,588,r.RULE_binaryConnectorPart);try{this.enterOuterAlt(e,1),this.state=3282,this.connectorEndMember(),this.state=3283,this.match(r.TO),this.state=3284,this.connectorEndMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}naryConnectorPart(){let e=new tb(this.context,this.state);this.enterRule(e,590,r.RULE_naryConnectorPart);let t;try{this.enterOuterAlt(e,1);{for(this.state=3286,this.match(r.LPAREN),this.state=3287,this.connectorEndMember(),this.state=3288,this.match(r.COMMA),this.state=3289,this.connectorEndMember(),this.state=3294,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=3290,this.match(r.COMMA),this.state=3291,this.connectorEndMember(),this.state=3296,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3297,this.match(r.RPAREN)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}bindingConnectorAsUsage(){let e=new Nu(this.context,this.state);this.enterRule(e,592,r.RULE_bindingConnectorAsUsage);let t;try{this.enterOuterAlt(e,1),this.state=3299,this.usagePrefix(),this.state=3304,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===22&&(this.state=3300,this.match(r.BINDING),this.state=3302,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3301,this.usageDeclaration())),this.state=3306,this.match(r.BIND),this.state=3307,this.connectorEndMember(),this.state=3308,this.match(r.EQ),this.state=3309,this.connectorEndMember(),this.state=3310,this.usageBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}successionAsUsage(){let e=new Iu(this.context,this.state);this.enterRule(e,594,r.RULE_successionAsUsage);let t;try{this.enterOuterAlt(e,1),this.state=3312,this.usagePrefix(),this.state=3317,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===150&&(this.state=3313,this.match(r.SUCCESSION),this.state=3315,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3314,this.usageDeclaration())),this.state=3319,this.match(r.FIRST),this.state=3320,this.connectorEndMember(),this.state=3321,this.match(r.THEN),this.state=3322,this.connectorEndMember(),this.state=3323,this.usageBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceDefinition(){let e=new rb(this.context,this.state);this.enterRule(e,596,r.RULE_interfaceDefinition);try{this.enterOuterAlt(e,1),this.state=3325,this.occurrenceDefinitionPrefix(),this.state=3326,this.match(r.INTERFACE),this.state=3327,this.match(r.DEF),this.state=3328,this.definitionDeclaration(),this.state=3329,this.interfaceBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceBody(){let e=new kd(this.context,this.state);this.enterRule(e,598,r.RULE_interfaceBody);let t;try{switch(this.state=3340,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3331,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3332,this.match(r.LBRACE),this.state=3336,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490930993)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&2993926401)!==0||(t-135&-32)===0&&(1<<t-135&3892740293)!==0||(t-169&-32)===0&&(1<<t-169&8388611)!==0||t===210||t===223;)this.state=3333,this.interfaceBodyItem(),this.state=3338,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3339,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceBodyItem(){let e=new Ad(this.context,this.state);this.enterRule(e,600,r.RULE_interfaceBodyItem);let t;try{switch(this.state=3351,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,326,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3342,this.definitionMember();break;case 2:this.enterOuterAlt(e,2),this.state=3343,this.variantUsageMember();break;case 3:this.enterOuterAlt(e,3),this.state=3344,this.interfaceNonOccurrenceUsageMember();break;case 4:this.enterOuterAlt(e,4),this.state=3346,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3345,this.sourceSuccessionMember()),this.state=3348,this.interfaceOccurrenceUsageMember();break;case 5:this.enterOuterAlt(e,5),this.state=3349,this.aliasMember();break;case 6:this.enterOuterAlt(e,6),this.state=3350,this.importRule();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceNonOccurrenceUsageMember(){let e=new ib(this.context,this.state);this.enterRule(e,602,r.RULE_interfaceNonOccurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=3353,this.memberPrefix(),this.state=3354,this.interfaceNonOccurrenceUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceNonOccurrenceUsageElement(){let e=new nb(this.context,this.state);this.enterRule(e,604,r.RULE_interfaceNonOccurrenceUsageElement);try{switch(this.state=3361,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,327,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3356,this.referenceUsage();break;case 2:this.enterOuterAlt(e,2),this.state=3357,this.attributeUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3358,this.enumerationUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3359,this.bindingConnectorAsUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3360,this.successionAsUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceOccurrenceUsageMember(){let e=new sb(this.context,this.state);this.enterRule(e,606,r.RULE_interfaceOccurrenceUsageMember);try{this.enterOuterAlt(e,1),this.state=3363,this.memberPrefix(),this.state=3364,this.interfaceOccurrenceUsageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceOccurrenceUsageElement(){let e=new ob(this.context,this.state);this.enterRule(e,608,r.RULE_interfaceOccurrenceUsageElement);try{switch(this.state=3369,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,328,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3366,this.defaultInterfaceEnd();break;case 2:this.enterOuterAlt(e,2),this.state=3367,this.structureUsageElement();break;case 3:this.enterOuterAlt(e,3),this.state=3368,this.behaviorUsageElement();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}defaultInterfaceEnd(){let e=new ab(this.context,this.state);this.enterRule(e,610,r.RULE_defaultInterfaceEnd);try{this.enterOuterAlt(e,1),this.state=3371,this.match(r.END),this.state=3372,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceUsage(){let e=new Md(this.context,this.state);this.enterRule(e,612,r.RULE_interfaceUsage);try{this.enterOuterAlt(e,1),this.state=3374,this.occurrenceUsagePrefix(),this.state=3375,this.match(r.INTERFACE),this.state=3376,this.interfaceUsageDeclaration(),this.state=3377,this.interfaceBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceUsageDeclaration(){let e=new lb(this.context,this.state);this.enterRule(e,614,r.RULE_interfaceUsageDeclaration);let t;try{switch(this.state=3390,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,332,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3380,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3379,this.usageDeclaration()),this.state=3383,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3382,this.valuePart()),this.state=3387,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===36&&(this.state=3385,this.match(r.CONNECT),this.state=3386,this.interfacePart());break;case 2:this.enterOuterAlt(e,2),this.state=3389,this.interfacePart();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfacePart(){let e=new ub(this.context,this.state);this.enterRule(e,616,r.RULE_interfacePart);try{switch(this.state=3394,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.LBRACK:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=3392,this.binaryInterfacePart();break;case r.LPAREN:this.enterOuterAlt(e,2),this.state=3393,this.naryInterfacePart();break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}binaryInterfacePart(){let e=new cb(this.context,this.state);this.enterRule(e,618,r.RULE_binaryInterfacePart);try{this.enterOuterAlt(e,1),this.state=3396,this.interfaceEndMember(),this.state=3397,this.match(r.TO),this.state=3398,this.interfaceEndMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}naryInterfacePart(){let e=new db(this.context,this.state);this.enterRule(e,620,r.RULE_naryInterfacePart);let t;try{this.enterOuterAlt(e,1);{for(this.state=3400,this.match(r.LPAREN),this.state=3401,this.interfaceEndMember(),this.state=3402,this.match(r.COMMA),this.state=3403,this.interfaceEndMember(),this.state=3408,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=3404,this.match(r.COMMA),this.state=3405,this.interfaceEndMember(),this.state=3410,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3411,this.match(r.RPAREN)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}interfaceEndMember(){let e=new Ra(this.context,this.state);this.enterRule(e,622,r.RULE_interfaceEndMember);try{this.enterOuterAlt(e,1),this.state=3413,this.interfaceEnd()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}interfaceEnd(){let e=new hb(this.context,this.state);this.enterRule(e,624,r.RULE_interfaceEnd);let t;try{this.enterOuterAlt(e,1),this.state=3416,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===211&&(this.state=3415,this.ownedCrossMultiplicityMember()),this.state=3421,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,336,this.context)===1&&(this.state=3418,this.name(),this.state=3419,t=this.tokenStream.LA(1),t===128||t===175?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=3423,this.ownedReferenceSubsetting()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}allocationDefinition(){let e=new pb(this.context,this.state);this.enterRule(e,626,r.RULE_allocationDefinition);try{this.enterOuterAlt(e,1),this.state=3425,this.occurrenceDefinitionPrefix(),this.state=3426,this.match(r.ALLOCATION),this.state=3427,this.match(r.DEF),this.state=3428,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}allocationUsage(){let e=new _d(this.context,this.state);this.enterRule(e,628,r.RULE_allocationUsage);try{this.enterOuterAlt(e,1),this.state=3430,this.occurrenceUsagePrefix(),this.state=3431,this.allocationUsageDeclaration(),this.state=3432,this.usageBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}allocationUsageDeclaration(){let e=new fb(this.context,this.state);this.enterRule(e,630,r.RULE_allocationUsageDeclaration);let t;try{switch(this.state=3444,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.ALLOCATION:this.enterOuterAlt(e,1),this.state=3434,this.match(r.ALLOCATION),this.state=3436,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3435,this.usageDeclaration()),this.state=3440,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===9&&(this.state=3438,this.match(r.ALLOCATE),this.state=3439,this.connectorPart());break;case r.ALLOCATE:this.enterOuterAlt(e,2),this.state=3442,this.match(r.ALLOCATE),this.state=3443,this.connectorPart();break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}flowDefinition(){let e=new mb(this.context,this.state);this.enterRule(e,632,r.RULE_flowDefinition);try{this.enterOuterAlt(e,1),this.state=3446,this.occurrenceDefinitionPrefix(),this.state=3447,this.match(r.FLOW),this.state=3448,this.match(r.DEF),this.state=3449,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}message(){let e=new Nd(this.context,this.state);this.enterRule(e,634,r.RULE_message);try{this.enterOuterAlt(e,1),this.state=3451,this.occurrenceUsagePrefix(),this.state=3452,this.match(r.MESSAGE),this.state=3453,this.messageDeclaration(),this.state=3454,this.definitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}messageDeclaration(){let e=new gb(this.context,this.state);this.enterRule(e,636,r.RULE_messageDeclaration);let t;try{switch(this.state=3477,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,344,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3457,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3456,this.usageDeclaration()),this.state=3460,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3459,this.valuePart()),this.state=3464,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===111&&(this.state=3462,this.match(r.OF),this.state=3463,this.flowPayloadFeatureMember()),this.state=3471,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===74&&(this.state=3466,this.match(r.FROM),this.state=3467,this.messageEventMember(),this.state=3468,this.match(r.TO),this.state=3469,this.messageEventMember());break;case 2:this.enterOuterAlt(e,2),this.state=3473,this.messageEventMember(),this.state=3474,this.match(r.TO),this.state=3475,this.messageEventMember();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}messageEventMember(){let e=new Id(this.context,this.state);this.enterRule(e,638,r.RULE_messageEventMember);try{this.enterOuterAlt(e,1),this.state=3479,this.messageEvent()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}messageEvent(){let e=new xb(this.context,this.state);this.enterRule(e,640,r.RULE_messageEvent);try{this.enterOuterAlt(e,1),this.state=3481,this.ownedReferenceSubsetting()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowUsage(){let e=new Ud(this.context,this.state);this.enterRule(e,642,r.RULE_flowUsage);try{this.enterOuterAlt(e,1),this.state=3483,this.occurrenceUsagePrefix(),this.state=3484,this.match(r.FLOW),this.state=3485,this.flowDeclaration(),this.state=3486,this.definitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}successionFlowUsage(){let e=new Od(this.context,this.state);this.enterRule(e,644,r.RULE_successionFlowUsage);try{this.enterOuterAlt(e,1),this.state=3488,this.occurrenceUsagePrefix(),this.state=3489,this.match(r.SUCCESSION),this.state=3490,this.match(r.FLOW),this.state=3491,this.flowDeclaration(),this.state=3492,this.definitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowPayloadFeatureMember(){let e=new Dd(this.context,this.state);this.enterRule(e,646,r.RULE_flowPayloadFeatureMember);try{this.enterOuterAlt(e,1),this.state=3494,this.flowPayloadFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowPayloadFeature(){let e=new bb(this.context,this.state);this.enterRule(e,648,r.RULE_flowPayloadFeature);try{this.enterOuterAlt(e,1),this.state=3496,this.payloadFeature()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}flowEndSubsetting(){let e=new lC(this.context,this.state);this.enterRule(e,650,r.RULE_flowEndSubsetting);try{switch(this.state=3500,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,345,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3498,this.qualifiedName();break;case 2:this.enterOuterAlt(e,2),this.state=3499,this.featureChainPrefix();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureChainPrefix(){let e=new yb(this.context,this.state);this.enterRule(e,652,r.RULE_featureChainPrefix);try{let t;this.enterOuterAlt(e,1);{this.state=3505,this.errorHandler.sync(this),t=1;do{if(t===1)this.state=3502,this.ownedFeatureChaining(),this.state=3503,this.match(r.DOT);else throw new ne(this);this.state=3507,this.errorHandler.sync(this),t=this.interpreter.adaptivePredict(this.tokenStream,346,this.context)}while(t!==2&&t!==Ce.INVALID_ALT_NUMBER);this.state=3509,this.ownedFeatureChaining(),this.state=3510,this.match(r.DOT)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionDefinition(){let e=new vb(this.context,this.state);this.enterRule(e,654,r.RULE_actionDefinition);try{this.enterOuterAlt(e,1),this.state=3512,this.occurrenceDefinitionPrefix(),this.state=3513,this.match(r.ACTION),this.state=3514,this.match(r.DEF),this.state=3515,this.definitionDeclaration(),this.state=3516,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionBody(){let e=new Bt(this.context,this.state);this.enterRule(e,656,r.RULE_actionBody);let t;try{switch(this.state=3527,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3518,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3519,this.match(r.LBRACE),this.state=3523,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3520,this.actionBodyItem(),this.state=3525,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3526,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionBodyItem(){let e=new fr(this.context,this.state);this.enterRule(e,658,r.RULE_actionBodyItem);let t;try{let i;switch(this.state=3548,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,352,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3529,this.nonBehaviorBodyItem();break;case 2:for(this.enterOuterAlt(e,2),this.state=3530,this.initialNodeMember(),this.state=3534,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,349,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=3531,this.actionTargetSuccessionMember()),this.state=3536,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,349,this.context);break;case 3:for(this.enterOuterAlt(e,3),this.state=3538,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3537,this.sourceSuccessionMember()),this.state=3540,this.actionBehaviorMember(),this.state=3544,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,351,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=3541,this.actionTargetSuccessionMember()),this.state=3546,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,351,this.context);break;case 4:this.enterOuterAlt(e,4),this.state=3547,this.guardedSuccessionMember();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nonBehaviorBodyItem(){let e=new $d(this.context,this.state);this.enterRule(e,660,r.RULE_nonBehaviorBodyItem);let t;try{switch(this.state=3559,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,354,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3550,this.importRule();break;case 2:this.enterOuterAlt(e,2),this.state=3551,this.aliasMember();break;case 3:this.enterOuterAlt(e,3),this.state=3552,this.definitionMember();break;case 4:this.enterOuterAlt(e,4),this.state=3553,this.variantUsageMember();break;case 5:this.enterOuterAlt(e,5),this.state=3554,this.nonOccurrenceUsageMember();break;case 6:this.enterOuterAlt(e,6),this.state=3556,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3555,this.sourceSuccessionMember()),this.state=3558,this.structureUsageMember();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionBehaviorMember(){let e=new Rb(this.context,this.state);this.enterRule(e,662,r.RULE_actionBehaviorMember);try{switch(this.state=3563,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,355,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3561,this.behaviorUsageMember();break;case 2:this.enterOuterAlt(e,2),this.state=3562,this.actionNodeMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}initialNodeMember(){let e=new Cb(this.context,this.state);this.enterRule(e,664,r.RULE_initialNodeMember);try{this.enterOuterAlt(e,1),this.state=3565,this.memberPrefix(),this.state=3566,this.match(r.FIRST),this.state=3567,this.qualifiedName(),this.state=3568,this.relationshipBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionNodeMember(){let e=new Eb(this.context,this.state);this.enterRule(e,666,r.RULE_actionNodeMember);try{this.enterOuterAlt(e,1),this.state=3570,this.memberPrefix(),this.state=3571,this.actionNode()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionTargetSuccessionMember(){let e=new Fd(this.context,this.state);this.enterRule(e,668,r.RULE_actionTargetSuccessionMember);try{this.enterOuterAlt(e,1),this.state=3573,this.memberPrefix(),this.state=3574,this.actionTargetSuccession()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardedSuccessionMember(){let e=new Sb(this.context,this.state);this.enterRule(e,670,r.RULE_guardedSuccessionMember);try{this.enterOuterAlt(e,1),this.state=3576,this.memberPrefix(),this.state=3577,this.guardedSuccession()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionUsage(){let e=new Pb(this.context,this.state);this.enterRule(e,672,r.RULE_actionUsage);try{this.enterOuterAlt(e,1),this.state=3579,this.occurrenceUsagePrefix(),this.state=3580,this.match(r.ACTION),this.state=3581,this.actionUsageDeclaration(),this.state=3582,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionUsageDeclaration(){let e=new Ca(this.context,this.state);this.enterRule(e,674,r.RULE_actionUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3585,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3584,this.usageDeclaration()),this.state=3588,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3587,this.valuePart())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}performActionUsage(){let e=new Lb(this.context,this.state);this.enterRule(e,676,r.RULE_performActionUsage);try{this.enterOuterAlt(e,1),this.state=3590,this.occurrenceUsagePrefix(),this.state=3591,this.match(r.PERFORM),this.state=3592,this.performActionUsageDeclaration(),this.state=3593,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}performActionUsageDeclaration(){let e=new Uu(this.context,this.state);this.enterRule(e,678,r.RULE_performActionUsageDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3603,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=3595,this.ownedReferenceSubsetting(),this.state=3597,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3596,this.featureSpecializationPart());break;case r.ACTION:this.state=3599,this.match(r.ACTION),this.state=3601,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3600,this.usageDeclaration());break;default:throw new ne(this)}this.state=3606,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3605,this.valuePart())}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionNode(){let e=new Tb(this.context,this.state);this.enterRule(e,680,r.RULE_actionNode);try{switch(this.state=3616,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,362,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3608,this.controlNode();break;case 2:this.enterOuterAlt(e,2),this.state=3609,this.sendNode();break;case 3:this.enterOuterAlt(e,3),this.state=3610,this.acceptNode();break;case 4:this.enterOuterAlt(e,4),this.state=3611,this.assignmentNode();break;case 5:this.enterOuterAlt(e,5),this.state=3612,this.terminateNode();break;case 6:this.enterOuterAlt(e,6),this.state=3613,this.ifNode();break;case 7:this.enterOuterAlt(e,7),this.state=3614,this.whileLoopNode();break;case 8:this.enterOuterAlt(e,8),this.state=3615,this.forLoopNode();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionNodeUsageDeclaration(){let e=new as(this.context,this.state);this.enterRule(e,682,r.RULE_actionNodeUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3618,this.match(r.ACTION),this.state=3620,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3619,this.usageDeclaration())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionNodePrefix(){let e=new Ou(this.context,this.state);this.enterRule(e,684,r.RULE_actionNodePrefix);let t;try{this.enterOuterAlt(e,1),this.state=3622,this.occurrenceUsagePrefix(),this.state=3624,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3623,this.actionNodeUsageDeclaration())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}controlNode(){let e=new wb(this.context,this.state);this.enterRule(e,686,r.RULE_controlNode);try{switch(this.state=3630,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,365,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3626,this.mergeNode();break;case 2:this.enterOuterAlt(e,2),this.state=3627,this.decisionNode();break;case 3:this.enterOuterAlt(e,3),this.state=3628,this.joinNode();break;case 4:this.enterOuterAlt(e,4),this.state=3629,this.forkNode();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}controlNodePrefix(){let e=new Ea(this.context,this.state);this.enterRule(e,688,r.RULE_controlNodePrefix);let t;try{for(this.enterOuterAlt(e,1),this.state=3632,this.refPrefix(),this.state=3634,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===82&&(this.state=3633,this.match(r.INDIVIDUAL)),this.state=3637,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===137||t===153)&&(this.state=3636,this.portionKind()),this.state=3642,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=3639,this.usageExtensionKeyword(),this.state=3644,this.errorHandler.sync(this),t=this.tokenStream.LA(1)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}mergeNode(){let e=new kb(this.context,this.state);this.enterRule(e,690,r.RULE_mergeNode);let t;try{this.enterOuterAlt(e,1),this.state=3645,this.controlNodePrefix(),this.state=3646,this.match(r.MERGE),this.state=3648,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3647,this.usageDeclaration()),this.state=3650,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}decisionNode(){let e=new Ab(this.context,this.state);this.enterRule(e,692,r.RULE_decisionNode);let t;try{this.enterOuterAlt(e,1),this.state=3652,this.controlNodePrefix(),this.state=3653,this.match(r.DECIDE),this.state=3655,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3654,this.usageDeclaration()),this.state=3657,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}joinNode(){let e=new Mb(this.context,this.state);this.enterRule(e,694,r.RULE_joinNode);let t;try{this.enterOuterAlt(e,1),this.state=3659,this.controlNodePrefix(),this.state=3660,this.match(r.JOIN),this.state=3662,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3661,this.usageDeclaration()),this.state=3664,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}forkNode(){let e=new _b(this.context,this.state);this.enterRule(e,696,r.RULE_forkNode);let t;try{this.enterOuterAlt(e,1),this.state=3666,this.controlNodePrefix(),this.state=3667,this.match(r.FORK),this.state=3669,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3668,this.usageDeclaration()),this.state=3671,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}acceptNode(){let e=new Nb(this.context,this.state);this.enterRule(e,698,r.RULE_acceptNode);try{this.enterOuterAlt(e,1),this.state=3673,this.occurrenceUsagePrefix(),this.state=3674,this.acceptNodeDeclaration(),this.state=3675,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}acceptNodeDeclaration(){let e=new Du(this.context,this.state);this.enterRule(e,700,r.RULE_acceptNodeDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3678,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3677,this.actionNodeUsageDeclaration()),this.state=3680,this.match(r.ACCEPT),this.state=3681,this.acceptParameterPart()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}acceptParameterPart(){let e=new Hd(this.context,this.state);this.enterRule(e,702,r.RULE_acceptParameterPart);let t;try{this.enterOuterAlt(e,1),this.state=3683,this.payloadParameterMember(),this.state=3686,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===168&&(this.state=3684,this.match(r.VIA),this.state=3685,this.nodeParameterMember())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}payloadParameterMember(){let e=new Ib(this.context,this.state);this.enterRule(e,704,r.RULE_payloadParameterMember);try{this.enterOuterAlt(e,1),this.state=3688,this.payloadParameter()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}payloadParameter(){let e=new Ub(this.context,this.state);this.enterRule(e,706,r.RULE_payloadParameter);let t;try{switch(this.state=3698,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,377,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3690,this.payloadFeature();break;case 2:this.enterOuterAlt(e,2),this.state=3692,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=3691,this.identification()),this.state=3695,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3694,this.payloadFeatureSpecializationPart()),this.state=3697,this.triggerValuePart();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}triggerValuePart(){let e=new Ob(this.context,this.state);this.enterRule(e,708,r.RULE_triggerValuePart);try{this.enterOuterAlt(e,1),this.state=3700,this.triggerFeatureValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}triggerFeatureValue(){let e=new Db(this.context,this.state);this.enterRule(e,710,r.RULE_triggerFeatureValue);try{this.enterOuterAlt(e,1),this.state=3702,this.triggerExpression()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}triggerExpression(){let e=new $b(this.context,this.state);this.enterRule(e,712,r.RULE_triggerExpression);let t;try{switch(this.state=3708,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.AFTER:case r.AT:this.enterOuterAlt(e,1),this.state=3704,t=this.tokenStream.LA(1),t===6||t===18?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=3705,this.argumentMember();break;case r.WHEN:this.enterOuterAlt(e,2),this.state=3706,this.match(r.WHEN),this.state=3707,this.argumentExpressionMember();break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}sendNode(){let e=new Fb(this.context,this.state);this.enterRule(e,714,r.RULE_sendNode);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3710,this.occurrenceUsagePrefix(),this.state=3713,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.ACTION:this.state=3711,this.actionNodeUsageDeclaration();break;case r.CROSSES:case r.DEFAULT:case r.DEFINED:case r.NONUNIQUE:case r.ORDERED:case r.REDEFINES:case r.REFERENCES:case r.SEND:case r.SUBSETS:case r.TYPED:case r.COLON_COLON_GT:case r.COLON_GT_GT:case r.COLON_EQ:case r.COLON_GT:case r.FAT_ARROW:case r.COLON:case r.LT:case r.EQ:case r.LBRACK:case r.IDENTIFIER:case r.STRING:this.state=3712,this.actionUsageDeclaration();break;default:throw new ne(this)}switch(this.state=3715,this.match(r.SEND),this.state=3723,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.ALL:case r.FALSE:case r.IF:case r.NEW:case r.NOT:case r.NULL:case r.TRUE:case r.AT_AT:case r.DOLLAR:case r.LPAREN:case r.STAR:case r.PLUS:case r.MINUS:case r.AT_SIGN:case r.LBRACE:case r.TILDE:case r.IDENTIFIER:case r.STRING:case r.DOUBLE_STRING:case r.INTEGER:case r.REAL:this.state=3716,this.nodeParameterMember(),this.state=3718,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===154||t===168)&&(this.state=3717,this.senderReceiverPart());break;case r.TO:case r.VIA:this.state=3720,this.emptyParameterMember(),this.state=3721,this.senderReceiverPart();break;default:throw new ne(this)}this.state=3725,this.actionBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}sendNodeDeclaration(){let e=new zd(this.context,this.state);this.enterRule(e,716,r.RULE_sendNodeDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3728,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3727,this.actionNodeUsageDeclaration()),this.state=3730,this.match(r.SEND),this.state=3731,this.nodeParameterMember(),this.state=3733,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===154||t===168)&&(this.state=3732,this.senderReceiverPart())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}senderReceiverPart(){let e=new Bd(this.context,this.state);this.enterRule(e,718,r.RULE_senderReceiverPart);let t;try{switch(this.state=3745,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.VIA:this.enterOuterAlt(e,1),this.state=3735,this.match(r.VIA),this.state=3736,this.nodeParameterMember(),this.state=3739,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===154&&(this.state=3737,this.match(r.TO),this.state=3738,this.nodeParameterMember());break;case r.TO:this.enterOuterAlt(e,2),this.state=3741,this.emptyParameterMember(),this.state=3742,this.match(r.TO),this.state=3743,this.nodeParameterMember();break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}nodeParameterMember(){let e=new an(this.context,this.state);this.enterRule(e,720,r.RULE_nodeParameterMember);try{this.enterOuterAlt(e,1),this.state=3747,this.nodeParameter()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nodeParameter(){let e=new Hb(this.context,this.state);this.enterRule(e,722,r.RULE_nodeParameter);try{this.enterOuterAlt(e,1),this.state=3749,this.featureBinding()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}featureBinding(){let e=new zb(this.context,this.state);this.enterRule(e,724,r.RULE_featureBinding);try{this.enterOuterAlt(e,1),this.state=3751,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyParameterMember(){let e=new kn(this.context,this.state);this.enterRule(e,726,r.RULE_emptyParameterMember);try{this.enterOuterAlt(e,1),this.state=3753,this.emptyUsage_()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentNode(){let e=new Bb(this.context,this.state);this.enterRule(e,728,r.RULE_assignmentNode);try{this.enterOuterAlt(e,1),this.state=3755,this.occurrenceUsagePrefix(),this.state=3756,this.assignmentNodeDeclaration(),this.state=3757,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentNodeDeclaration(){let e=new $u(this.context,this.state);this.enterRule(e,730,r.RULE_assignmentNodeDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3760,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3759,this.actionNodeUsageDeclaration()),this.state=3762,this.match(r.ASSIGN),this.state=3763,this.assignmentTargetMember(),this.state=3764,this.featureChainMember(),this.state=3765,this.match(r.COLON_EQ),this.state=3766,this.nodeParameterMember()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}assignmentTargetMember(){let e=new jb(this.context,this.state);this.enterRule(e,732,r.RULE_assignmentTargetMember);try{this.enterOuterAlt(e,1),this.state=3768,this.assignmentTargetParameter()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentTargetParameter(){let e=new qb(this.context,this.state);this.enterRule(e,734,r.RULE_assignmentTargetParameter);try{this.enterOuterAlt(e,1),this.state=3773,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,387,this.context)===1&&(this.state=3770,this.assignmentTargetBinding(),this.state=3771,this.match(r.DOT))}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assignmentTargetBinding(){let e=new Vb(this.context,this.state);this.enterRule(e,736,r.RULE_assignmentTargetBinding);try{this.enterOuterAlt(e,1),this.state=3775,this.nonFeatureChainPrimaryExpression()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}terminateNode(){let e=new Zb(this.context,this.state);this.enterRule(e,738,r.RULE_terminateNode);let t;try{this.enterOuterAlt(e,1),this.state=3777,this.occurrenceUsagePrefix(),this.state=3779,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3778,this.actionNodeUsageDeclaration()),this.state=3781,this.match(r.TERMINATE),this.state=3783,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,389,this.context)===1&&(this.state=3782,this.nodeParameterMember()),this.state=3785,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ifNode(){let e=new jd(this.context,this.state);this.enterRule(e,740,r.RULE_ifNode);try{switch(this.enterOuterAlt(e,1),this.state=3787,this.actionNodePrefix(),this.state=3788,this.match(r.IF),this.state=3789,this.expressionParameterMember(),this.state=3790,this.actionBodyParameterMember(),this.state=3796,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,391,this.context)){case 1:switch(this.state=3791,this.match(r.ELSE),this.state=3794,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,390,this.context)){case 1:this.state=3792,this.actionBodyParameterMember();break;case 2:this.state=3793,this.ifNodeParameterMember();break}break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expressionParameterMember(){let e=new Fu(this.context,this.state);this.enterRule(e,742,r.RULE_expressionParameterMember);try{this.enterOuterAlt(e,1),this.state=3798,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionBodyParameterMember(){let e=new Sa(this.context,this.state);this.enterRule(e,744,r.RULE_actionBodyParameterMember);try{this.enterOuterAlt(e,1),this.state=3800,this.actionBodyParameter()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actionBodyParameter(){let e=new Gb(this.context,this.state);this.enterRule(e,746,r.RULE_actionBodyParameter);let t;try{this.enterOuterAlt(e,1);{for(this.state=3806,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===4&&(this.state=3802,this.match(r.ACTION),this.state=3804,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3803,this.usageDeclaration())),this.state=3808,this.match(r.LBRACE),this.state=3812,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3809,this.actionBodyItem(),this.state=3814,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3815,this.match(r.RBRACE)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}ifNodeParameterMember(){let e=new Wb(this.context,this.state);this.enterRule(e,748,r.RULE_ifNodeParameterMember);try{this.enterOuterAlt(e,1),this.state=3817,this.ifNode()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}whileLoopNode(){let e=new Kb(this.context,this.state);this.enterRule(e,750,r.RULE_whileLoopNode);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3819,this.actionNodePrefix(),this.state=3824,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.WHILE:this.state=3820,this.match(r.WHILE),this.state=3821,this.expressionParameterMember();break;case r.LOOP:this.state=3822,this.match(r.LOOP),this.state=3823,this.emptyParameterMember();break;default:throw new ne(this)}this.state=3826,this.actionBodyParameterMember(),this.state=3831,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===161&&(this.state=3827,this.match(r.UNTIL),this.state=3828,this.expressionParameterMember(),this.state=3829,this.match(r.SEMI))}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}forLoopNode(){let e=new Jb(this.context,this.state);this.enterRule(e,752,r.RULE_forLoopNode);try{this.enterOuterAlt(e,1),this.state=3833,this.actionNodePrefix(),this.state=3834,this.match(r.FOR),this.state=3835,this.forVariableDeclarationMember(),this.state=3836,this.match(r.IN),this.state=3837,this.nodeParameterMember(),this.state=3838,this.actionBodyParameterMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}forVariableDeclarationMember(){let e=new Qb(this.context,this.state);this.enterRule(e,754,r.RULE_forVariableDeclarationMember);let t;try{this.enterOuterAlt(e,1),this.state=3841,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3840,this.usageDeclaration())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}forVariableDeclaration(){let e=new uC(this.context,this.state);this.enterRule(e,756,r.RULE_forVariableDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=3844,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3843,this.usageDeclaration())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actionTargetSuccession(){let e=new Yb(this.context,this.state);this.enterRule(e,758,r.RULE_actionTargetSuccession);try{this.enterOuterAlt(e,1);{switch(this.state=3849,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.THEN:case r.LBRACK:this.state=3846,this.targetSuccession();break;case r.IF:this.state=3847,this.guardedTargetSuccession();break;case r.ELSE:this.state=3848,this.defaultTargetSuccession();break;default:throw new ne(this)}this.state=3851,this.usageBody()}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}targetSuccession(){let e=new Xb(this.context,this.state);this.enterRule(e,760,r.RULE_targetSuccession);try{this.enterOuterAlt(e,1),this.state=3853,this.sourceEndMember(),this.state=3854,this.match(r.THEN),this.state=3855,this.connectorEndMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardedTargetSuccession(){let e=new qd(this.context,this.state);this.enterRule(e,762,r.RULE_guardedTargetSuccession);try{this.enterOuterAlt(e,1),this.state=3857,this.guardExpressionMember(),this.state=3858,this.match(r.THEN),this.state=3859,this.transitionSuccessionMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}defaultTargetSuccession(){let e=new e4(this.context,this.state);this.enterRule(e,764,r.RULE_defaultTargetSuccession);try{this.enterOuterAlt(e,1),this.state=3861,this.match(r.ELSE),this.state=3862,this.transitionSuccessionMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardedSuccession(){let e=new t4(this.context,this.state);this.enterRule(e,766,r.RULE_guardedSuccession);let t;try{this.enterOuterAlt(e,1),this.state=3868,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===150&&(this.state=3864,this.match(r.SUCCESSION),this.state=3866,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3865,this.usageDeclaration())),this.state=3870,this.match(r.FIRST),this.state=3871,this.featureChainMember(),this.state=3872,this.guardExpressionMember(),this.state=3873,this.match(r.THEN),this.state=3874,this.transitionSuccessionMember(),this.state=3875,this.usageBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}stateDefinition(){let e=new r4(this.context,this.state);this.enterRule(e,768,r.RULE_stateDefinition);try{this.enterOuterAlt(e,1),this.state=3877,this.occurrenceDefinitionPrefix(),this.state=3878,this.match(r.STATE),this.state=3879,this.match(r.DEF),this.state=3880,this.definitionDeclaration(),this.state=3881,this.stateDefBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateDefBody(){let e=new i4(this.context,this.state);this.enterRule(e,770,r.RULE_stateDefBody);let t;try{switch(this.state=3895,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3883,this.match(r.SEMI);break;case r.PARALLEL:case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3885,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===116&&(this.state=3884,this.match(r.PARALLEL)),this.state=3887,this.match(r.LBRACE),this.state=3891,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&1063503665)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3902185669)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3888,this.stateBodyItem(),this.state=3893,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3894,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}stateBodyItem(){let e=new Pa(this.context,this.state);this.enterRule(e,772,r.RULE_stateBodyItem);let t;try{let i;switch(this.state=3918,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,408,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3897,this.nonBehaviorBodyItem();break;case 2:for(this.enterOuterAlt(e,2),this.state=3899,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===152&&(this.state=3898,this.sourceSuccessionMember()),this.state=3901,this.behaviorUsageMember(),this.state=3905,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,406,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=3902,this.targetTransitionUsageMember()),this.state=3907,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,406,this.context);break;case 3:this.enterOuterAlt(e,3),this.state=3908,this.transitionUsageMember();break;case 4:for(this.enterOuterAlt(e,4),this.state=3909,this.entryActionMember(),this.state=3913,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,407,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=3910,this.entryTransitionMember()),this.state=3915,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,407,this.context);break;case 5:this.enterOuterAlt(e,5),this.state=3916,this.doActionMember();break;case 6:this.enterOuterAlt(e,6),this.state=3917,this.exitActionMember();break}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}entryActionMember(){let e=new n4(this.context,this.state);this.enterRule(e,774,r.RULE_entryActionMember);try{this.enterOuterAlt(e,1),this.state=3920,this.memberPrefix(),this.state=3921,this.match(r.ENTRY),this.state=3922,this.stateActionUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}doActionMember(){let e=new s4(this.context,this.state);this.enterRule(e,776,r.RULE_doActionMember);try{this.enterOuterAlt(e,1),this.state=3924,this.memberPrefix(),this.state=3925,this.match(r.DO),this.state=3926,this.stateActionUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}exitActionMember(){let e=new o4(this.context,this.state);this.enterRule(e,778,r.RULE_exitActionMember);try{this.enterOuterAlt(e,1),this.state=3928,this.memberPrefix(),this.state=3929,this.match(r.EXIT),this.state=3930,this.stateActionUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}entryTransitionMember(){let e=new Vd(this.context,this.state);this.enterRule(e,780,r.RULE_entryTransitionMember);try{this.enterOuterAlt(e,1);{switch(this.state=3932,this.memberPrefix(),this.state=3936,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.IF:this.state=3933,this.guardedTargetSuccession();break;case r.THEN:this.state=3934,this.match(r.THEN),this.state=3935,this.transitionSuccessionMember();break;default:throw new ne(this)}this.state=3938,this.match(r.SEMI)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateActionUsage(){let e=new Hu(this.context,this.state);this.enterRule(e,782,r.RULE_stateActionUsage);try{switch(this.state=3947,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,410,this.context)){case 1:this.enterOuterAlt(e,1),this.state=3940,this.emptyActionUsage_(),this.state=3941,this.match(r.SEMI);break;case 2:this.enterOuterAlt(e,2),this.state=3943,this.statePerformActionUsage();break;case 3:this.enterOuterAlt(e,3),this.state=3944,this.stateAcceptActionUsage();break;case 4:this.enterOuterAlt(e,4),this.state=3945,this.stateSendActionUsage();break;case 5:this.enterOuterAlt(e,5),this.state=3946,this.stateAssignmentActionUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}statePerformActionUsage(){let e=new a4(this.context,this.state);this.enterRule(e,784,r.RULE_statePerformActionUsage);try{this.enterOuterAlt(e,1),this.state=3949,this.performActionUsageDeclaration(),this.state=3950,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateAcceptActionUsage(){let e=new l4(this.context,this.state);this.enterRule(e,786,r.RULE_stateAcceptActionUsage);try{this.enterOuterAlt(e,1),this.state=3952,this.acceptNodeDeclaration(),this.state=3953,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateSendActionUsage(){let e=new u4(this.context,this.state);this.enterRule(e,788,r.RULE_stateSendActionUsage);try{this.enterOuterAlt(e,1),this.state=3955,this.sendNodeDeclaration(),this.state=3956,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateAssignmentActionUsage(){let e=new c4(this.context,this.state);this.enterRule(e,790,r.RULE_stateAssignmentActionUsage);try{this.enterOuterAlt(e,1),this.state=3958,this.assignmentNodeDeclaration(),this.state=3959,this.actionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}transitionUsageMember(){let e=new d4(this.context,this.state);this.enterRule(e,792,r.RULE_transitionUsageMember);try{this.enterOuterAlt(e,1),this.state=3961,this.memberPrefix(),this.state=3962,this.transitionUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}targetTransitionUsageMember(){let e=new Zd(this.context,this.state);this.enterRule(e,794,r.RULE_targetTransitionUsageMember);try{this.enterOuterAlt(e,1),this.state=3964,this.memberPrefix(),this.state=3965,this.targetTransitionUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateUsage(){let e=new h4(this.context,this.state);this.enterRule(e,796,r.RULE_stateUsage);try{this.enterOuterAlt(e,1),this.state=3967,this.occurrenceUsagePrefix(),this.state=3968,this.match(r.STATE),this.state=3969,this.actionUsageDeclaration(),this.state=3970,this.stateUsageBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stateUsageBody(){let e=new Gd(this.context,this.state);this.enterRule(e,798,r.RULE_stateUsageBody);let t;try{switch(this.state=3984,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=3972,this.match(r.SEMI);break;case r.PARALLEL:case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=3974,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===116&&(this.state=3973,this.match(r.PARALLEL)),this.state=3976,this.match(r.LBRACE),this.state=3980,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&1063503665)!==0||(t-69&-32)===0&&(1<<t-69&1195473923)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3902185669)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=3977,this.stateBodyItem(),this.state=3982,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=3983,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}exhibitStateUsage(){let e=new p4(this.context,this.state);this.enterRule(e,800,r.RULE_exhibitStateUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=3986,this.occurrenceUsagePrefix(),this.state=3987,this.match(r.EXHIBIT),this.state=3996,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=3988,this.ownedReferenceSubsetting(),this.state=3990,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=3989,this.featureSpecializationPart());break;case r.STATE:this.state=3992,this.match(r.STATE),this.state=3994,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=3993,this.usageDeclaration());break;default:throw new ne(this)}this.state=3999,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=3998,this.valuePart()),this.state=4001,this.stateUsageBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionUsage(){let e=new f4(this.context,this.state);this.enterRule(e,802,r.RULE_transitionUsage);let t;try{this.enterOuterAlt(e,1),this.state=4003,this.match(r.TRANSITION),this.state=4008,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,419,this.context)===1&&(this.state=4005,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4004,this.usageDeclaration()),this.state=4007,this.match(r.FIRST)),this.state=4010,this.featureChainMember(),this.state=4011,this.emptyParameterMember(),this.state=4015,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===3&&(this.state=4012,this.emptyParameterMember(),this.state=4013,this.triggerActionMember()),this.state=4018,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===77&&(this.state=4017,this.guardExpressionMember()),this.state=4021,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4020,this.effectBehaviorMember()),this.state=4023,this.match(r.THEN),this.state=4024,this.transitionSuccessionMember(),this.state=4025,this.actionBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}targetTransitionUsage(){let e=new m4(this.context,this.state);this.enterRule(e,804,r.RULE_targetTransitionUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4027,this.emptyParameterMember(),this.state=4052,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.TRANSITION:this.state=4028,this.match(r.TRANSITION),this.state=4032,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===3&&(this.state=4029,this.emptyParameterMember(),this.state=4030,this.triggerActionMember()),this.state=4035,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===77&&(this.state=4034,this.guardExpressionMember()),this.state=4038,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4037,this.effectBehaviorMember());break;case r.ACCEPT:this.state=4040,this.emptyParameterMember(),this.state=4041,this.triggerActionMember(),this.state=4043,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===77&&(this.state=4042,this.guardExpressionMember()),this.state=4046,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4045,this.effectBehaviorMember());break;case r.IF:this.state=4048,this.guardExpressionMember(),this.state=4050,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===53&&(this.state=4049,this.effectBehaviorMember());break;case r.THEN:break;default:break}this.state=4054,this.match(r.THEN),this.state=4055,this.transitionSuccessionMember(),this.state=4056,this.actionBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}triggerActionMember(){let e=new Wd(this.context,this.state);this.enterRule(e,806,r.RULE_triggerActionMember);try{this.enterOuterAlt(e,1),this.state=4058,this.match(r.ACCEPT),this.state=4059,this.triggerAction()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}triggerAction(){let e=new g4(this.context,this.state);this.enterRule(e,808,r.RULE_triggerAction);try{this.enterOuterAlt(e,1),this.state=4061,this.acceptParameterPart()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}guardExpressionMember(){let e=new La(this.context,this.state);this.enterRule(e,810,r.RULE_guardExpressionMember);try{this.enterOuterAlt(e,1),this.state=4063,this.match(r.IF),this.state=4064,this.ownedExpression(0)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}effectBehaviorMember(){let e=new Kd(this.context,this.state);this.enterRule(e,812,r.RULE_effectBehaviorMember);try{this.enterOuterAlt(e,1),this.state=4066,this.match(r.DO),this.state=4067,this.effectBehaviorUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}effectBehaviorUsage(){let e=new x4(this.context,this.state);this.enterRule(e,814,r.RULE_effectBehaviorUsage);try{switch(this.state=4074,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,430,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4069,this.emptyActionUsage_();break;case 2:this.enterOuterAlt(e,2),this.state=4070,this.transitionPerformActionUsage();break;case 3:this.enterOuterAlt(e,3),this.state=4071,this.transitionAcceptActionUsage();break;case 4:this.enterOuterAlt(e,4),this.state=4072,this.transitionSendActionUsage();break;case 5:this.enterOuterAlt(e,5),this.state=4073,this.transitionAssignmentActionUsage();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}transitionPerformActionUsage(){let e=new b4(this.context,this.state);this.enterRule(e,816,r.RULE_transitionPerformActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4076,this.performActionUsageDeclaration(),this.state=4085,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4077,this.match(r.LBRACE),this.state=4081,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4078,this.actionBodyItem(),this.state=4083,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4084,this.match(r.RBRACE)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionAcceptActionUsage(){let e=new y4(this.context,this.state);this.enterRule(e,818,r.RULE_transitionAcceptActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4087,this.acceptNodeDeclaration(),this.state=4096,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4088,this.match(r.LBRACE),this.state=4092,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4089,this.actionBodyItem(),this.state=4094,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4095,this.match(r.RBRACE)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionSendActionUsage(){let e=new v4(this.context,this.state);this.enterRule(e,820,r.RULE_transitionSendActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4098,this.sendNodeDeclaration(),this.state=4107,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4099,this.match(r.LBRACE),this.state=4103,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4100,this.actionBodyItem(),this.state=4105,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4106,this.match(r.RBRACE)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionAssignmentActionUsage(){let e=new R4(this.context,this.state);this.enterRule(e,822,r.RULE_transitionAssignmentActionUsage);let t;try{if(this.enterOuterAlt(e,1),this.state=4109,this.assignmentNodeDeclaration(),this.state=4118,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===214){for(this.state=4110,this.match(r.LBRACE),this.state=4114,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181273756)!==0||(t-32&-32)===0&&(1<<t-32&490985265)!==0||(t-69&-32)===0&&(1<<t-69&1874951439)!==0||(t-102&-32)===0&&(1<<t-102&3069425937)!==0||(t-135&-32)===0&&(1<<t-135&3901202631)!==0||(t-169&-32)===0&&(1<<t-169&9011403)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4111,this.actionBodyItem(),this.state=4116,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4117,this.match(r.RBRACE)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}transitionSuccessionMember(){let e=new ls(this.context,this.state);this.enterRule(e,824,r.RULE_transitionSuccessionMember);try{this.enterOuterAlt(e,1),this.state=4120,this.transitionSuccession()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}transitionSuccession(){let e=new C4(this.context,this.state);this.enterRule(e,826,r.RULE_transitionSuccession);try{this.enterOuterAlt(e,1),this.state=4122,this.emptyEndMember(),this.state=4123,this.connectorEndMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyEndMember(){let e=new E4(this.context,this.state);this.enterRule(e,828,r.RULE_emptyEndMember);try{this.enterOuterAlt(e,1),this.state=4125,this.emptyFeature_()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationDefinition(){let e=new S4(this.context,this.state);this.enterRule(e,830,r.RULE_calculationDefinition);try{this.enterOuterAlt(e,1),this.state=4127,this.occurrenceDefinitionPrefix(),this.state=4128,this.match(r.CALC),this.state=4129,this.match(r.DEF),this.state=4130,this.definitionDeclaration(),this.state=4131,this.calculationBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationUsage(){let e=new P4(this.context,this.state);this.enterRule(e,832,r.RULE_calculationUsage);try{this.enterOuterAlt(e,1),this.state=4133,this.occurrenceUsagePrefix(),this.state=4134,this.match(r.CALC),this.state=4135,this.actionUsageDeclaration(),this.state=4136,this.calculationBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationBody(){let e=new An(this.context,this.state);this.enterRule(e,834,r.RULE_calculationBody);try{switch(this.state=4143,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4138,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2),this.state=4139,this.match(r.LBRACE),this.state=4140,this.calculationBodyPart(),this.state=4141,this.match(r.RBRACE);break;default:throw new ne(this)}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}calculationBodyPart(){let e=new L4(this.context,this.state);this.enterRule(e,836,r.RULE_calculationBodyPart);let t;try{let i;this.enterOuterAlt(e,1);{for(this.state=4148,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,440,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=4145,this.calculationBodyItem()),this.state=4150,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,440,this.context);this.state=4152,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&917517)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=4151,this.resultExpressionMember())}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}calculationBodyItem(){let e=new Jd(this.context,this.state);this.enterRule(e,838,r.RULE_calculationBodyItem);try{switch(this.state=4156,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,442,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4154,this.actionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4155,this.returnParameterMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}returnParameterMember(){let e=new Qd(this.context,this.state);this.enterRule(e,840,r.RULE_returnParameterMember);try{this.enterOuterAlt(e,1),this.state=4158,this.memberPrefix(),this.state=4159,this.match(r.RETURN),this.state=4160,this.usageElement()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constraintDefinition(){let e=new T4(this.context,this.state);this.enterRule(e,842,r.RULE_constraintDefinition);try{this.enterOuterAlt(e,1),this.state=4162,this.occurrenceDefinitionPrefix(),this.state=4163,this.match(r.CONSTRAINT),this.state=4164,this.match(r.DEF),this.state=4165,this.definitionDeclaration(),this.state=4166,this.calculationBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}constraintUsage(){let e=new w4(this.context,this.state);this.enterRule(e,844,r.RULE_constraintUsage);try{this.enterOuterAlt(e,1),this.state=4168,this.occurrenceUsagePrefix(),this.state=4169,this.match(r.CONSTRAINT),this.state=4170,this.constraintUsageDeclaration(),this.state=4171,this.calculationBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}assertConstraintUsage(){let e=new k4(this.context,this.state);this.enterRule(e,846,r.RULE_assertConstraintUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4173,this.occurrenceUsagePrefix(),this.state=4174,this.match(r.ASSERT),this.state=4176,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===107&&(this.state=4175,this.match(r.NOT)),this.state=4184,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=4178,this.ownedReferenceSubsetting(),this.state=4180,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4179,this.featureSpecializationPart());break;case r.CONSTRAINT:this.state=4182,this.match(r.CONSTRAINT),this.state=4183,this.constraintUsageDeclaration();break;default:throw new ne(this)}this.state=4186,this.calculationBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}constraintUsageDeclaration(){let e=new Hr(this.context,this.state);this.enterRule(e,848,r.RULE_constraintUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=4189,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4188,this.usageDeclaration()),this.state=4192,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4191,this.valuePart())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementDefinition(){let e=new A4(this.context,this.state);this.enterRule(e,850,r.RULE_requirementDefinition);try{this.enterOuterAlt(e,1),this.state=4194,this.occurrenceDefinitionPrefix(),this.state=4195,this.match(r.REQUIREMENT),this.state=4196,this.match(r.DEF),this.state=4197,this.definitionDeclaration(),this.state=4198,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementBody(){let e=new di(this.context,this.state);this.enterRule(e,852,r.RULE_requirementBody);let t;try{switch(this.state=4209,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4200,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4201,this.match(r.LBRACE),this.state=4205,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181372084)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-69&-32)===0&&(1<<t-69&1195473939)!==0||(t-102&-32)===0&&(1<<t-102&4143167761)!==0||(t-135&-32)===0&&(1<<t-135&3901139173)!==0||(t-167&-32)===0&&(1<<t-167&36045581)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4202,this.requirementBodyItem(),this.state=4207,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4208,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementBodyItem(){let e=new Yd(this.context,this.state);this.enterRule(e,854,r.RULE_requirementBodyItem);try{switch(this.state=4218,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,450,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4211,this.definitionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4212,this.subjectMember();break;case 3:this.enterOuterAlt(e,3),this.state=4213,this.requirementConstraintMember();break;case 4:this.enterOuterAlt(e,4),this.state=4214,this.framedConcernMember();break;case 5:this.enterOuterAlt(e,5),this.state=4215,this.requirementVerificationMember();break;case 6:this.enterOuterAlt(e,6),this.state=4216,this.actorMember();break;case 7:this.enterOuterAlt(e,7),this.state=4217,this.stakeholderMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subjectMember(){let e=new Xd(this.context,this.state);this.enterRule(e,856,r.RULE_subjectMember);try{this.enterOuterAlt(e,1),this.state=4220,this.memberPrefix(),this.state=4221,this.subjectUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}subjectUsage(){let e=new M4(this.context,this.state);this.enterRule(e,858,r.RULE_subjectUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4223,this.match(r.SUBJECT),this.state=4227,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4224,this.usageExtensionKeyword(),this.state=4229,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4230,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementConstraintMember(){let e=new _4(this.context,this.state);this.enterRule(e,860,r.RULE_requirementConstraintMember);try{this.enterOuterAlt(e,1),this.state=4232,this.memberPrefix(),this.state=4233,this.requirementKind(),this.state=4234,this.requirementConstraintUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementKind(){let e=new N4(this.context,this.state);this.enterRule(e,862,r.RULE_requirementKind);let t;try{this.enterOuterAlt(e,1),this.state=4236,t=this.tokenStream.LA(1),t===17||t===132?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementConstraintUsage(){let e=new I4(this.context,this.state);this.enterRule(e,864,r.RULE_requirementConstraintUsage);let t;try{switch(this.state=4261,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=4238,this.ownedReferenceSubsetting(),this.state=4240,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4239,this.featureSpecializationPart()),this.state=4242,this.requirementBody();break;case r.CONSTRAINT:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4256,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,455,this.context)){case 1:{for(this.state=4247,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4244,this.usageExtensionKeyword(),this.state=4249,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4250,this.match(r.CONSTRAINT)}break;case 2:{this.state=4252,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4251,this.usageExtensionKeyword(),this.state=4254,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4258,this.constraintUsageDeclaration(),this.state=4259,this.calculationBody()}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}framedConcernMember(){let e=new U4(this.context,this.state);this.enterRule(e,866,r.RULE_framedConcernMember);try{this.enterOuterAlt(e,1),this.state=4263,this.memberPrefix(),this.state=4264,this.match(r.FRAME),this.state=4265,this.framedConcernUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}framedConcernUsage(){let e=new O4(this.context,this.state);this.enterRule(e,868,r.RULE_framedConcernUsage);let t;try{switch(this.state=4290,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=4267,this.ownedReferenceSubsetting(),this.state=4269,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4268,this.featureSpecializationPart()),this.state=4271,this.calculationBody();break;case r.CONCERN:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4285,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,460,this.context)){case 1:{for(this.state=4276,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4273,this.usageExtensionKeyword(),this.state=4278,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4279,this.match(r.CONCERN)}break;case 2:{this.state=4281,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4280,this.usageExtensionKeyword(),this.state=4283,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4287,this.calculationUsageDeclaration(),this.state=4288,this.calculationBody()}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}actorMember(){let e=new eh(this.context,this.state);this.enterRule(e,870,r.RULE_actorMember);try{this.enterOuterAlt(e,1),this.state=4292,this.memberPrefix(),this.state=4293,this.actorUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}actorUsage(){let e=new D4(this.context,this.state);this.enterRule(e,872,r.RULE_actorUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4295,this.match(r.ACTOR),this.state=4299,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4296,this.usageExtensionKeyword(),this.state=4301,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4302,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}stakeholderMember(){let e=new $4(this.context,this.state);this.enterRule(e,874,r.RULE_stakeholderMember);try{this.enterOuterAlt(e,1),this.state=4304,this.memberPrefix(),this.state=4305,this.stakeholderUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}stakeholderUsage(){let e=new F4(this.context,this.state);this.enterRule(e,876,r.RULE_stakeholderUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4307,this.match(r.STAKEHOLDER),this.state=4311,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4308,this.usageExtensionKeyword(),this.state=4313,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4314,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}requirementUsage(){let e=new H4(this.context,this.state);this.enterRule(e,878,r.RULE_requirementUsage);try{this.enterOuterAlt(e,1),this.state=4316,this.occurrenceUsagePrefix(),this.state=4317,this.match(r.REQUIREMENT),this.state=4318,this.constraintUsageDeclaration(),this.state=4319,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfyRequirementUsage(){let e=new z4(this.context,this.state);this.enterRule(e,880,r.RULE_satisfyRequirementUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4321,this.occurrenceUsagePrefix(),this.state=4326,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===14&&(this.state=4322,this.match(r.ASSERT),this.state=4324,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===107&&(this.state=4323,this.match(r.NOT))),this.state=4328,this.match(r.SATISFY),this.state=4337,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=4329,this.ownedReferenceSubsetting(),this.state=4331,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4330,this.featureSpecializationPart());break;case r.REQUIREMENT:this.state=4333,this.match(r.REQUIREMENT),this.state=4335,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4334,this.usageDeclaration());break;default:throw new ne(this)}this.state=4340,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4339,this.valuePart()),this.state=4344,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===24&&(this.state=4342,this.match(r.BY),this.state=4343,this.satisfactionSubjectMember()),this.state=4346,this.requirementBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}satisfactionSubjectMember(){let e=new B4(this.context,this.state);this.enterRule(e,882,r.RULE_satisfactionSubjectMember);try{this.enterOuterAlt(e,1),this.state=4348,this.satisfactionParameter()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfactionParameter(){let e=new j4(this.context,this.state);this.enterRule(e,884,r.RULE_satisfactionParameter);try{this.enterOuterAlt(e,1),this.state=4350,this.satisfactionFeatureValue()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfactionFeatureValue(){let e=new q4(this.context,this.state);this.enterRule(e,886,r.RULE_satisfactionFeatureValue);try{this.enterOuterAlt(e,1),this.state=4352,this.satisfactionReferenceExpression()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}satisfactionReferenceExpression(){let e=new V4(this.context,this.state);this.enterRule(e,888,r.RULE_satisfactionReferenceExpression);try{this.enterOuterAlt(e,1),this.state=4354,this.featureChainMember()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}concernDefinition(){let e=new Z4(this.context,this.state);this.enterRule(e,890,r.RULE_concernDefinition);try{this.enterOuterAlt(e,1),this.state=4356,this.occurrenceDefinitionPrefix(),this.state=4357,this.match(r.CONCERN),this.state=4358,this.match(r.DEF),this.state=4359,this.definitionDeclaration(),this.state=4360,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}concernUsage(){let e=new G4(this.context,this.state);this.enterRule(e,892,r.RULE_concernUsage);try{this.enterOuterAlt(e,1),this.state=4362,this.occurrenceUsagePrefix(),this.state=4363,this.match(r.CONCERN),this.state=4364,this.constraintUsageDeclaration(),this.state=4365,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}caseDefinition(){let e=new W4(this.context,this.state);this.enterRule(e,894,r.RULE_caseDefinition);try{this.enterOuterAlt(e,1),this.state=4367,this.occurrenceDefinitionPrefix(),this.state=4368,this.match(r.CASE),this.state=4369,this.match(r.DEF),this.state=4370,this.definitionDeclaration(),this.state=4371,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}caseUsage(){let e=new K4(this.context,this.state);this.enterRule(e,896,r.RULE_caseUsage);try{this.enterOuterAlt(e,1),this.state=4373,this.occurrenceUsagePrefix(),this.state=4374,this.match(r.CASE),this.state=4375,this.constraintUsageDeclaration(),this.state=4376,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}caseBody(){let e=new Ai(this.context,this.state);this.enterRule(e,898,r.RULE_caseBody);let t;try{let i;switch(this.state=4390,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4378,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4379,this.match(r.LBRACE),this.state=4383,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,471,this.context);i!==2&&i!==Ce.INVALID_ALT_NUMBER;)i===1&&(this.state=4380,this.caseBodyItem()),this.state=4385,this.errorHandler.sync(this),i=this.interpreter.adaptivePredict(this.tokenStream,471,this.context);this.state=4387,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===8||t===64||t===77||(t-105&-32)===0&&(1<<t-105&917517)!==0||t===156||(t-191&-32)===0&&(1<<t-191&4236772773)!==0)&&(this.state=4386,this.resultExpressionMember()),this.state=4389,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}caseBodyItem(){let e=new th(this.context,this.state);this.enterRule(e,900,r.RULE_caseBodyItem);try{switch(this.state=4397,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,474,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4392,this.actionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4393,this.returnParameterMember();break;case 3:this.enterOuterAlt(e,3),this.state=4394,this.subjectMember();break;case 4:this.enterOuterAlt(e,4),this.state=4395,this.actorMember();break;case 5:this.enterOuterAlt(e,5),this.state=4396,this.objectiveMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}objectiveMember(){let e=new J4(this.context,this.state);this.enterRule(e,902,r.RULE_objectiveMember);try{this.enterOuterAlt(e,1),this.state=4399,this.memberPrefix(),this.state=4400,this.match(r.OBJECTIVE),this.state=4401,this.objectiveRequirementUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}objectiveRequirementUsage(){let e=new Q4(this.context,this.state);this.enterRule(e,904,r.RULE_objectiveRequirementUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4406,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4403,this.usageExtensionKeyword(),this.state=4408,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4409,this.constraintUsageDeclaration(),this.state=4410,this.requirementBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}analysisCaseDefinition(){let e=new Y4(this.context,this.state);this.enterRule(e,906,r.RULE_analysisCaseDefinition);try{this.enterOuterAlt(e,1),this.state=4412,this.occurrenceDefinitionPrefix(),this.state=4413,this.match(r.ANALYSIS),this.state=4414,this.match(r.DEF),this.state=4415,this.definitionDeclaration(),this.state=4416,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}analysisCaseUsage(){let e=new X4(this.context,this.state);this.enterRule(e,908,r.RULE_analysisCaseUsage);try{this.enterOuterAlt(e,1),this.state=4418,this.occurrenceUsagePrefix(),this.state=4419,this.match(r.ANALYSIS),this.state=4420,this.constraintUsageDeclaration(),this.state=4421,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}verificationCaseDefinition(){let e=new ey(this.context,this.state);this.enterRule(e,910,r.RULE_verificationCaseDefinition);try{this.enterOuterAlt(e,1),this.state=4423,this.occurrenceDefinitionPrefix(),this.state=4424,this.match(r.VERIFICATION),this.state=4425,this.match(r.DEF),this.state=4426,this.definitionDeclaration(),this.state=4427,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}verificationCaseUsage(){let e=new ty(this.context,this.state);this.enterRule(e,912,r.RULE_verificationCaseUsage);try{this.enterOuterAlt(e,1),this.state=4429,this.occurrenceUsagePrefix(),this.state=4430,this.match(r.VERIFICATION),this.state=4431,this.constraintUsageDeclaration(),this.state=4432,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementVerificationMember(){let e=new ry(this.context,this.state);this.enterRule(e,914,r.RULE_requirementVerificationMember);try{this.enterOuterAlt(e,1),this.state=4434,this.memberPrefix(),this.state=4435,this.match(r.VERIFY),this.state=4436,this.requirementVerificationUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}requirementVerificationUsage(){let e=new iy(this.context,this.state);this.enterRule(e,916,r.RULE_requirementVerificationUsage);let t;try{switch(this.state=4464,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1);{for(this.state=4438,this.ownedReferenceSubsetting(),this.state=4442,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===42||t===47||(t-125&-32)===0&&(1<<t-125&8388617)!==0||(t-158&-32)===0&&(1<<t-158&1208352769)!==0||t===204;)this.state=4439,this.featureSpecialization(),this.state=4444,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4445,this.requirementBody()}break;case r.REQUIREMENT:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4459,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,479,this.context)){case 1:{for(this.state=4450,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4447,this.usageExtensionKeyword(),this.state=4452,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4453,this.match(r.REQUIREMENT)}break;case 2:{this.state=4455,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4454,this.usageExtensionKeyword(),this.state=4457,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4461,this.constraintUsageDeclaration(),this.state=4462,this.requirementBody()}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}useCaseDefinition(){let e=new ny(this.context,this.state);this.enterRule(e,918,r.RULE_useCaseDefinition);try{this.enterOuterAlt(e,1),this.state=4466,this.occurrenceDefinitionPrefix(),this.state=4467,this.match(r.USE),this.state=4468,this.match(r.CASE),this.state=4469,this.match(r.DEF),this.state=4470,this.definitionDeclaration(),this.state=4471,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}useCaseUsage(){let e=new sy(this.context,this.state);this.enterRule(e,920,r.RULE_useCaseUsage);try{this.enterOuterAlt(e,1),this.state=4473,this.occurrenceUsagePrefix(),this.state=4474,this.match(r.USE),this.state=4475,this.match(r.CASE),this.state=4476,this.constraintUsageDeclaration(),this.state=4477,this.caseBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}includeUseCaseUsage(){let e=new oy(this.context,this.state);this.enterRule(e,922,r.RULE_includeUseCaseUsage);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4479,this.occurrenceUsagePrefix(),this.state=4480,this.match(r.INCLUDE),this.state=4490,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.state=4481,this.ownedReferenceSubsetting(),this.state=4483,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4482,this.featureSpecializationPart());break;case r.USE:this.state=4485,this.match(r.USE),this.state=4486,this.match(r.CASE),this.state=4488,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4487,this.usageDeclaration());break;default:throw new ne(this)}this.state=4493,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4492,this.valuePart()),this.state=4495,this.caseBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewDefinition(){let e=new ay(this.context,this.state);this.enterRule(e,924,r.RULE_viewDefinition);try{this.enterOuterAlt(e,1),this.state=4497,this.occurrenceDefinitionPrefix(),this.state=4498,this.match(r.VIEW),this.state=4499,this.match(r.DEF),this.state=4500,this.definitionDeclaration(),this.state=4501,this.viewDefinitionBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewDefinitionBody(){let e=new ly(this.context,this.state);this.enterRule(e,926,r.RULE_viewDefinitionBody);let t;try{switch(this.state=4512,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4503,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4504,this.match(r.LBRACE),this.state=4508,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&490981169)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3203643665)!==0||(t-135&-32)===0&&(1<<t-135&3901137093)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4505,this.viewDefinitionBodyItem(),this.state=4510,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4511,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewDefinitionBodyItem(){let e=new rh(this.context,this.state);this.enterRule(e,928,r.RULE_viewDefinitionBodyItem);try{switch(this.state=4517,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,487,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4514,this.definitionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4515,this.elementFilterMember();break;case 3:this.enterOuterAlt(e,3),this.state=4516,this.viewRenderingMember();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewRenderingMember(){let e=new ih(this.context,this.state);this.enterRule(e,930,r.RULE_viewRenderingMember);try{this.enterOuterAlt(e,1),this.state=4519,this.memberPrefix(),this.state=4520,this.match(r.RENDER),this.state=4521,this.viewRenderingUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewRenderingUsage(){let e=new uy(this.context,this.state);this.enterRule(e,932,r.RULE_viewRenderingUsage);let t;try{switch(this.state=4544,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.DOLLAR:case r.IDENTIFIER:case r.STRING:this.enterOuterAlt(e,1),this.state=4523,this.ownedReferenceSubsetting(),this.state=4525,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4524,this.featureSpecializationPart()),this.state=4527,this.usageBody();break;case r.RENDERING:case r.HASH:this.enterOuterAlt(e,2);{switch(this.state=4541,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,491,this.context)){case 1:{for(this.state=4532,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4529,this.usageExtensionKeyword(),this.state=4534,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4535,this.match(r.RENDERING)}break;case 2:{this.state=4537,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4536,this.usageExtensionKeyword(),this.state=4539,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192)}break}this.state=4543,this.usage()}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewUsage(){let e=new nh(this.context,this.state);this.enterRule(e,934,r.RULE_viewUsage);let t;try{this.enterOuterAlt(e,1),this.state=4546,this.occurrenceUsagePrefix(),this.state=4547,this.match(r.VIEW),this.state=4549,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4548,this.usageDeclaration()),this.state=4552,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4551,this.valuePart()),this.state=4554,this.viewBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewBody(){let e=new cy(this.context,this.state);this.enterRule(e,936,r.RULE_viewBody);let t;try{switch(this.state=4565,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.SEMI:this.enterOuterAlt(e,1),this.state=4556,this.match(r.SEMI);break;case r.LBRACE:this.enterOuterAlt(e,2);{for(this.state=4557,this.match(r.LBRACE),this.state=4561,this.errorHandler.sync(this),t=this.tokenStream.LA(1);(t&-32)===0&&(1<<t&1181240980)!==0||(t-32&-32)===0&&(1<<t-32&1564722993)!==0||(t-68&-32)===0&&(1<<t-68&2390947847)!==0||(t-102&-32)===0&&(1<<t-102&3203643665)!==0||(t-135&-32)===0&&(1<<t-135&3901137093)!==0||(t-169&-32)===0&&(1<<t-169&9011395)!==0||(t-204&-32)===0&&(1<<t-204&574671)!==0;)this.state=4558,this.viewBodyItem(),this.state=4563,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4564,this.match(r.RBRACE)}break;default:throw new ne(this)}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}viewBodyItem(){let e=new sh(this.context,this.state);this.enterRule(e,938,r.RULE_viewBodyItem);try{switch(this.state=4571,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,497,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4567,this.definitionBodyItem();break;case 2:this.enterOuterAlt(e,2),this.state=4568,this.elementFilterMember();break;case 3:this.enterOuterAlt(e,3),this.state=4569,this.viewRenderingMember();break;case 4:this.enterOuterAlt(e,4),this.state=4570,this.expose();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}expose(){let e=new dy(this.context,this.state);this.enterRule(e,940,r.RULE_expose);try{this.enterOuterAlt(e,1);{switch(this.state=4573,this.match(r.EXPOSE),this.state=4576,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,498,this.context)){case 1:this.state=4574,this.membershipExpose();break;case 2:this.state=4575,this.namespaceExpose();break}this.state=4578,this.relationshipBody()}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}membershipExpose(){let e=new hy(this.context,this.state);this.enterRule(e,942,r.RULE_membershipExpose);try{this.enterOuterAlt(e,1),this.state=4580,this.membershipImport()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namespaceExpose(){let e=new py(this.context,this.state);this.enterRule(e,944,r.RULE_namespaceExpose);try{this.enterOuterAlt(e,1),this.state=4582,this.namespaceImport()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewpointDefinition(){let e=new fy(this.context,this.state);this.enterRule(e,946,r.RULE_viewpointDefinition);try{this.enterOuterAlt(e,1),this.state=4584,this.occurrenceDefinitionPrefix(),this.state=4585,this.match(r.VIEWPOINT),this.state=4586,this.match(r.DEF),this.state=4587,this.definitionDeclaration(),this.state=4588,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}viewpointUsage(){let e=new my(this.context,this.state);this.enterRule(e,948,r.RULE_viewpointUsage);try{this.enterOuterAlt(e,1),this.state=4590,this.occurrenceUsagePrefix(),this.state=4591,this.match(r.VIEWPOINT),this.state=4592,this.constraintUsageDeclaration(),this.state=4593,this.requirementBody()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}renderingDefinition(){let e=new gy(this.context,this.state);this.enterRule(e,950,r.RULE_renderingDefinition);try{this.enterOuterAlt(e,1),this.state=4595,this.occurrenceDefinitionPrefix(),this.state=4596,this.match(r.RENDERING),this.state=4597,this.match(r.DEF),this.state=4598,this.definition()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}renderingUsage(){let e=new oh(this.context,this.state);this.enterRule(e,952,r.RULE_renderingUsage);try{this.enterOuterAlt(e,1),this.state=4600,this.occurrenceUsagePrefix(),this.state=4601,this.match(r.RENDERING),this.state=4602,this.usage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataDefinition(){let e=new xy(this.context,this.state);this.enterRule(e,954,r.RULE_metadataDefinition);let t;try{this.enterOuterAlt(e,1);{for(this.state=4605,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===2&&(this.state=4604,this.match(r.ABSTRACT)),this.state=4610,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4607,this.definitionExtensionKeyword(),this.state=4612,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4613,this.match(r.METADATA),this.state=4614,this.match(r.DEF),this.state=4615,this.definition()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}prefixMetadataUsage(){let e=new ah(this.context,this.state);this.enterRule(e,956,r.RULE_prefixMetadataUsage);try{this.enterOuterAlt(e,1),this.state=4617,this.ownedFeatureTyping()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataUsage(){let e=new cC(this.context,this.state);this.enterRule(e,958,r.RULE_metadataUsage);let t;try{this.enterOuterAlt(e,1);{for(this.state=4622,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===192;)this.state=4619,this.usageExtensionKeyword(),this.state=4624,this.errorHandler.sync(this),t=this.tokenStream.LA(1);if(this.state=4625,t=this.tokenStream.LA(1),t===102||t===210?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this),this.state=4626,this.metadataUsageDeclaration(),this.state=4636,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===1)for(this.state=4627,this.match(r.ABOUT),this.state=4628,this.annotation(),this.state=4633,this.errorHandler.sync(this),t=this.tokenStream.LA(1);t===200;)this.state=4629,this.match(r.COMMA),this.state=4630,this.annotation(),this.state=4635,this.errorHandler.sync(this),t=this.tokenStream.LA(1);this.state=4638,this.metadataBody()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataUsageDeclaration(){let e=new by(this.context,this.state);this.enterRule(e,960,r.RULE_metadataUsageDeclaration);let t;try{this.enterOuterAlt(e,1);{switch(this.state=4648,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,506,this.context)){case 1:switch(this.state=4641,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t-206&-32)===0&&(1<<t-206&12289)!==0&&(this.state=4640,this.identification()),this.state=4646,this.errorHandler.sync(this),this.tokenStream.LA(1)){case r.COLON:this.state=4643,this.match(r.COLON);break;case r.TYPED:this.state=4644,this.match(r.TYPED),this.state=4645,this.match(r.BY);break;default:throw new ne(this)}break}this.state=4650,this.ownedFeatureTyping()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}metadataBodyUsageMember(){let e=new lh(this.context,this.state);this.enterRule(e,962,r.RULE_metadataBodyUsageMember);try{this.enterOuterAlt(e,1),this.state=4652,this.metadataBodyUsage()}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}metadataBodyUsage(){let e=new yy(this.context,this.state);this.enterRule(e,964,r.RULE_metadataBodyUsage);let t;try{this.enterOuterAlt(e,1),this.state=4655,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===127&&(this.state=4654,this.match(r.REF)),this.state=4658,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===125||t===176)&&(this.state=4657,t=this.tokenStream.LA(1),t===125||t===176?(this.errorHandler.reportMatch(this),this.consume()):this.errorHandler.recoverInline(this)),this.state=4660,this.ownedRedefinition(),this.state=4662,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&67633161)!==0)&&(this.state=4661,this.featureSpecializationPart()),this.state=4665,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4664,this.valuePart()),this.state=4667,this.metadataBody()}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}extendedDefinition(){let e=new vy(this.context,this.state);this.enterRule(e,966,r.RULE_extendedDefinition);let t;try{this.enterOuterAlt(e,1);{this.state=4670,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===2||t===165)&&(this.state=4669,this.basicDefinitionPrefix()),this.state=4673,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4672,this.definitionExtensionKeyword(),this.state=4675,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192);this.state=4677,this.match(r.DEF),this.state=4678,this.definition()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}extendedUsage(){let e=new Ry(this.context,this.state);this.enterRule(e,968,r.RULE_extendedUsage);let t;try{this.enterOuterAlt(e,1);{this.state=4680,this.unextendedUsagePrefix(),this.state=4682,this.errorHandler.sync(this),t=this.tokenStream.LA(1);do this.state=4681,this.usageExtensionKeyword(),this.state=4684,this.errorHandler.sync(this),t=this.tokenStream.LA(1);while(t===192);this.state=4686,this.usage()}}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}filterPackageImportDeclaration(){let e=new Cy(this.context,this.state);this.enterRule(e,970,r.RULE_filterPackageImportDeclaration);try{switch(this.state=4690,this.errorHandler.sync(this),this.interpreter.adaptivePredict(this.tokenStream,514,this.context)){case 1:this.enterOuterAlt(e,1),this.state=4688,this.membershipImport();break;case 2:this.enterOuterAlt(e,2),this.state=4689,this.namespaceImportDirect();break}}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}namespaceImportDirect(){let e=new Ey(this.context,this.state);this.enterRule(e,972,r.RULE_namespaceImportDirect);let t;try{this.enterOuterAlt(e,1),this.state=4692,this.qualifiedName(),this.state=4693,this.match(r.COLON_COLON),this.state=4694,this.match(r.STAR),this.state=4697,this.errorHandler.sync(this),t=this.tokenStream.LA(1),t===183&&(this.state=4695,this.match(r.COLON_COLON),this.state=4696,this.match(r.STAR_STAR))}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}calculationUsageDeclaration(){let e=new Sy(this.context,this.state);this.enterRule(e,974,r.RULE_calculationUsageDeclaration);let t;try{this.enterOuterAlt(e,1),this.state=4700,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===42||t===47||(t-106&-32)===0&&(1<<t-106&4718721)!==0||(t-148&-32)===0&&(1<<t-148&402654209)!==0||(t-185&-32)===0&&(1<<t-185&69730313)!==0||t===218||t===219)&&(this.state=4699,this.usageDeclaration()),this.state=4703,this.errorHandler.sync(this),t=this.tokenStream.LA(1),(t===46||t===184||t===207)&&(this.state=4702,this.valuePart())}catch(i){if(i instanceof p)this.errorHandler.reportError(this,i),this.errorHandler.recover(this,i);else throw i}finally{this.exitRule()}return e}emptyActionUsage_(){let e=new uh(this.context,this.state);this.enterRule(e,976,r.RULE_emptyActionUsage_);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyFeature_(){let e=new ch(this.context,this.state);this.enterRule(e,978,r.RULE_emptyFeature_);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyMultiplicity_(){let e=new Py(this.context,this.state);this.enterRule(e,980,r.RULE_emptyMultiplicity_);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}emptyUsage_(){let e=new Ly(this.context,this.state);this.enterRule(e,982,r.RULE_emptyUsage_);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}filterPackageImport(){let e=new Ty(this.context,this.state);this.enterRule(e,984,r.RULE_filterPackageImport);try{this.enterOuterAlt(e,1),this.state=4713,this.match(r.IDENTIFIER)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}nonFeatureChainPrimaryExpression(){let e=new wy(this.context,this.state);this.enterRule(e,986,r.RULE_nonFeatureChainPrimaryExpression);try{this.enterOuterAlt(e,1),this.state=4715,this.match(r.IDENTIFIER)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}portConjugation(){let e=new ky(this.context,this.state);this.enterRule(e,988,r.RULE_portConjugation);try{this.enterOuterAlt(e,1)}catch(t){if(t instanceof p)this.errorHandler.reportError(this,t),this.errorHandler.recover(this,t);else throw t}finally{this.exitRule()}return e}sempred(e,t,i){return t===0?this.ownedExpression_sempred(e,i):!0}ownedExpression_sempred(e,t){switch(t){case 0:return this.precpred(this.context,27);case 1:return this.precpred(this.context,26);case 2:return this.precpred(this.context,25);case 3:return this.precpred(this.context,24);case 4:return this.precpred(this.context,23);case 5:return this.precpred(this.context,22);case 6:return this.precpred(this.context,21);case 7:return this.precpred(this.context,20);case 8:return this.precpred(this.context,19);case 9:return this.precpred(this.context,18);case 10:return this.precpred(this.context,17);case 11:return this.precpred(this.context,16);case 12:return this.precpred(this.context,15);case 13:return this.precpred(this.context,12);case 14:return this.precpred(this.context,11);case 15:return this.precpred(this.context,10);case 16:return this.precpred(this.context,9);case 17:return this.precpred(this.context,8);case 18:return this.precpred(this.context,7);case 19:return this.precpred(this.context,6);case 20:return this.precpred(this.context,5);case 21:return this.precpred(this.context,4);case 22:return this.precpred(this.context,3)}return!0}static _serializedATN=[4,1,225,4720,2,0,7,0,2,1,7,1,2,2,7,2,2,3,7,3,2,4,7,4,2,5,7,5,2,6,7,6,2,7,7,7,2,8,7,8,2,9,7,9,2,10,7,10,2,11,7,11,2,12,7,12,2,13,7,13,2,14,7,14,2,15,7,15,2,16,7,16,2,17,7,17,2,18,7,18,2,19,7,19,2,20,7,20,2,21,7,21,2,22,7,22,2,23,7,23,2,24,7,24,2,25,7,25,2,26,7,26,2,27,7,27,2,28,7,28,2,29,7,29,2,30,7,30,2,31,7,31,2,32,7,32,2,33,7,33,2,34,7,34,2,35,7,35,2,36,7,36,2,37,7,37,2,38,7,38,2,39,7,39,2,40,7,40,2,41,7,41,2,42,7,42,2,43,7,43,2,44,7,44,2,45,7,45,2,46,7,46,2,47,7,47,2,48,7,48,2,49,7,49,2,50,7,50,2,51,7,51,2,52,7,52,2,53,7,53,2,54,7,54,2,55,7,55,2,56,7,56,2,57,7,57,2,58,7,58,2,59,7,59,2,60,7,60,2,61,7,61,2,62,7,62,2,63,7,63,2,64,7,64,2,65,7,65,2,66,7,66,2,67,7,67,2,68,7,68,2,69,7,69,2,70,7,70,2,71,7,71,2,72,7,72,2,73,7,73,2,74,7,74,2,75,7,75,2,76,7,76,2,77,7,77,2,78,7,78,2,79,7,79,2,80,7,80,2,81,7,81,2,82,7,82,2,83,7,83,2,84,7,84,2,85,7,85,2,86,7,86,2,87,7,87,2,88,7,88,2,89,7,89,2,90,7,90,2,91,7,91,2,92,7,92,2,93,7,93,2,94,7,94,2,95,7,95,2,96,7,96,2,97,7,97,2,98,7,98,2,99,7,99,2,100,7,100,2,101,7,101,2,102,7,102,2,103,7,103,2,104,7,104,2,105,7,105,2,106,7,106,2,107,7,107,2,108,7,108,2,109,7,109,2,110,7,110,2,111,7,111,2,112,7,112,2,113,7,113,2,114,7,114,2,115,7,115,2,116,7,116,2,117,7,117,2,118,7,118,2,119,7,119,2,120,7,120,2,121,7,121,2,122,7,122,2,123,7,123,2,124,7,124,2,125,7,125,2,126,7,126,2,127,7,127,2,128,7,128,2,129,7,129,2,130,7,130,2,131,7,131,2,132,7,132,2,133,7,133,2,134,7,134,2,135,7,135,2,136,7,136,2,137,7,137,2,138,7,138,2,139,7,139,2,140,7,140,2,141,7,141,2,142,7,142,2,143,7,143,2,144,7,144,2,145,7,145,2,146,7,146,2,147,7,147,2,148,7,148,2,149,7,149,2,150,7,150,2,151,7,151,2,152,7,152,2,153,7,153,2,154,7,154,2,155,7,155,2,156,7,156,2,157,7,157,2,158,7,158,2,159,7,159,2,160,7,160,2,161,7,161,2,162,7,162,2,163,7,163,2,164,7,164,2,165,7,165,2,166,7,166,2,167,7,167,2,168,7,168,2,169,7,169,2,170,7,170,2,171,7,171,2,172,7,172,2,173,7,173,2,174,7,174,2,175,7,175,2,176,7,176,2,177,7,177,2,178,7,178,2,179,7,179,2,180,7,180,2,181,7,181,2,182,7,182,2,183,7,183,2,184,7,184,2,185,7,185,2,186,7,186,2,187,7,187,2,188,7,188,2,189,7,189,2,190,7,190,2,191,7,191,2,192,7,192,2,193,7,193,2,194,7,194,2,195,7,195,2,196,7,196,2,197,7,197,2,198,7,198,2,199,7,199,2,200,7,200,2,201,7,201,2,202,7,202,2,203,7,203,2,204,7,204,2,205,7,205,2,206,7,206,2,207,7,207,2,208,7,208,2,209,7,209,2,210,7,210,2,211,7,211,2,212,7,212,2,213,7,213,2,214,7,214,2,215,7,215,2,216,7,216,2,217,7,217,2,218,7,218,2,219,7,219,2,220,7,220,2,221,7,221,2,222,7,222,2,223,7,223,2,224,7,224,2,225,7,225,2,226,7,226,2,227,7,227,2,228,7,228,2,229,7,229,2,230,7,230,2,231,7,231,2,232,7,232,2,233,7,233,2,234,7,234,2,235,7,235,2,236,7,236,2,237,7,237,2,238,7,238,2,239,7,239,2,240,7,240,2,241,7,241,2,242,7,242,2,243,7,243,2,244,7,244,2,245,7,245,2,246,7,246,2,247,7,247,2,248,7,248,2,249,7,249,2,250,7,250,2,251,7,251,2,252,7,252,2,253,7,253,2,254,7,254,2,255,7,255,2,256,7,256,2,257,7,257,2,258,7,258,2,259,7,259,2,260,7,260,2,261,7,261,2,262,7,262,2,263,7,263,2,264,7,264,2,265,7,265,2,266,7,266,2,267,7,267,2,268,7,268,2,269,7,269,2,270,7,270,2,271,7,271,2,272,7,272,2,273,7,273,2,274,7,274,2,275,7,275,2,276,7,276,2,277,7,277,2,278,7,278,2,279,7,279,2,280,7,280,2,281,7,281,2,282,7,282,2,283,7,283,2,284,7,284,2,285,7,285,2,286,7,286,2,287,7,287,2,288,7,288,2,289,7,289,2,290,7,290,2,291,7,291,2,292,7,292,2,293,7,293,2,294,7,294,2,295,7,295,2,296,7,296,2,297,7,297,2,298,7,298,2,299,7,299,2,300,7,300,2,301,7,301,2,302,7,302,2,303,7,303,2,304,7,304,2,305,7,305,2,306,7,306,2,307,7,307,2,308,7,308,2,309,7,309,2,310,7,310,2,311,7,311,2,312,7,312,2,313,7,313,2,314,7,314,2,315,7,315,2,316,7,316,2,317,7,317,2,318,7,318,2,319,7,319,2,320,7,320,2,321,7,321,2,322,7,322,2,323,7,323,2,324,7,324,2,325,7,325,2,326,7,326,2,327,7,327,2,328,7,328,2,329,7,329,2,330,7,330,2,331,7,331,2,332,7,332,2,333,7,333,2,334,7,334,2,335,7,335,2,336,7,336,2,337,7,337,2,338,7,338,2,339,7,339,2,340,7,340,2,341,7,341,2,342,7,342,2,343,7,343,2,344,7,344,2,345,7,345,2,346,7,346,2,347,7,347,2,348,7,348,2,349,7,349,2,350,7,350,2,351,7,351,2,352,7,352,2,353,7,353,2,354,7,354,2,355,7,355,2,356,7,356,2,357,7,357,2,358,7,358,2,359,7,359,2,360,7,360,2,361,7,361,2,362,7,362,2,363,7,363,2,364,7,364,2,365,7,365,2,366,7,366,2,367,7,367,2,368,7,368,2,369,7,369,2,370,7,370,2,371,7,371,2,372,7,372,2,373,7,373,2,374,7,374,2,375,7,375,2,376,7,376,2,377,7,377,2,378,7,378,2,379,7,379,2,380,7,380,2,381,7,381,2,382,7,382,2,383,7,383,2,384,7,384,2,385,7,385,2,386,7,386,2,387,7,387,2,388,7,388,2,389,7,389,2,390,7,390,2,391,7,391,2,392,7,392,2,393,7,393,2,394,7,394,2,395,7,395,2,396,7,396,2,397,7,397,2,398,7,398,2,399,7,399,2,400,7,400,2,401,7,401,2,402,7,402,2,403,7,403,2,404,7,404,2,405,7,405,2,406,7,406,2,407,7,407,2,408,7,408,2,409,7,409,2,410,7,410,2,411,7,411,2,412,7,412,2,413,7,413,2,414,7,414,2,415,7,415,2,416,7,416,2,417,7,417,2,418,7,418,2,419,7,419,2,420,7,420,2,421,7,421,2,422,7,422,2,423,7,423,2,424,7,424,2,425,7,425,2,426,7,426,2,427,7,427,2,428,7,428,2,429,7,429,2,430,7,430,2,431,7,431,2,432,7,432,2,433,7,433,2,434,7,434,2,435,7,435,2,436,7,436,2,437,7,437,2,438,7,438,2,439,7,439,2,440,7,440,2,441,7,441,2,442,7,442,2,443,7,443,2,444,7,444,2,445,7,445,2,446,7,446,2,447,7,447,2,448,7,448,2,449,7,449,2,450,7,450,2,451,7,451,2,452,7,452,2,453,7,453,2,454,7,454,2,455,7,455,2,456,7,456,2,457,7,457,2,458,7,458,2,459,7,459,2,460,7,460,2,461,7,461,2,462,7,462,2,463,7,463,2,464,7,464,2,465,7,465,2,466,7,466,2,467,7,467,2,468,7,468,2,469,7,469,2,470,7,470,2,471,7,471,2,472,7,472,2,473,7,473,2,474,7,474,2,475,7,475,2,476,7,476,2,477,7,477,2,478,7,478,2,479,7,479,2,480,7,480,2,481,7,481,2,482,7,482,2,483,7,483,2,484,7,484,2,485,7,485,2,486,7,486,2,487,7,487,2,488,7,488,2,489,7,489,2,490,7,490,2,491,7,491,2,492,7,492,2,493,7,493,2,494,7,494,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1006,8,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1062,8,0,1,0,1,0,1,0,1,0,1,0,3,0,1069,8,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,1,0,3,0,1085,8,0,5,0,1087,8,0,10,0,12,0,1090,9,0,1,1,1,1,1,2,1,2,1,2,5,2,1097,8,2,10,2,12,2,1100,9,2,1,3,1,3,1,3,1,3,1,3,1,3,3,3,1108,8,3,1,3,1,3,1,3,1,3,3,3,1114,8,3,1,3,3,3,1117,8,3,1,4,1,4,1,4,3,4,1122,8,4,1,5,1,5,1,6,1,6,1,6,1,6,1,7,1,7,1,7,1,8,1,8,1,8,1,8,1,9,1,9,1,9,1,9,1,10,1,10,1,10,3,10,1144,8,10,1,10,1,10,1,11,1,11,1,11,5,11,1151,8,11,10,11,12,11,1154,9,11,1,12,1,12,1,12,5,12,1159,8,12,10,12,12,12,1162,9,12,1,13,1,13,1,13,1,13,1,14,1,14,1,14,1,14,1,14,3,14,1173,8,14,1,15,1,15,1,16,1,16,1,17,1,17,1,18,1,18,1,19,1,19,1,20,1,20,1,21,1,21,1,22,1,22,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,1,23,3,23,1201,8,23,1,24,1,24,1,24,5,24,1206,8,24,10,24,12,24,1209,9,24,1,24,1,24,1,24,5,24,1214,8,24,10,24,12,24,1217,9,24,1,24,3,24,1220,8,24,1,25,1,25,3,25,1224,8,25,1,26,1,26,3,26,1228,8,26,1,27,5,27,1231,8,27,10,27,12,27,1234,9,27,1,27,1,27,3,27,1238,8,27,1,27,3,27,1241,8,27,1,27,1,27,1,27,5,27,1246,8,27,10,27,12,27,1249,9,27,1,27,1,27,1,27,1,27,5,27,1255,8,27,10,27,12,27,1258,9,27,1,27,1,27,1,27,5,27,1263,8,27,10,27,12,27,1266,9,27,1,27,1,27,1,27,1,27,3,27,1272,8,27,1,28,1,28,1,29,1,29,1,30,1,30,1,30,1,30,3,30,1282,8,30,1,31,1,31,3,31,1286,8,31,1,31,1,31,1,31,1,31,5,31,1292,8,31,10,31,12,31,1295,9,31,3,31,1297,8,31,3,31,1299,8,31,1,31,1,31,3,31,1303,8,31,1,31,1,31,1,32,1,32,3,32,1309,8,32,1,32,1,32,3,32,1313,8,32,1,32,1,32,1,33,1,33,3,33,1319,8,33,3,33,1321,8,33,1,33,1,33,1,33,1,33,1,34,5,34,1328,8,34,10,34,12,34,1331,9,34,1,34,1,34,1,35,5,35,1336,8,35,10,35,12,35,1339,9,35,1,35,1,35,1,35,1,36,1,36,3,36,1346,8,36,1,37,1,37,1,37,5,37,1351,8,37,10,37,12,37,1354,9,37,1,37,3,37,1357,8,37,1,38,1,38,1,38,3,38,1362,8,38,1,39,3,39,1365,8,39,1,40,1,40,1,41,1,41,3,41,1371,8,41,1,42,1,42,1,42,1,43,1,43,1,43,1,44,1,44,1,44,1,44,1,44,1,44,3,44,1385,8,44,1,44,3,44,1388,8,44,1,44,1,44,1,44,1,44,1,45,1,45,3,45,1396,8,45,1,45,1,45,1,45,5,45,1401,8,45,10,45,12,45,1404,9,45,1,45,1,45,1,46,3,46,1409,8,46,1,46,1,46,3,46,1413,8,46,1,46,1,46,1,46,1,47,1,47,3,47,1420,8,47,1,48,1,48,1,48,3,48,1425,8,48,1,49,1,49,1,49,1,49,1,49,3,49,1432,8,49,1,49,3,49,1435,8,49,1,50,1,50,4,50,1439,8,50,11,50,12,50,1440,1,50,1,50,4,50,1445,8,50,11,50,12,50,1446,3,50,1449,8,50,1,51,1,51,1,51,1,51,1,52,1,52,3,52,1457,8,52,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,1,53,3,53,1485,8,53,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,1,54,3,54,1497,8,54,1,55,1,55,1,55,1,55,1,55,1,56,3,56,1505,8,56,1,56,5,56,1508,8,56,10,56,12,56,1511,9,56,1,57,3,57,1514,8,57,1,57,3,57,1517,8,57,1,57,3,57,1520,8,57,1,57,1,57,4,57,1524,8,57,11,57,12,57,1525,1,57,5,57,1529,8,57,10,57,12,57,1532,9,57,1,58,1,58,1,58,1,58,5,58,1538,8,58,10,58,12,58,1541,9,58,1,59,1,59,1,59,1,60,1,60,1,60,1,60,3,60,1550,8,60,1,61,1,61,1,61,1,61,1,61,5,61,1557,8,61,10,61,12,61,1560,9,61,1,62,1,62,1,62,1,62,5,62,1566,8,62,10,62,12,62,1569,9,62,1,63,1,63,1,63,1,63,5,63,1575,8,63,10,63,12,63,1578,9,63,1,64,1,64,1,64,1,64,5,64,1584,8,64,10,64,12,64,1587,9,64,1,65,1,65,1,65,5,65,1592,8,65,10,65,12,65,1595,9,65,1,65,3,65,1598,8,65,1,66,1,66,1,66,1,66,3,66,1604,8,66,1,67,1,67,3,67,1608,8,67,3,67,1610,8,67,1,67,1,67,1,67,1,67,1,67,1,67,1,68,1,68,1,69,1,69,1,69,5,69,1623,8,69,10,69,12,69,1626,9,69,1,70,1,70,1,70,5,70,1631,8,70,10,70,12,70,1634,9,70,1,71,1,71,3,71,1638,8,71,3,71,1640,8,71,1,71,1,71,1,71,1,71,5,71,1646,8,71,10,71,12,71,1649,9,71,1,71,1,71,1,71,1,71,5,71,1655,8,71,10,71,12,71,1658,9,71,1,71,1,71,1,72,1,72,1,72,5,72,1665,8,72,10,72,12,72,1668,9,72,1,73,1,73,3,73,1672,8,73,3,73,1674,8,73,1,73,1,73,1,73,1,73,5,73,1680,8,73,10,73,12,73,1683,9,73,1,73,1,73,1,73,1,73,5,73,1689,8,73,10,73,12,73,1692,9,73,1,73,1,73,1,74,1,74,1,74,5,74,1699,8,74,10,74,12,74,1702,9,74,1,75,1,75,1,75,5,75,1707,8,75,10,75,12,75,1710,9,75,1,76,1,76,1,76,5,76,1715,8,76,10,76,12,76,1718,9,76,1,77,1,77,1,77,5,77,1723,8,77,10,77,12,77,1726,9,77,1,78,1,78,3,78,1730,8,78,1,79,1,79,1,79,1,79,1,80,1,80,1,80,1,81,1,81,1,81,1,81,1,81,1,82,3,82,1745,8,82,1,82,3,82,1748,8,82,1,82,3,82,1751,8,82,1,82,1,82,3,82,1755,8,82,1,82,5,82,1758,8,82,10,82,12,82,1761,9,82,1,83,1,83,1,83,1,83,5,83,1767,8,83,10,83,12,83,1770,9,83,1,84,1,84,3,84,1774,8,84,3,84,1776,8,84,1,84,1,84,1,84,1,84,1,84,1,84,1,85,1,85,1,86,1,86,1,86,3,86,1789,8,86,1,86,3,86,1792,8,86,1,86,1,86,3,86,1796,8,86,1,86,1,86,3,86,1800,8,86,1,86,3,86,1803,8,86,1,86,1,86,1,87,3,87,1808,8,87,1,87,1,87,1,88,3,88,1813,8,88,1,88,3,88,1816,8,88,1,88,3,88,1819,8,88,1,88,3,88,1822,8,88,1,88,3,88,1825,8,88,1,89,1,89,1,89,1,89,3,89,1831,8,89,1,89,5,89,1834,8,89,10,89,12,89,1837,9,89,1,90,1,90,1,91,1,91,1,91,1,91,1,91,3,91,1846,8,91,3,91,1848,8,91,1,92,1,92,1,93,3,93,1853,8,93,1,93,1,93,1,93,3,93,1858,8,93,1,93,1,93,3,93,1862,8,93,1,93,5,93,1865,8,93,10,93,12,93,1868,9,93,1,94,1,94,1,94,1,94,3,94,1874,8,94,1,94,3,94,1877,8,94,1,95,1,95,1,95,1,95,3,95,1883,8,95,1,96,1,96,1,96,1,96,5,96,1889,8,96,10,96,12,96,1892,9,96,1,97,1,97,1,97,1,97,1,98,1,98,1,98,1,98,1,98,5,98,1903,8,98,10,98,12,98,1906,9,98,1,99,4,99,1909,8,99,11,99,12,99,1910,1,99,3,99,1914,8,99,1,99,5,99,1917,8,99,10,99,12,99,1920,9,99,1,99,1,99,5,99,1924,8,99,10,99,12,99,1927,9,99,3,99,1929,8,99,1,100,1,100,1,100,3,100,1934,8,100,1,100,1,100,3,100,1938,8,100,3,100,1940,8,100,1,100,1,100,3,100,1944,8,100,1,100,1,100,3,100,1948,8,100,3,100,1950,8,100,3,100,1952,8,100,1,101,1,101,1,101,1,101,1,101,3,101,1959,8,101,1,102,1,102,1,102,5,102,1964,8,102,10,102,12,102,1967,9,102,1,103,1,103,1,103,1,103,1,103,3,103,1974,8,103,1,103,1,103,1,104,1,104,1,104,5,104,1981,8,104,10,104,12,104,1984,9,104,1,105,1,105,1,105,1,106,1,106,1,106,1,107,1,107,1,107,1,108,1,108,1,108,5,108,1998,8,108,10,108,12,108,2001,9,108,1,109,1,109,1,109,1,110,1,110,3,110,2008,8,110,3,110,2010,8,110,1,110,1,110,1,110,1,110,1,110,3,110,2017,8,110,1,110,1,110,1,110,1,110,1,110,3,110,2024,8,110,1,111,1,111,1,111,5,111,2029,8,111,10,111,12,111,2032,9,111,1,112,1,112,3,112,2036,8,112,3,112,2038,8,112,1,112,1,112,1,112,1,112,1,112,1,112,1,113,1,113,1,113,5,113,2049,8,113,10,113,12,113,2052,9,113,1,114,1,114,1,114,5,114,2057,8,114,10,114,12,114,2060,9,114,1,115,1,115,1,115,5,115,2065,8,115,10,115,12,115,2068,9,115,1,116,1,116,3,116,2072,8,116,3,116,2074,8,116,1,116,1,116,1,116,1,116,1,116,1,116,1,117,1,117,1,117,5,117,2085,8,117,10,117,12,117,2088,9,117,1,118,1,118,1,118,1,118,4,118,2094,8,118,11,118,12,118,2095,3,118,2098,8,118,1,119,1,119,1,119,4,119,2103,8,119,11,119,12,119,2104,1,120,1,120,1,121,1,121,3,121,2111,8,121,3,121,2113,8,121,1,121,1,121,1,121,1,121,5,121,2119,8,121,10,121,12,121,2122,9,121,1,121,1,121,1,121,1,121,5,121,2128,8,121,10,121,12,121,2131,9,121,1,121,1,121,1,122,1,122,1,122,5,122,2138,8,122,10,122,12,122,2141,9,122,1,123,1,123,3,123,2145,8,123,1,123,3,123,2148,8,123,1,123,1,123,1,123,1,123,1,123,1,124,1,124,1,125,1,125,1,125,1,125,1,125,1,126,1,126,1,126,1,126,1,126,1,127,1,127,1,127,1,127,1,127,1,128,1,128,1,128,1,128,1,128,1,129,1,129,1,129,1,129,1,129,1,129,1,130,1,130,1,130,3,130,2186,8,130,1,130,3,130,2189,8,130,1,130,3,130,2192,8,130,1,130,1,130,1,131,1,131,3,131,2198,8,131,1,132,3,132,2201,8,132,1,132,1,132,1,132,3,132,2206,8,132,3,132,2208,8,132,1,132,1,132,1,132,1,132,1,133,3,133,2215,8,133,1,133,1,133,1,133,1,133,1,133,1,133,5,133,2223,8,133,10,133,12,133,2226,9,133,1,133,1,133,1,134,1,134,1,135,3,135,2233,8,135,1,135,1,135,1,135,3,135,2238,8,135,1,135,1,135,1,136,1,136,1,137,1,137,1,138,1,138,1,138,1,138,1,138,1,139,1,139,1,139,1,139,1,139,1,139,3,139,2257,8,139,1,139,3,139,2260,8,139,1,139,3,139,2263,8,139,1,139,1,139,1,139,1,139,3,139,2269,8,139,3,139,2271,8,139,1,140,1,140,1,140,1,140,1,140,1,141,1,141,1,141,1,141,1,141,1,141,3,141,2284,8,141,1,141,3,141,2287,8,141,1,141,3,141,2290,8,141,1,141,1,141,1,141,1,141,3,141,2296,8,141,3,141,2298,8,141,1,142,1,142,1,142,1,142,1,142,1,143,1,143,1,143,1,143,3,143,2309,8,143,1,143,1,143,1,144,1,144,1,144,1,144,1,144,1,145,1,145,1,145,1,145,1,145,3,145,2323,8,145,1,146,1,146,5,146,2327,8,146,10,146,12,146,2330,9,146,1,146,3,146,2333,8,146,1,147,1,147,1,147,1,147,1,148,1,148,1,148,1,149,1,149,1,149,1,149,3,149,2346,8,149,1,149,1,149,1,150,1,150,1,150,1,150,1,150,1,151,1,151,1,151,1,151,3,151,2359,8,151,1,151,1,151,1,152,1,152,1,152,3,152,2366,8,152,1,152,1,152,3,152,2370,8,152,1,152,1,152,1,153,1,153,1,154,1,154,1,155,1,155,1,156,1,156,1,157,1,157,1,158,1,158,1,159,1,159,1,159,1,159,1,160,1,160,1,161,1,161,1,162,1,162,1,163,1,163,1,164,1,164,1,165,1,165,1,166,1,166,1,167,1,167,1,168,1,168,1,169,1,169,1,170,1,170,1,170,5,170,2413,8,170,10,170,12,170,2416,9,170,1,171,1,171,3,171,2420,8,171,1,172,1,172,1,173,1,173,1,174,1,174,1,175,1,175,1,176,1,176,1,177,1,177,1,177,5,177,2435,8,177,10,177,12,177,2438,9,177,1,178,1,178,1,179,1,179,1,180,1,180,1,181,1,181,1,182,1,182,1,182,1,182,1,183,1,183,1,184,3,184,2455,8,184,1,184,1,184,1,184,3,184,2460,8,184,1,185,1,185,1,185,1,185,1,185,1,186,1,186,1,186,1,186,1,186,1,187,1,187,1,187,1,187,1,187,1,187,1,188,1,188,3,188,2480,8,188,1,188,1,188,3,188,2484,8,188,1,188,1,188,1,188,1,188,1,188,3,188,2491,8,188,1,188,3,188,2494,8,188,1,188,1,188,1,188,1,188,1,188,3,188,2501,8,188,1,188,3,188,2504,8,188,1,188,1,188,3,188,2508,8,188,1,188,1,188,1,188,1,188,1,188,3,188,2515,8,188,3,188,2517,8,188,1,189,1,189,1,190,3,190,2522,8,190,1,190,1,190,3,190,2526,8,190,1,190,1,190,3,190,2530,8,190,1,190,1,190,3,190,2534,8,190,1,190,1,190,3,190,2538,8,190,3,190,2540,8,190,1,191,4,191,2543,8,191,11,191,12,191,2544,1,191,3,191,2548,8,191,1,191,5,191,2551,8,191,10,191,12,191,2554,9,191,1,191,1,191,4,191,2558,8,191,11,191,12,191,2559,3,191,2562,8,191,1,192,1,192,1,193,1,193,1,193,5,193,2569,8,193,10,193,12,193,2572,9,193,1,194,1,194,1,195,1,195,1,196,1,196,1,197,1,197,1,198,1,198,1,198,1,198,3,198,2586,8,198,3,198,2588,8,198,1,198,1,198,1,199,1,199,3,199,2594,8,199,1,200,1,200,3,200,2598,8,200,1,200,1,200,1,200,1,201,1,201,3,201,2605,8,201,1,201,1,201,1,201,1,202,1,202,1,203,1,203,1,204,1,204,1,204,1,204,3,204,2618,8,204,1,204,1,204,1,204,1,205,1,205,3,205,2625,8,205,1,206,1,206,1,206,1,206,1,206,1,207,1,207,1,207,1,207,3,207,2636,8,207,1,208,1,208,1,208,1,208,3,208,2642,8,208,1,209,1,209,1,210,5,210,2647,8,210,10,210,12,210,2650,9,210,1,210,1,210,1,210,1,210,1,210,1,210,5,210,2658,8,210,10,210,12,210,2661,9,210,3,210,2663,8,210,1,210,1,210,1,211,3,211,2668,8,211,1,211,1,211,1,211,3,211,2673,8,211,3,211,2675,8,211,1,211,1,211,1,212,1,212,1,212,5,212,2682,8,212,10,212,12,212,2685,9,212,1,212,1,212,1,212,1,212,1,212,1,212,5,212,2693,8,212,10,212,12,212,2696,9,212,1,212,3,212,2699,8,212,1,213,1,213,1,213,1,213,3,213,2705,8,213,1,214,1,214,1,215,3,215,2710,8,215,1,215,3,215,2713,8,215,1,215,1,215,3,215,2717,8,215,1,215,3,215,2720,8,215,1,215,1,215,1,216,5,216,2725,8,216,10,216,12,216,2728,9,216,1,216,1,216,1,216,1,217,3,217,2734,8,217,1,217,1,217,5,217,2738,8,217,10,217,12,217,2741,9,217,1,217,1,217,1,217,1,218,1,218,3,218,2748,8,218,1,219,1,219,1,219,5,219,2753,8,219,10,219,12,219,2756,9,219,1,219,3,219,2759,8,219,1,220,1,220,1,220,1,220,1,220,1,221,3,221,2767,8,221,1,221,3,221,2770,8,221,1,221,1,221,1,221,5,221,2775,8,221,10,221,12,221,2778,9,221,1,221,1,221,1,221,1,221,5,221,2784,8,221,10,221,12,221,2787,9,221,1,222,1,222,1,223,1,223,1,223,1,223,3,223,2795,8,223,1,224,1,224,1,224,3,224,2800,8,224,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,1,225,3,225,2832,8,225,1,226,1,226,3,226,2836,8,226,1,227,1,227,1,228,1,228,1,229,3,229,2843,8,229,1,229,5,229,2846,8,229,10,229,12,229,2849,9,229,1,230,1,230,1,230,1,231,3,231,2855,8,231,1,231,3,231,2858,8,231,1,232,1,232,1,232,5,232,2863,8,232,10,232,12,232,2866,9,232,1,232,3,232,2869,8,232,1,233,1,233,1,233,1,233,1,233,3,233,2876,8,233,1,233,1,233,1,233,3,233,2881,8,233,1,234,1,234,1,234,1,234,1,234,3,234,2888,8,234,1,234,3,234,2891,8,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,1,234,3,234,2901,8,234,1,235,1,235,1,235,1,236,1,236,1,236,1,236,1,237,1,237,1,237,1,238,1,238,1,238,1,239,1,239,1,239,1,240,1,240,1,240,1,241,3,241,2923,8,241,1,241,3,241,2926,8,241,1,241,3,241,2929,8,241,1,241,3,241,2932,8,241,1,242,1,242,3,242,2936,8,242,1,243,1,243,1,243,1,244,1,244,1,245,1,245,3,245,2945,8,245,1,246,1,246,5,246,2949,8,246,10,246,12,246,2952,9,246,1,247,3,247,2955,8,247,1,247,1,247,1,248,1,248,3,248,2961,8,248,1,248,3,248,2964,8,248,1,249,3,249,2967,8,249,1,249,1,249,1,250,1,250,1,251,1,251,1,251,1,252,1,252,3,252,2978,8,252,1,252,1,252,1,252,1,253,1,253,1,253,1,253,1,254,1,254,5,254,2989,8,254,10,254,12,254,2992,9,254,1,254,1,254,1,255,1,255,1,255,1,255,1,255,1,255,1,255,1,255,3,255,3004,8,255,1,256,1,256,3,256,3008,8,256,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,1,257,3,257,3025,8,257,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,1,258,3,258,3043,8,258,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,1,259,3,259,3066,8,259,1,260,1,260,1,260,1,260,5,260,3072,8,260,10,260,12,260,3075,9,260,1,261,1,261,1,261,1,261,1,261,1,262,1,262,1,262,1,262,1,263,5,263,3087,8,263,10,263,12,263,3090,9,263,1,263,1,263,1,263,1,263,1,263,1,264,1,264,1,264,1,264,5,264,3101,8,264,10,264,12,264,3104,9,264,1,264,3,264,3107,8,264,1,265,1,265,1,265,1,266,3,266,3113,8,266,1,266,1,266,1,267,1,267,1,267,1,267,1,268,3,268,3122,8,268,1,268,1,268,3,268,3126,8,268,1,268,5,268,3129,8,268,10,268,12,268,3132,9,268,1,269,1,269,1,269,1,269,1,269,1,270,3,270,3140,8,270,1,270,1,270,5,270,3144,8,270,10,270,12,270,3147,9,270,1,270,1,270,1,270,1,270,1,271,1,271,1,272,1,272,3,272,3157,8,272,1,272,3,272,3160,8,272,1,272,5,272,3163,8,272,10,272,12,272,3166,9,272,1,273,1,273,1,273,1,273,1,274,1,274,1,274,5,274,3175,8,274,10,274,12,274,3178,9,274,1,274,1,274,1,275,1,275,3,275,3184,8,275,1,275,1,275,5,275,3188,8,275,10,275,12,275,3191,9,275,1,275,1,275,1,276,1,276,1,277,1,277,1,277,1,277,3,277,3201,8,277,1,277,1,277,3,277,3205,8,277,3,277,3207,8,277,1,277,1,277,1,278,1,278,1,278,1,279,1,279,1,280,1,280,1,281,3,281,3219,8,281,1,282,1,282,1,282,1,282,1,282,1,283,1,283,1,283,1,283,1,284,1,284,1,284,1,284,1,284,1,285,1,285,1,285,1,285,1,286,1,286,1,286,1,286,1,286,1,286,1,287,1,287,1,288,1,288,1,289,1,289,1,289,1,289,1,290,1,290,1,290,1,291,1,291,1,291,1,291,1,291,1,292,1,292,1,292,3,292,3264,8,292,1,292,3,292,3267,8,292,1,292,1,292,3,292,3271,8,292,1,292,1,292,3,292,3275,8,292,1,292,1,292,1,293,1,293,3,293,3281,8,293,1,294,1,294,1,294,1,294,1,295,1,295,1,295,1,295,1,295,1,295,5,295,3293,8,295,10,295,12,295,3296,9,295,1,295,1,295,1,296,1,296,1,296,3,296,3303,8,296,3,296,3305,8,296,1,296,1,296,1,296,1,296,1,296,1,296,1,297,1,297,1,297,3,297,3316,8,297,3,297,3318,8,297,1,297,1,297,1,297,1,297,1,297,1,297,1,298,1,298,1,298,1,298,1,298,1,298,1,299,1,299,1,299,5,299,3335,8,299,10,299,12,299,3338,9,299,1,299,3,299,3341,8,299,1,300,1,300,1,300,1,300,3,300,3347,8,300,1,300,1,300,1,300,3,300,3352,8,300,1,301,1,301,1,301,1,302,1,302,1,302,1,302,1,302,3,302,3362,8,302,1,303,1,303,1,303,1,304,1,304,1,304,3,304,3370,8,304,1,305,1,305,1,305,1,306,1,306,1,306,1,306,1,306,1,307,3,307,3381,8,307,1,307,3,307,3384,8,307,1,307,1,307,3,307,3388,8,307,1,307,3,307,3391,8,307,1,308,1,308,3,308,3395,8,308,1,309,1,309,1,309,1,309,1,310,1,310,1,310,1,310,1,310,1,310,5,310,3407,8,310,10,310,12,310,3410,9,310,1,310,1,310,1,311,1,311,1,312,3,312,3417,8,312,1,312,1,312,1,312,3,312,3422,8,312,1,312,1,312,1,313,1,313,1,313,1,313,1,313,1,314,1,314,1,314,1,314,1,315,1,315,3,315,3437,8,315,1,315,1,315,3,315,3441,8,315,1,315,1,315,3,315,3445,8,315,1,316,1,316,1,316,1,316,1,316,1,317,1,317,1,317,1,317,1,317,1,318,3,318,3458,8,318,1,318,3,318,3461,8,318,1,318,1,318,3,318,3465,8,318,1,318,1,318,1,318,1,318,1,318,3,318,3472,8,318,1,318,1,318,1,318,1,318,3,318,3478,8,318,1,319,1,319,1,320,1,320,1,321,1,321,1,321,1,321,1,321,1,322,1,322,1,322,1,322,1,322,1,322,1,323,1,323,1,324,1,324,1,325,1,325,3,325,3501,8,325,1,326,1,326,1,326,4,326,3506,8,326,11,326,12,326,3507,1,326,1,326,1,326,1,327,1,327,1,327,1,327,1,327,1,327,1,328,1,328,1,328,5,328,3522,8,328,10,328,12,328,3525,9,328,1,328,3,328,3528,8,328,1,329,1,329,1,329,5,329,3533,8,329,10,329,12,329,3536,9,329,1,329,3,329,3539,8,329,1,329,1,329,5,329,3543,8,329,10,329,12,329,3546,9,329,1,329,3,329,3549,8,329,1,330,1,330,1,330,1,330,1,330,1,330,3,330,3557,8,330,1,330,3,330,3560,8,330,1,331,1,331,3,331,3564,8,331,1,332,1,332,1,332,1,332,1,332,1,333,1,333,1,333,1,334,1,334,1,334,1,335,1,335,1,335,1,336,1,336,1,336,1,336,1,336,1,337,3,337,3586,8,337,1,337,3,337,3589,8,337,1,338,1,338,1,338,1,338,1,338,1,339,1,339,3,339,3598,8,339,1,339,1,339,3,339,3602,8,339,3,339,3604,8,339,1,339,3,339,3607,8,339,1,340,1,340,1,340,1,340,1,340,1,340,1,340,1,340,3,340,3617,8,340,1,341,1,341,3,341,3621,8,341,1,342,1,342,3,342,3625,8,342,1,343,1,343,1,343,1,343,3,343,3631,8,343,1,344,1,344,3,344,3635,8,344,1,344,3,344,3638,8,344,1,344,5,344,3641,8,344,10,344,12,344,3644,9,344,1,345,1,345,1,345,3,345,3649,8,345,1,345,1,345,1,346,1,346,1,346,3,346,3656,8,346,1,346,1,346,1,347,1,347,1,347,3,347,3663,8,347,1,347,1,347,1,348,1,348,1,348,3,348,3670,8,348,1,348,1,348,1,349,1,349,1,349,1,349,1,350,3,350,3679,8,350,1,350,1,350,1,350,1,351,1,351,1,351,3,351,3687,8,351,1,352,1,352,1,353,1,353,3,353,3693,8,353,1,353,3,353,3696,8,353,1,353,3,353,3699,8,353,1,354,1,354,1,355,1,355,1,356,1,356,1,356,1,356,3,356,3709,8,356,1,357,1,357,1,357,3,357,3714,8,357,1,357,1,357,1,357,3,357,3719,8,357,1,357,1,357,1,357,3,357,3724,8,357,1,357,1,357,1,358,3,358,3729,8,358,1,358,1,358,1,358,3,358,3734,8,358,1,359,1,359,1,359,1,359,3,359,3740,8,359,1,359,1,359,1,359,1,359,3,359,3746,8,359,1,360,1,360,1,361,1,361,1,362,1,362,1,363,1,363,1,364,1,364,1,364,1,364,1,365,3,365,3761,8,365,1,365,1,365,1,365,1,365,1,365,1,365,1,366,1,366,1,367,1,367,1,367,3,367,3774,8,367,1,368,1,368,1,369,1,369,3,369,3780,8,369,1,369,1,369,3,369,3784,8,369,1,369,1,369,1,370,1,370,1,370,1,370,1,370,1,370,1,370,3,370,3795,8,370,3,370,3797,8,370,1,371,1,371,1,372,1,372,1,373,1,373,3,373,3805,8,373,3,373,3807,8,373,1,373,1,373,5,373,3811,8,373,10,373,12,373,3814,9,373,1,373,1,373,1,374,1,374,1,375,1,375,1,375,1,375,1,375,3,375,3825,8,375,1,375,1,375,1,375,1,375,1,375,3,375,3832,8,375,1,376,1,376,1,376,1,376,1,376,1,376,1,376,1,377,3,377,3842,8,377,1,378,3,378,3845,8,378,1,379,1,379,1,379,3,379,3850,8,379,1,379,1,379,1,380,1,380,1,380,1,380,1,381,1,381,1,381,1,381,1,382,1,382,1,382,1,383,1,383,3,383,3867,8,383,3,383,3869,8,383,1,383,1,383,1,383,1,383,1,383,1,383,1,383,1,384,1,384,1,384,1,384,1,384,1,384,1,385,1,385,3,385,3886,8,385,1,385,1,385,5,385,3890,8,385,10,385,12,385,3893,9,385,1,385,3,385,3896,8,385,1,386,1,386,3,386,3900,8,386,1,386,1,386,5,386,3904,8,386,10,386,12,386,3907,9,386,1,386,1,386,1,386,5,386,3912,8,386,10,386,12,386,3915,9,386,1,386,1,386,3,386,3919,8,386,1,387,1,387,1,387,1,387,1,388,1,388,1,388,1,388,1,389,1,389,1,389,1,389,1,390,1,390,1,390,1,390,3,390,3937,8,390,1,390,1,390,1,391,1,391,1,391,1,391,1,391,1,391,1,391,3,391,3948,8,391,1,392,1,392,1,392,1,393,1,393,1,393,1,394,1,394,1,394,1,395,1,395,1,395,1,396,1,396,1,396,1,397,1,397,1,397,1,398,1,398,1,398,1,398,1,398,1,399,1,399,3,399,3975,8,399,1,399,1,399,5,399,3979,8,399,10,399,12,399,3982,9,399,1,399,3,399,3985,8,399,1,400,1,400,1,400,1,400,3,400,3991,8,400,1,400,1,400,3,400,3995,8,400,3,400,3997,8,400,1,400,3,400,4e3,8,400,1,400,1,400,1,401,1,401,3,401,4006,8,401,1,401,3,401,4009,8,401,1,401,1,401,1,401,1,401,1,401,3,401,4016,8,401,1,401,3,401,4019,8,401,1,401,3,401,4022,8,401,1,401,1,401,1,401,1,401,1,402,1,402,1,402,1,402,1,402,3,402,4033,8,402,1,402,3,402,4036,8,402,1,402,3,402,4039,8,402,1,402,1,402,1,402,3,402,4044,8,402,1,402,3,402,4047,8,402,1,402,1,402,3,402,4051,8,402,3,402,4053,8,402,1,402,1,402,1,402,1,402,1,403,1,403,1,403,1,404,1,404,1,405,1,405,1,405,1,406,1,406,1,406,1,407,1,407,1,407,1,407,1,407,3,407,4075,8,407,1,408,1,408,1,408,5,408,4080,8,408,10,408,12,408,4083,9,408,1,408,3,408,4086,8,408,1,409,1,409,1,409,5,409,4091,8,409,10,409,12,409,4094,9,409,1,409,3,409,4097,8,409,1,410,1,410,1,410,5,410,4102,8,410,10,410,12,410,4105,9,410,1,410,3,410,4108,8,410,1,411,1,411,1,411,5,411,4113,8,411,10,411,12,411,4116,9,411,1,411,3,411,4119,8,411,1,412,1,412,1,413,1,413,1,413,1,414,1,414,1,415,1,415,1,415,1,415,1,415,1,415,1,416,1,416,1,416,1,416,1,416,1,417,1,417,1,417,1,417,1,417,3,417,4144,8,417,1,418,5,418,4147,8,418,10,418,12,418,4150,9,418,1,418,3,418,4153,8,418,1,419,1,419,3,419,4157,8,419,1,420,1,420,1,420,1,420,1,421,1,421,1,421,1,421,1,421,1,421,1,422,1,422,1,422,1,422,1,422,1,423,1,423,1,423,3,423,4177,8,423,1,423,1,423,3,423,4181,8,423,1,423,1,423,3,423,4185,8,423,1,423,1,423,1,424,3,424,4190,8,424,1,424,3,424,4193,8,424,1,425,1,425,1,425,1,425,1,425,1,425,1,426,1,426,1,426,5,426,4204,8,426,10,426,12,426,4207,9,426,1,426,3,426,4210,8,426,1,427,1,427,1,427,1,427,1,427,1,427,1,427,3,427,4219,8,427,1,428,1,428,1,428,1,429,1,429,5,429,4226,8,429,10,429,12,429,4229,9,429,1,429,1,429,1,430,1,430,1,430,1,430,1,431,1,431,1,432,1,432,3,432,4241,8,432,1,432,1,432,1,432,5,432,4246,8,432,10,432,12,432,4249,9,432,1,432,1,432,4,432,4253,8,432,11,432,12,432,4254,3,432,4257,8,432,1,432,1,432,1,432,3,432,4262,8,432,1,433,1,433,1,433,1,433,1,434,1,434,3,434,4270,8,434,1,434,1,434,1,434,5,434,4275,8,434,10,434,12,434,4278,9,434,1,434,1,434,4,434,4282,8,434,11,434,12,434,4283,3,434,4286,8,434,1,434,1,434,1,434,3,434,4291,8,434,1,435,1,435,1,435,1,436,1,436,5,436,4298,8,436,10,436,12,436,4301,9,436,1,436,1,436,1,437,1,437,1,437,1,438,1,438,5,438,4310,8,438,10,438,12,438,4313,9,438,1,438,1,438,1,439,1,439,1,439,1,439,1,439,1,440,1,440,1,440,3,440,4325,8,440,3,440,4327,8,440,1,440,1,440,1,440,3,440,4332,8,440,1,440,1,440,3,440,4336,8,440,3,440,4338,8,440,1,440,3,440,4341,8,440,1,440,1,440,3,440,4345,8,440,1,440,1,440,1,441,1,441,1,442,1,442,1,443,1,443,1,444,1,444,1,445,1,445,1,445,1,445,1,445,1,445,1,446,1,446,1,446,1,446,1,446,1,447,1,447,1,447,1,447,1,447,1,447,1,448,1,448,1,448,1,448,1,448,1,449,1,449,1,449,5,449,4382,8,449,10,449,12,449,4385,9,449,1,449,3,449,4388,8,449,1,449,3,449,4391,8,449,1,450,1,450,1,450,1,450,1,450,3,450,4398,8,450,1,451,1,451,1,451,1,451,1,452,5,452,4405,8,452,10,452,12,452,4408,9,452,1,452,1,452,1,452,1,453,1,453,1,453,1,453,1,453,1,453,1,454,1,454,1,454,1,454,1,454,1,455,1,455,1,455,1,455,1,455,1,455,1,456,1,456,1,456,1,456,1,456,1,457,1,457,1,457,1,457,1,458,1,458,5,458,4441,8,458,10,458,12,458,4444,9,458,1,458,1,458,1,458,5,458,4449,8,458,10,458,12,458,4452,9,458,1,458,1,458,4,458,4456,8,458,11,458,12,458,4457,3,458,4460,8,458,1,458,1,458,1,458,3,458,4465,8,458,1,459,1,459,1,459,1,459,1,459,1,459,1,459,1,460,1,460,1,460,1,460,1,460,1,460,1,461,1,461,1,461,1,461,3,461,4484,8,461,1,461,1,461,1,461,3,461,4489,8,461,3,461,4491,8,461,1,461,3,461,4494,8,461,1,461,1,461,1,462,1,462,1,462,1,462,1,462,1,462,1,463,1,463,1,463,5,463,4507,8,463,10,463,12,463,4510,9,463,1,463,3,463,4513,8,463,1,464,1,464,1,464,3,464,4518,8,464,1,465,1,465,1,465,1,465,1,466,1,466,3,466,4526,8,466,1,466,1,466,1,466,5,466,4531,8,466,10,466,12,466,4534,9,466,1,466,1,466,4,466,4538,8,466,11,466,12,466,4539,3,466,4542,8,466,1,466,3,466,4545,8,466,1,467,1,467,1,467,3,467,4550,8,467,1,467,3,467,4553,8,467,1,467,1,467,1,468,1,468,1,468,5,468,4560,8,468,10,468,12,468,4563,9,468,1,468,3,468,4566,8,468,1,469,1,469,1,469,1,469,3,469,4572,8,469,1,470,1,470,1,470,3,470,4577,8,470,1,470,1,470,1,471,1,471,1,472,1,472,1,473,1,473,1,473,1,473,1,473,1,473,1,474,1,474,1,474,1,474,1,474,1,475,1,475,1,475,1,475,1,475,1,476,1,476,1,476,1,476,1,477,3,477,4606,8,477,1,477,5,477,4609,8,477,10,477,12,477,4612,9,477,1,477,1,477,1,477,1,477,1,478,1,478,1,479,5,479,4621,8,479,10,479,12,479,4624,9,479,1,479,1,479,1,479,1,479,1,479,1,479,5,479,4632,8,479,10,479,12,479,4635,9,479,3,479,4637,8,479,1,479,1,479,1,480,3,480,4642,8,480,1,480,1,480,1,480,3,480,4647,8,480,3,480,4649,8,480,1,480,1,480,1,481,1,481,1,482,3,482,4656,8,482,1,482,3,482,4659,8,482,1,482,1,482,3,482,4663,8,482,1,482,3,482,4666,8,482,1,482,1,482,1,483,3,483,4671,8,483,1,483,4,483,4674,8,483,11,483,12,483,4675,1,483,1,483,1,483,1,484,1,484,4,484,4683,8,484,11,484,12,484,4684,1,484,1,484,1,485,1,485,3,485,4691,8,485,1,486,1,486,1,486,1,486,1,486,3,486,4698,8,486,1,487,3,487,4701,8,487,1,487,3,487,4704,8,487,1,488,1,488,1,489,1,489,1,490,1,490,1,491,1,491,1,492,1,492,1,493,1,493,1,494,1,494,1,494,0,1,0,495,0,2,4,6,8,10,12,14,16,18,20,22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56,58,60,62,64,66,68,70,72,74,76,78,80,82,84,86,88,90,92,94,96,98,100,102,104,106,108,110,112,114,116,118,120,122,124,126,128,130,132,134,136,138,140,142,144,146,148,150,152,154,156,158,160,162,164,166,168,170,172,174,176,178,180,182,184,186,188,190,192,194,196,198,200,202,204,206,208,210,212,214,216,218,220,222,224,226,228,230,232,234,236,238,240,242,244,246,248,250,252,254,256,258,260,262,264,266,268,270,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302,304,306,308,310,312,314,316,318,320,322,324,326,328,330,332,334,336,338,340,342,344,346,348,350,352,354,356,358,360,362,364,366,368,370,372,374,376,378,380,382,384,386,388,390,392,394,396,398,400,402,404,406,408,410,412,414,416,418,420,422,424,426,428,430,432,434,436,438,440,442,444,446,448,450,452,454,456,458,460,462,464,466,468,470,472,474,476,478,480,482,484,486,488,490,492,494,496,498,500,502,504,506,508,510,512,514,516,518,520,522,524,526,528,530,532,534,536,538,540,542,544,546,548,550,552,554,556,558,560,562,564,566,568,570,572,574,576,578,580,582,584,586,588,590,592,594,596,598,600,602,604,606,608,610,612,614,616,618,620,622,624,626,628,630,632,634,636,638,640,642,644,646,648,650,652,654,656,658,660,662,664,666,668,670,672,674,676,678,680,682,684,686,688,690,692,694,696,698,700,702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734,736,738,740,742,744,746,748,750,752,754,756,758,760,762,764,766,768,770,772,774,776,778,780,782,784,786,788,790,792,794,796,798,800,802,804,806,808,810,812,814,816,818,820,822,824,826,828,830,832,834,836,838,840,842,844,846,848,850,852,854,856,858,860,862,864,866,868,870,872,874,876,878,880,882,884,886,888,890,892,894,896,898,900,902,904,906,908,910,912,914,916,918,920,922,924,926,928,930,932,934,936,938,940,942,944,946,948,950,952,954,956,958,960,962,964,966,968,970,972,974,976,978,980,982,984,986,988,0,27,4,0,107,107,199,199,201,201,217,217,2,0,191,191,210,210,3,0,174,174,177,178,187,187,4,0,186,186,189,189,206,206,208,208,2,0,199,199,201,201,3,0,194,194,198,198,203,203,2,0,179,179,213,213,3,0,76,76,90,90,210,210,2,0,64,64,156,156,1,0,218,219,1,0,122,124,2,0,139,139,185,185,2,0,34,34,217,217,2,0,31,31,120,120,2,0,39,39,163,163,3,0,80,80,83,83,114,114,2,0,148,148,185,185,2,0,128,128,175,175,2,0,42,42,188,188,2,0,125,125,176,176,1,0,221,222,2,0,184,184,207,207,2,0,102,102,210,210,2,0,2,2,165,165,2,0,137,137,153,153,2,0,6,6,18,18,2,0,17,17,132,132,4968,0,1005,1,0,0,0,2,1091,1,0,0,0,4,1093,1,0,0,0,6,1116,1,0,0,0,8,1121,1,0,0,0,10,1123,1,0,0,0,12,1125,1,0,0,0,14,1129,1,0,0,0,16,1132,1,0,0,0,18,1136,1,0,0,0,20,1140,1,0,0,0,22,1147,1,0,0,0,24,1155,1,0,0,0,26,1163,1,0,0,0,28,1172,1,0,0,0,30,1174,1,0,0,0,32,1176,1,0,0,0,34,1178,1,0,0,0,36,1180,1,0,0,0,38,1182,1,0,0,0,40,1184,1,0,0,0,42,1186,1,0,0,0,44,1188,1,0,0,0,46,1200,1,0,0,0,48,1219,1,0,0,0,50,1223,1,0,0,0,52,1227,1,0,0,0,54,1271,1,0,0,0,56,1273,1,0,0,0,58,1275,1,0,0,0,60,1281,1,0,0,0,62,1298,1,0,0,0,64,1306,1,0,0,0,66,1320,1,0,0,0,68,1329,1,0,0,0,70,1337,1,0,0,0,72,1343,1,0,0,0,74,1356,1,0,0,0,76,1361,1,0,0,0,78,1364,1,0,0,0,80,1366,1,0,0,0,82,1370,1,0,0,0,84,1372,1,0,0,0,86,1375,1,0,0,0,88,1378,1,0,0,0,90,1395,1,0,0,0,92,1408,1,0,0,0,94,1419,1,0,0,0,96,1421,1,0,0,0,98,1434,1,0,0,0,100,1448,1,0,0,0,102,1450,1,0,0,0,104,1456,1,0,0,0,106,1484,1,0,0,0,108,1496,1,0,0,0,110,1498,1,0,0,0,112,1504,1,0,0,0,114,1513,1,0,0,0,116,1533,1,0,0,0,118,1542,1,0,0,0,120,1549,1,0,0,0,122,1551,1,0,0,0,124,1561,1,0,0,0,126,1570,1,0,0,0,128,1579,1,0,0,0,130,1597,1,0,0,0,132,1603,1,0,0,0,134,1609,1,0,0,0,136,1617,1,0,0,0,138,1619,1,0,0,0,140,1627,1,0,0,0,142,1639,1,0,0,0,144,1661,1,0,0,0,146,1673,1,0,0,0,148,1695,1,0,0,0,150,1703,1,0,0,0,152,1711,1,0,0,0,154,1719,1,0,0,0,156,1729,1,0,0,0,158,1731,1,0,0,0,160,1735,1,0,0,0,162,1738,1,0,0,0,164,1744,1,0,0,0,166,1762,1,0,0,0,168,1775,1,0,0,0,170,1783,1,0,0,0,172,1799,1,0,0,0,174,1807,1,0,0,0,176,1812,1,0,0,0,178,1830,1,0,0,0,180,1838,1,0,0,0,182,1847,1,0,0,0,184,1849,1,0,0,0,186,1852,1,0,0,0,188,1876,1,0,0,0,190,1882,1,0,0,0,192,1884,1,0,0,0,194,1893,1,0,0,0,196,1897,1,0,0,0,198,1928,1,0,0,0,200,1951,1,0,0,0,202,1958,1,0,0,0,204,1960,1,0,0,0,206,1973,1,0,0,0,208,1977,1,0,0,0,210,1985,1,0,0,0,212,1988,1,0,0,0,214,1991,1,0,0,0,216,1994,1,0,0,0,218,2002,1,0,0,0,220,2023,1,0,0,0,222,2025,1,0,0,0,224,2037,1,0,0,0,226,2045,1,0,0,0,228,2053,1,0,0,0,230,2061,1,0,0,0,232,2073,1,0,0,0,234,2081,1,0,0,0,236,2097,1,0,0,0,238,2099,1,0,0,0,240,2106,1,0,0,0,242,2112,1,0,0,0,244,2134,1,0,0,0,246,2142,1,0,0,0,248,2154,1,0,0,0,250,2156,1,0,0,0,252,2161,1,0,0,0,254,2166,1,0,0,0,256,2171,1,0,0,0,258,2176,1,0,0,0,260,2182,1,0,0,0,262,2197,1,0,0,0,264,2207,1,0,0,0,266,2214,1,0,0,0,268,2229,1,0,0,0,270,2232,1,0,0,0,272,2241,1,0,0,0,274,2243,1,0,0,0,276,2245,1,0,0,0,278,2270,1,0,0,0,280,2272,1,0,0,0,282,2297,1,0,0,0,284,2299,1,0,0,0,286,2304,1,0,0,0,288,2312,1,0,0,0,290,2322,1,0,0,0,292,2328,1,0,0,0,294,2334,1,0,0,0,296,2338,1,0,0,0,298,2341,1,0,0,0,300,2349,1,0,0,0,302,2354,1,0,0,0,304,2362,1,0,0,0,306,2373,1,0,0,0,308,2375,1,0,0,0,310,2377,1,0,0,0,312,2379,1,0,0,0,314,2381,1,0,0,0,316,2383,1,0,0,0,318,2385,1,0,0,0,320,2389,1,0,0,0,322,2391,1,0,0,0,324,2393,1,0,0,0,326,2395,1,0,0,0,328,2397,1,0,0,0,330,2399,1,0,0,0,332,2401,1,0,0,0,334,2403,1,0,0,0,336,2405,1,0,0,0,338,2407,1,0,0,0,340,2409,1,0,0,0,342,2419,1,0,0,0,344,2421,1,0,0,0,346,2423,1,0,0,0,348,2425,1,0,0,0,350,2427,1,0,0,0,352,2429,1,0,0,0,354,2431,1,0,0,0,356,2439,1,0,0,0,358,2441,1,0,0,0,360,2443,1,0,0,0,362,2445,1,0,0,0,364,2447,1,0,0,0,366,2451,1,0,0,0,368,2459,1,0,0,0,370,2461,1,0,0,0,372,2466,1,0,0,0,374,2471,1,0,0,0,376,2516,1,0,0,0,378,2518,1,0,0,0,380,2539,1,0,0,0,382,2561,1,0,0,0,384,2563,1,0,0,0,386,2565,1,0,0,0,388,2573,1,0,0,0,390,2575,1,0,0,0,392,2577,1,0,0,0,394,2579,1,0,0,0,396,2587,1,0,0,0,398,2593,1,0,0,0,400,2595,1,0,0,0,402,2602,1,0,0,0,404,2609,1,0,0,0,406,2611,1,0,0,0,408,2613,1,0,0,0,410,2624,1,0,0,0,412,2626,1,0,0,0,414,2635,1,0,0,0,416,2641,1,0,0,0,418,2643,1,0,0,0,420,2648,1,0,0,0,422,2674,1,0,0,0,424,2698,1,0,0,0,426,2704,1,0,0,0,428,2706,1,0,0,0,430,2709,1,0,0,0,432,2726,1,0,0,0,434,2733,1,0,0,0,436,2745,1,0,0,0,438,2758,1,0,0,0,440,2760,1,0,0,0,442,2769,1,0,0,0,444,2788,1,0,0,0,446,2794,1,0,0,0,448,2796,1,0,0,0,450,2831,1,0,0,0,452,2835,1,0,0,0,454,2837,1,0,0,0,456,2839,1,0,0,0,458,2842,1,0,0,0,460,2850,1,0,0,0,462,2854,1,0,0,0,464,2868,1,0,0,0,466,2880,1,0,0,0,468,2900,1,0,0,0,470,2902,1,0,0,0,472,2905,1,0,0,0,474,2909,1,0,0,0,476,2912,1,0,0,0,478,2915,1,0,0,0,480,2918,1,0,0,0,482,2922,1,0,0,0,484,2933,1,0,0,0,486,2937,1,0,0,0,488,2940,1,0,0,0,490,2944,1,0,0,0,492,2946,1,0,0,0,494,2954,1,0,0,0,496,2963,1,0,0,0,498,2966,1,0,0,0,500,2970,1,0,0,0,502,2972,1,0,0,0,504,2977,1,0,0,0,506,2982,1,0,0,0,508,2986,1,0,0,0,510,3003,1,0,0,0,512,3007,1,0,0,0,514,3024,1,0,0,0,516,3042,1,0,0,0,518,3065,1,0,0,0,520,3067,1,0,0,0,522,3076,1,0,0,0,524,3081,1,0,0,0,526,3088,1,0,0,0,528,3106,1,0,0,0,530,3108,1,0,0,0,532,3112,1,0,0,0,534,3116,1,0,0,0,536,3121,1,0,0,0,538,3133,1,0,0,0,540,3139,1,0,0,0,542,3152,1,0,0,0,544,3154,1,0,0,0,546,3167,1,0,0,0,548,3171,1,0,0,0,550,3181,1,0,0,0,552,3194,1,0,0,0,554,3196,1,0,0,0,556,3210,1,0,0,0,558,3213,1,0,0,0,560,3215,1,0,0,0,562,3218,1,0,0,0,564,3220,1,0,0,0,566,3225,1,0,0,0,568,3229,1,0,0,0,570,3234,1,0,0,0,572,3238,1,0,0,0,574,3244,1,0,0,0,576,3246,1,0,0,0,578,3248,1,0,0,0,580,3252,1,0,0,0,582,3255,1,0,0,0,584,3260,1,0,0,0,586,3280,1,0,0,0,588,3282,1,0,0,0,590,3286,1,0,0,0,592,3299,1,0,0,0,594,3312,1,0,0,0,596,3325,1,0,0,0,598,3340,1,0,0,0,600,3351,1,0,0,0,602,3353,1,0,0,0,604,3361,1,0,0,0,606,3363,1,0,0,0,608,3369,1,0,0,0,610,3371,1,0,0,0,612,3374,1,0,0,0,614,3390,1,0,0,0,616,3394,1,0,0,0,618,3396,1,0,0,0,620,3400,1,0,0,0,622,3413,1,0,0,0,624,3416,1,0,0,0,626,3425,1,0,0,0,628,3430,1,0,0,0,630,3444,1,0,0,0,632,3446,1,0,0,0,634,3451,1,0,0,0,636,3477,1,0,0,0,638,3479,1,0,0,0,640,3481,1,0,0,0,642,3483,1,0,0,0,644,3488,1,0,0,0,646,3494,1,0,0,0,648,3496,1,0,0,0,650,3500,1,0,0,0,652,3505,1,0,0,0,654,3512,1,0,0,0,656,3527,1,0,0,0,658,3548,1,0,0,0,660,3559,1,0,0,0,662,3563,1,0,0,0,664,3565,1,0,0,0,666,3570,1,0,0,0,668,3573,1,0,0,0,670,3576,1,0,0,0,672,3579,1,0,0,0,674,3585,1,0,0,0,676,3590,1,0,0,0,678,3603,1,0,0,0,680,3616,1,0,0,0,682,3618,1,0,0,0,684,3622,1,0,0,0,686,3630,1,0,0,0,688,3632,1,0,0,0,690,3645,1,0,0,0,692,3652,1,0,0,0,694,3659,1,0,0,0,696,3666,1,0,0,0,698,3673,1,0,0,0,700,3678,1,0,0,0,702,3683,1,0,0,0,704,3688,1,0,0,0,706,3698,1,0,0,0,708,3700,1,0,0,0,710,3702,1,0,0,0,712,3708,1,0,0,0,714,3710,1,0,0,0,716,3728,1,0,0,0,718,3745,1,0,0,0,720,3747,1,0,0,0,722,3749,1,0,0,0,724,3751,1,0,0,0,726,3753,1,0,0,0,728,3755,1,0,0,0,730,3760,1,0,0,0,732,3768,1,0,0,0,734,3773,1,0,0,0,736,3775,1,0,0,0,738,3777,1,0,0,0,740,3787,1,0,0,0,742,3798,1,0,0,0,744,3800,1,0,0,0,746,3806,1,0,0,0,748,3817,1,0,0,0,750,3819,1,0,0,0,752,3833,1,0,0,0,754,3841,1,0,0,0,756,3844,1,0,0,0,758,3849,1,0,0,0,760,3853,1,0,0,0,762,3857,1,0,0,0,764,3861,1,0,0,0,766,3868,1,0,0,0,768,3877,1,0,0,0,770,3895,1,0,0,0,772,3918,1,0,0,0,774,3920,1,0,0,0,776,3924,1,0,0,0,778,3928,1,0,0,0,780,3932,1,0,0,0,782,3947,1,0,0,0,784,3949,1,0,0,0,786,3952,1,0,0,0,788,3955,1,0,0,0,790,3958,1,0,0,0,792,3961,1,0,0,0,794,3964,1,0,0,0,796,3967,1,0,0,0,798,3984,1,0,0,0,800,3986,1,0,0,0,802,4003,1,0,0,0,804,4027,1,0,0,0,806,4058,1,0,0,0,808,4061,1,0,0,0,810,4063,1,0,0,0,812,4066,1,0,0,0,814,4074,1,0,0,0,816,4076,1,0,0,0,818,4087,1,0,0,0,820,4098,1,0,0,0,822,4109,1,0,0,0,824,4120,1,0,0,0,826,4122,1,0,0,0,828,4125,1,0,0,0,830,4127,1,0,0,0,832,4133,1,0,0,0,834,4143,1,0,0,0,836,4148,1,0,0,0,838,4156,1,0,0,0,840,4158,1,0,0,0,842,4162,1,0,0,0,844,4168,1,0,0,0,846,4173,1,0,0,0,848,4189,1,0,0,0,850,4194,1,0,0,0,852,4209,1,0,0,0,854,4218,1,0,0,0,856,4220,1,0,0,0,858,4223,1,0,0,0,860,4232,1,0,0,0,862,4236,1,0,0,0,864,4261,1,0,0,0,866,4263,1,0,0,0,868,4290,1,0,0,0,870,4292,1,0,0,0,872,4295,1,0,0,0,874,4304,1,0,0,0,876,4307,1,0,0,0,878,4316,1,0,0,0,880,4321,1,0,0,0,882,4348,1,0,0,0,884,4350,1,0,0,0,886,4352,1,0,0,0,888,4354,1,0,0,0,890,4356,1,0,0,0,892,4362,1,0,0,0,894,4367,1,0,0,0,896,4373,1,0,0,0,898,4390,1,0,0,0,900,4397,1,0,0,0,902,4399,1,0,0,0,904,4406,1,0,0,0,906,4412,1,0,0,0,908,4418,1,0,0,0,910,4423,1,0,0,0,912,4429,1,0,0,0,914,4434,1,0,0,0,916,4464,1,0,0,0,918,4466,1,0,0,0,920,4473,1,0,0,0,922,4479,1,0,0,0,924,4497,1,0,0,0,926,4512,1,0,0,0,928,4517,1,0,0,0,930,4519,1,0,0,0,932,4544,1,0,0,0,934,4546,1,0,0,0,936,4565,1,0,0,0,938,4571,1,0,0,0,940,4573,1,0,0,0,942,4580,1,0,0,0,944,4582,1,0,0,0,946,4584,1,0,0,0,948,4590,1,0,0,0,950,4595,1,0,0,0,952,4600,1,0,0,0,954,4605,1,0,0,0,956,4617,1,0,0,0,958,4622,1,0,0,0,960,4648,1,0,0,0,962,4652,1,0,0,0,964,4655,1,0,0,0,966,4670,1,0,0,0,968,4680,1,0,0,0,970,4690,1,0,0,0,972,4692,1,0,0,0,974,4700,1,0,0,0,976,4705,1,0,0,0,978,4707,1,0,0,0,980,4709,1,0,0,0,982,4711,1,0,0,0,984,4713,1,0,0,0,986,4715,1,0,0,0,988,4717,1,0,0,0,990,991,6,0,-1,0,991,992,5,77,0,0,992,993,3,0,0,0,993,994,5,209,0,0,994,995,3,0,0,0,995,996,5,55,0,0,996,997,3,0,0,28,997,1006,1,0,0,0,998,999,7,0,0,0,999,1006,3,0,0,14,1e3,1001,7,1,0,0,1001,1006,3,2,1,0,1002,1003,5,8,0,0,1003,1006,3,2,1,0,1004,1006,3,6,3,0,1005,990,1,0,0,0,1005,998,1,0,0,0,1005,1e3,1,0,0,0,1005,1002,1,0,0,0,1005,1004,1,0,0,0,1006,1088,1,0,0,0,1007,1008,10,27,0,0,1008,1009,5,190,0,0,1009,1087,3,0,0,28,1010,1011,10,26,0,0,1011,1012,5,78,0,0,1012,1087,3,0,0,27,1013,1014,10,25,0,0,1014,1015,5,112,0,0,1015,1087,3,0,0,26,1016,1017,10,24,0,0,1017,1018,5,12,0,0,1018,1087,3,0,0,25,1019,1020,10,23,0,0,1020,1021,5,173,0,0,1021,1087,3,0,0,24,1022,1023,10,22,0,0,1023,1024,5,215,0,0,1024,1087,3,0,0,23,1025,1026,10,21,0,0,1026,1027,5,195,0,0,1027,1087,3,0,0,22,1028,1029,10,20,0,0,1029,1030,7,2,0,0,1030,1087,3,0,0,21,1031,1032,10,19,0,0,1032,1033,7,3,0,0,1033,1087,3,0,0,20,1034,1035,10,18,0,0,1035,1036,5,181,0,0,1036,1087,3,0,0,19,1037,1038,10,17,0,0,1038,1039,7,4,0,0,1039,1087,3,0,0,18,1040,1041,10,16,0,0,1041,1042,7,5,0,0,1042,1087,3,0,0,17,1043,1044,10,15,0,0,1044,1045,7,6,0,0,1045,1087,3,0,0,15,1046,1047,10,12,0,0,1047,1048,7,7,0,0,1048,1087,3,2,1,0,1049,1050,10,11,0,0,1050,1051,5,13,0,0,1051,1087,3,2,1,0,1052,1053,10,10,0,0,1053,1054,5,191,0,0,1054,1087,3,2,1,0,1055,1056,10,9,0,0,1056,1057,5,100,0,0,1057,1087,3,2,1,0,1058,1059,10,8,0,0,1059,1061,5,211,0,0,1060,1062,3,4,2,0,1061,1060,1,0,0,0,1061,1062,1,0,0,0,1062,1063,1,0,0,0,1063,1087,5,212,0,0,1064,1065,10,7,0,0,1065,1066,5,192,0,0,1066,1068,5,196,0,0,1067,1069,3,4,2,0,1068,1067,1,0,0,0,1068,1069,1,0,0,0,1069,1070,1,0,0,0,1070,1087,5,197,0,0,1071,1072,10,6,0,0,1072,1087,3,20,10,0,1073,1074,10,5,0,0,1074,1075,5,202,0,0,1075,1087,3,90,45,0,1076,1077,10,4,0,0,1077,1078,5,182,0,0,1078,1087,3,18,9,0,1079,1080,10,3,0,0,1080,1081,5,180,0,0,1081,1084,3,90,45,0,1082,1085,3,18,9,0,1083,1085,3,20,10,0,1084,1082,1,0,0,0,1084,1083,1,0,0,0,1085,1087,1,0,0,0,1086,1007,1,0,0,0,1086,1010,1,0,0,0,1086,1013,1,0,0,0,1086,1016,1,0,0,0,1086,1019,1,0,0,0,1086,1022,1,0,0,0,1086,1025,1,0,0,0,1086,1028,1,0,0,0,1086,1031,1,0,0,0,1086,1034,1,0,0,0,1086,1037,1,0,0,0,1086,1040,1,0,0,0,1086,1043,1,0,0,0,1086,1046,1,0,0,0,1086,1049,1,0,0,0,1086,1052,1,0,0,0,1086,1055,1,0,0,0,1086,1058,1,0,0,0,1086,1064,1,0,0,0,1086,1071,1,0,0,0,1086,1073,1,0,0,0,1086,1076,1,0,0,0,1086,1079,1,0,0,0,1087,1090,1,0,0,0,1088,1086,1,0,0,0,1088,1089,1,0,0,0,1089,1,1,0,0,0,1090,1088,1,0,0,0,1091,1092,3,90,45,0,1092,3,1,0,0,0,1093,1098,3,0,0,0,1094,1095,5,200,0,0,1095,1097,3,0,0,0,1096,1094,1,0,0,0,1097,1100,1,0,0,0,1098,1096,1,0,0,0,1098,1099,1,0,0,0,1099,5,1,0,0,0,1100,1098,1,0,0,0,1101,1117,3,8,4,0,1102,1117,3,28,14,0,1103,1107,3,90,45,0,1104,1108,3,20,10,0,1105,1106,5,202,0,0,1106,1108,5,102,0,0,1107,1104,1,0,0,0,1107,1105,1,0,0,0,1107,1108,1,0,0,0,1108,1117,1,0,0,0,1109,1117,3,16,8,0,1110,1117,3,18,9,0,1111,1113,5,196,0,0,1112,1114,3,4,2,0,1113,1112,1,0,0,0,1113,1114,1,0,0,0,1114,1115,1,0,0,0,1115,1117,5,197,0,0,1116,1101,1,0,0,0,1116,1102,1,0,0,0,1116,1103,1,0,0,0,1116,1109,1,0,0,0,1116,1110,1,0,0,0,1116,1111,1,0,0,0,1117,7,1,0,0,0,1118,1122,5,108,0,0,1119,1120,5,196,0,0,1120,1122,5,197,0,0,1121,1118,1,0,0,0,1121,1119,1,0,0,0,1122,9,1,0,0,0,1123,1124,3,90,45,0,1124,11,1,0,0,0,1125,1126,3,90,45,0,1126,1127,5,202,0,0,1127,1128,5,102,0,0,1128,13,1,0,0,0,1129,1130,3,90,45,0,1130,1131,3,20,10,0,1131,15,1,0,0,0,1132,1133,5,105,0,0,1133,1134,3,90,45,0,1134,1135,3,20,10,0,1135,17,1,0,0,0,1136,1137,5,214,0,0,1137,1138,3,292,146,0,1138,1139,5,216,0,0,1139,19,1,0,0,0,1140,1143,5,196,0,0,1141,1144,3,22,11,0,1142,1144,3,24,12,0,1143,1141,1,0,0,0,1143,1142,1,0,0,0,1143,1144,1,0,0,0,1144,1145,1,0,0,0,1145,1146,5,197,0,0,1146,21,1,0,0,0,1147,1152,3,0,0,0,1148,1149,5,200,0,0,1149,1151,3,0,0,0,1150,1148,1,0,0,0,1151,1154,1,0,0,0,1152,1150,1,0,0,0,1152,1153,1,0,0,0,1153,23,1,0,0,0,1154,1152,1,0,0,0,1155,1160,3,26,13,0,1156,1157,5,200,0,0,1157,1159,3,26,13,0,1158,1156,1,0,0,0,1159,1162,1,0,0,0,1160,1158,1,0,0,0,1160,1161,1,0,0,0,1161,25,1,0,0,0,1162,1160,1,0,0,0,1163,1164,3,90,45,0,1164,1165,5,207,0,0,1165,1166,3,0,0,0,1166,27,1,0,0,0,1167,1173,3,30,15,0,1168,1173,3,32,16,0,1169,1173,3,34,17,0,1170,1173,3,36,18,0,1171,1173,3,38,19,0,1172,1167,1,0,0,0,1172,1168,1,0,0,0,1172,1169,1,0,0,0,1172,1170,1,0,0,0,1172,1171,1,0,0,0,1173,29,1,0,0,0,1174,1175,7,8,0,0,1175,31,1,0,0,0,1176,1177,5,220,0,0,1177,33,1,0,0,0,1178,1179,5,221,0,0,1179,35,1,0,0,0,1180,1181,5,222,0,0,1181,37,1,0,0,0,1182,1183,5,198,0,0,1183,39,1,0,0,0,1184,1185,3,0,0,0,1185,41,1,0,0,0,1186,1187,3,0,0,0,1187,43,1,0,0,0,1188,1189,7,9,0,0,1189,45,1,0,0,0,1190,1191,5,206,0,0,1191,1192,3,44,22,0,1192,1193,5,208,0,0,1193,1194,3,44,22,0,1194,1201,1,0,0,0,1195,1196,5,206,0,0,1196,1197,3,44,22,0,1197,1198,5,208,0,0,1198,1201,1,0,0,0,1199,1201,3,44,22,0,1200,1190,1,0,0,0,1200,1195,1,0,0,0,1200,1199,1,0,0,0,1201,47,1,0,0,0,1202,1220,5,205,0,0,1203,1207,5,214,0,0,1204,1206,3,50,25,0,1205,1204,1,0,0,0,1206,1209,1,0,0,0,1207,1205,1,0,0,0,1207,1208,1,0,0,0,1208,1210,1,0,0,0,1209,1207,1,0,0,0,1210,1220,5,216,0,0,1211,1215,5,214,0,0,1212,1214,3,58,29,0,1213,1212,1,0,0,0,1214,1217,1,0,0,0,1215,1213,1,0,0,0,1215,1216,1,0,0,0,1216,1218,1,0,0,0,1217,1215,1,0,0,0,1218,1220,5,216,0,0,1219,1202,1,0,0,0,1219,1203,1,0,0,0,1219,1211,1,0,0,0,1220,49,1,0,0,0,1221,1224,3,52,26,0,1222,1224,3,58,29,0,1223,1221,1,0,0,0,1223,1222,1,0,0,0,1224,51,1,0,0,0,1225,1228,3,106,53,0,1226,1228,3,108,54,0,1227,1225,1,0,0,0,1227,1226,1,0,0,0,1228,53,1,0,0,0,1229,1231,3,414,207,0,1230,1229,1,0,0,0,1231,1234,1,0,0,0,1232,1230,1,0,0,0,1232,1233,1,0,0,0,1233,1235,1,0,0,0,1234,1232,1,0,0,0,1235,1240,5,48,0,0,1236,1238,3,46,23,0,1237,1236,1,0,0,0,1237,1238,1,0,0,0,1238,1239,1,0,0,0,1239,1241,5,74,0,0,1240,1237,1,0,0,0,1240,1241,1,0,0,0,1241,1242,1,0,0,0,1242,1247,3,90,45,0,1243,1244,5,200,0,0,1244,1246,3,90,45,0,1245,1243,1,0,0,0,1246,1249,1,0,0,0,1247,1245,1,0,0,0,1247,1248,1,0,0,0,1248,1250,1,0,0,0,1249,1247,1,0,0,0,1250,1251,5,154,0,0,1251,1256,3,90,45,0,1252,1253,5,200,0,0,1253,1255,3,90,45,0,1254,1252,1,0,0,0,1255,1258,1,0,0,0,1256,1254,1,0,0,0,1256,1257,1,0,0,0,1257,1259,1,0,0,0,1258,1256,1,0,0,0,1259,1260,3,48,24,0,1260,1272,1,0,0,0,1261,1263,3,414,207,0,1262,1261,1,0,0,0,1263,1266,1,0,0,0,1264,1262,1,0,0,0,1264,1265,1,0,0,0,1265,1267,1,0,0,0,1266,1264,1,0,0,0,1267,1268,5,48,0,0,1268,1269,3,442,221,0,1269,1270,3,48,24,0,1270,1272,1,0,0,0,1271,1232,1,0,0,0,1271,1264,1,0,0,0,1272,55,1,0,0,0,1273,1274,3,90,45,0,1274,57,1,0,0,0,1275,1276,3,60,30,0,1276,59,1,0,0,0,1277,1282,3,62,31,0,1278,1282,3,64,32,0,1279,1282,3,66,33,0,1280,1282,3,420,210,0,1281,1277,1,0,0,0,1281,1278,1,0,0,0,1281,1279,1,0,0,0,1281,1280,1,0,0,0,1282,61,1,0,0,0,1283,1285,5,30,0,0,1284,1286,3,46,23,0,1285,1284,1,0,0,0,1285,1286,1,0,0,0,1286,1296,1,0,0,0,1287,1288,5,1,0,0,1288,1293,3,56,28,0,1289,1290,5,200,0,0,1290,1292,3,56,28,0,1291,1289,1,0,0,0,1292,1295,1,0,0,0,1293,1291,1,0,0,0,1293,1294,1,0,0,0,1294,1297,1,0,0,0,1295,1293,1,0,0,0,1296,1287,1,0,0,0,1296,1297,1,0,0,0,1297,1299,1,0,0,0,1298,1283,1,0,0,0,1298,1299,1,0,0,0,1299,1302,1,0,0,0,1300,1301,5,95,0,0,1301,1303,5,220,0,0,1302,1300,1,0,0,0,1302,1303,1,0,0,0,1303,1304,1,0,0,0,1304,1305,5,223,0,0,1305,63,1,0,0,0,1306,1308,5,54,0,0,1307,1309,3,46,23,0,1308,1307,1,0,0,0,1308,1309,1,0,0,0,1309,1312,1,0,0,0,1310,1311,5,95,0,0,1311,1313,5,220,0,0,1312,1310,1,0,0,0,1312,1313,1,0,0,0,1313,1314,1,0,0,0,1314,1315,5,223,0,0,1315,65,1,0,0,0,1316,1318,5,131,0,0,1317,1319,3,46,23,0,1318,1317,1,0,0,0,1318,1319,1,0,0,0,1319,1321,1,0,0,0,1320,1316,1,0,0,0,1320,1321,1,0,0,0,1321,1322,1,0,0,0,1322,1323,5,93,0,0,1323,1324,5,220,0,0,1324,1325,5,223,0,0,1325,67,1,0,0,0,1326,1328,3,446,223,0,1327,1326,1,0,0,0,1328,1331,1,0,0,0,1329,1327,1,0,0,0,1329,1330,1,0,0,0,1330,1332,1,0,0,0,1331,1329,1,0,0,0,1332,1333,5,0,0,1,1333,69,1,0,0,0,1334,1336,3,416,208,0,1335,1334,1,0,0,0,1336,1339,1,0,0,0,1337,1335,1,0,0,0,1337,1338,1,0,0,0,1338,1340,1,0,0,0,1339,1337,1,0,0,0,1340,1341,3,72,36,0,1341,1342,3,74,37,0,1342,71,1,0,0,0,1343,1345,5,104,0,0,1344,1346,3,46,23,0,1345,1344,1,0,0,0,1345,1346,1,0,0,0,1346,73,1,0,0,0,1347,1357,5,205,0,0,1348,1352,5,214,0,0,1349,1351,3,76,38,0,1350,1349,1,0,0,0,1351,1354,1,0,0,0,1352,1350,1,0,0,0,1352,1353,1,0,0,0,1353,1355,1,0,0,0,1354,1352,1,0,0,0,1355,1357,5,216,0,0,1356,1347,1,0,0,0,1356,1348,1,0,0,0,1357,75,1,0,0,0,1358,1362,3,82,41,0,1359,1362,3,88,44,0,1360,1362,3,92,46,0,1361,1358,1,0,0,0,1361,1359,1,0,0,0,1361,1360,1,0,0,0,1362,77,1,0,0,0,1363,1365,3,80,40,0,1364,1363,1,0,0,0,1364,1365,1,0,0,0,1365,79,1,0,0,0,1366,1367,7,10,0,0,1367,81,1,0,0,0,1368,1371,3,84,42,0,1369,1371,3,86,43,0,1370,1368,1,0,0,0,1370,1369,1,0,0,0,1371,83,1,0,0,0,1372,1373,3,78,39,0,1373,1374,3,104,52,0,1374,85,1,0,0,0,1375,1376,3,78,39,0,1376,1377,3,108,54,0,1377,87,1,0,0,0,1378,1379,3,78,39,0,1379,1384,5,7,0,0,1380,1381,5,206,0,0,1381,1382,3,44,22,0,1382,1383,5,208,0,0,1383,1385,1,0,0,0,1384,1380,1,0,0,0,1384,1385,1,0,0,0,1385,1387,1,0,0,0,1386,1388,3,44,22,0,1387,1386,1,0,0,0,1387,1388,1,0,0,0,1388,1389,1,0,0,0,1389,1390,5,71,0,0,1390,1391,3,90,45,0,1391,1392,3,48,24,0,1392,89,1,0,0,0,1393,1394,5,193,0,0,1394,1396,5,183,0,0,1395,1393,1,0,0,0,1395,1396,1,0,0,0,1396,1402,1,0,0,0,1397,1398,3,44,22,0,1398,1399,5,183,0,0,1399,1401,1,0,0,0,1400,1397,1,0,0,0,1401,1404,1,0,0,0,1402,1400,1,0,0,0,1402,1403,1,0,0,0,1403,1405,1,0,0,0,1404,1402,1,0,0,0,1405,1406,3,44,22,0,1406,91,1,0,0,0,1407,1409,3,80,40,0,1408,1407,1,0,0,0,1408,1409,1,0,0,0,1409,1410,1,0,0,0,1410,1412,5,79,0,0,1411,1413,5,8,0,0,1412,1411,1,0,0,0,1412,1413,1,0,0,0,1413,1414,1,0,0,0,1414,1415,3,94,47,0,1415,1416,3,48,24,0,1416,93,1,0,0,0,1417,1420,3,96,48,0,1418,1420,3,98,49,0,1419,1417,1,0,0,0,1419,1418,1,0,0,0,1420,95,1,0,0,0,1421,1424,3,90,45,0,1422,1423,5,183,0,0,1423,1425,5,179,0,0,1424,1422,1,0,0,0,1424,1425,1,0,0,0,1425,97,1,0,0,0,1426,1427,3,90,45,0,1427,1428,5,183,0,0,1428,1431,5,198,0,0,1429,1430,5,183,0,0,1430,1432,5,179,0,0,1431,1429,1,0,0,0,1431,1432,1,0,0,0,1432,1435,1,0,0,0,1433,1435,3,100,50,0,1434,1426,1,0,0,0,1434,1433,1,0,0,0,1435,99,1,0,0,0,1436,1438,3,970,485,0,1437,1439,3,102,51,0,1438,1437,1,0,0,0,1439,1440,1,0,0,0,1440,1438,1,0,0,0,1440,1441,1,0,0,0,1441,1449,1,0,0,0,1442,1444,3,984,492,0,1443,1445,3,102,51,0,1444,1443,1,0,0,0,1445,1446,1,0,0,0,1446,1444,1,0,0,0,1446,1447,1,0,0,0,1447,1449,1,0,0,0,1448,1436,1,0,0,0,1448,1442,1,0,0,0,1449,101,1,0,0,0,1450,1451,5,211,0,0,1451,1452,3,0,0,0,1452,1453,5,212,0,0,1453,103,1,0,0,0,1454,1457,3,60,30,0,1455,1457,3,106,53,0,1456,1454,1,0,0,0,1456,1455,1,0,0,0,1457,105,1,0,0,0,1458,1485,3,54,27,0,1459,1485,3,70,35,0,1460,1485,3,110,55,0,1461,1485,3,162,81,0,1462,1485,3,250,125,0,1463,1485,3,252,126,0,1464,1485,3,254,127,0,1465,1485,3,412,206,0,1466,1485,3,256,128,0,1467,1485,3,258,129,0,1468,1485,3,370,185,0,1469,1485,3,284,142,0,1470,1485,3,288,144,0,1471,1485,3,300,150,0,1472,1485,3,398,199,0,1473,1485,3,432,216,0,1474,1485,3,434,217,0,1475,1485,3,134,67,0,1476,1485,3,142,71,0,1477,1485,3,168,84,0,1478,1485,3,146,73,0,1479,1485,3,242,121,0,1480,1485,3,220,110,0,1481,1485,3,224,112,0,1482,1485,3,232,116,0,1483,1485,3,246,123,0,1484,1458,1,0,0,0,1484,1459,1,0,0,0,1484,1460,1,0,0,0,1484,1461,1,0,0,0,1484,1462,1,0,0,0,1484,1463,1,0,0,0,1484,1464,1,0,0,0,1484,1465,1,0,0,0,1484,1466,1,0,0,0,1484,1467,1,0,0,0,1484,1468,1,0,0,0,1484,1469,1,0,0,0,1484,1470,1,0,0,0,1484,1471,1,0,0,0,1484,1472,1,0,0,0,1484,1473,1,0,0,0,1484,1474,1,0,0,0,1484,1475,1,0,0,0,1484,1476,1,0,0,0,1484,1477,1,0,0,0,1484,1478,1,0,0,0,1484,1479,1,0,0,0,1484,1480,1,0,0,0,1484,1481,1,0,0,0,1484,1482,1,0,0,0,1484,1483,1,0,0,0,1485,107,1,0,0,0,1486,1497,3,172,86,0,1487,1497,3,286,143,0,1488,1497,3,298,149,0,1489,1497,3,302,151,0,1490,1497,3,304,152,0,1491,1497,3,260,130,0,1492,1497,3,276,138,0,1493,1497,3,280,140,0,1494,1497,3,372,186,0,1495,1497,3,374,187,0,1496,1486,1,0,0,0,1496,1487,1,0,0,0,1496,1488,1,0,0,0,1496,1489,1,0,0,0,1496,1490,1,0,0,0,1496,1491,1,0,0,0,1496,1492,1,0,0,0,1496,1493,1,0,0,0,1496,1494,1,0,0,0,1496,1495,1,0,0,0,1497,109,1,0,0,0,1498,1499,3,112,56,0,1499,1500,5,157,0,0,1500,1501,3,114,57,0,1501,1502,3,130,65,0,1502,111,1,0,0,0,1503,1505,5,2,0,0,1504,1503,1,0,0,0,1504,1505,1,0,0,0,1505,1509,1,0,0,0,1506,1508,3,416,208,0,1507,1506,1,0,0,0,1508,1511,1,0,0,0,1509,1507,1,0,0,0,1509,1510,1,0,0,0,1510,113,1,0,0,0,1511,1509,1,0,0,0,1512,1514,5,8,0,0,1513,1512,1,0,0,0,1513,1514,1,0,0,0,1514,1516,1,0,0,0,1515,1517,3,46,23,0,1516,1515,1,0,0,0,1516,1517,1,0,0,0,1517,1519,1,0,0,0,1518,1520,3,404,202,0,1519,1518,1,0,0,0,1519,1520,1,0,0,0,1520,1523,1,0,0,0,1521,1524,3,116,58,0,1522,1524,3,118,59,0,1523,1521,1,0,0,0,1523,1522,1,0,0,0,1524,1525,1,0,0,0,1525,1523,1,0,0,0,1525,1526,1,0,0,0,1526,1530,1,0,0,0,1527,1529,3,120,60,0,1528,1527,1,0,0,0,1529,1532,1,0,0,0,1530,1528,1,0,0,0,1530,1531,1,0,0,0,1531,115,1,0,0,0,1532,1530,1,0,0,0,1533,1534,7,11,0,0,1534,1539,3,136,68,0,1535,1536,5,200,0,0,1536,1538,3,136,68,0,1537,1535,1,0,0,0,1538,1541,1,0,0,0,1539,1537,1,0,0,0,1539,1540,1,0,0,0,1540,117,1,0,0,0,1541,1539,1,0,0,0,1542,1543,7,12,0,0,1543,1544,3,144,72,0,1544,119,1,0,0,0,1545,1550,3,122,61,0,1546,1550,3,124,62,0,1547,1550,3,126,63,0,1548,1550,3,128,64,0,1549,1545,1,0,0,0,1549,1546,1,0,0,0,1549,1547,1,0,0,0,1549,1548,1,0,0,0,1550,121,1,0,0,0,1551,1552,5,52,0,0,1552,1553,5,74,0,0,1553,1558,3,148,74,0,1554,1555,5,200,0,0,1555,1557,3,148,74,0,1556,1554,1,0,0,0,1557,1560,1,0,0,0,1558,1556,1,0,0,0,1558,1559,1,0,0,0,1559,123,1,0,0,0,1560,1558,1,0,0,0,1561,1562,5,160,0,0,1562,1567,3,150,75,0,1563,1564,5,200,0,0,1564,1566,3,150,75,0,1565,1563,1,0,0,0,1566,1569,1,0,0,0,1567,1565,1,0,0,0,1567,1568,1,0,0,0,1568,125,1,0,0,0,1569,1567,1,0,0,0,1570,1571,5,86,0,0,1571,1576,3,152,76,0,1572,1573,5,200,0,0,1573,1575,3,152,76,0,1574,1572,1,0,0,0,1575,1578,1,0,0,0,1576,1574,1,0,0,0,1576,1577,1,0,0,0,1577,127,1,0,0,0,1578,1576,1,0,0,0,1579,1580,5,50,0,0,1580,1585,3,154,77,0,1581,1582,5,200,0,0,1582,1584,3,154,77,0,1583,1581,1,0,0,0,1584,1587,1,0,0,0,1585,1583,1,0,0,0,1585,1586,1,0,0,0,1586,129,1,0,0,0,1587,1585,1,0,0,0,1588,1598,5,205,0,0,1589,1593,5,214,0,0,1590,1592,3,132,66,0,1591,1590,1,0,0,0,1592,1595,1,0,0,0,1593,1591,1,0,0,0,1593,1594,1,0,0,0,1594,1596,1,0,0,0,1595,1593,1,0,0,0,1596,1598,5,216,0,0,1597,1588,1,0,0,0,1597,1589,1,0,0,0,1598,131,1,0,0,0,1599,1604,3,84,42,0,1600,1604,3,156,78,0,1601,1604,3,88,44,0,1602,1604,3,92,46,0,1603,1599,1,0,0,0,1603,1600,1,0,0,0,1603,1601,1,0,0,0,1603,1602,1,0,0,0,1604,133,1,0,0,0,1605,1607,5,138,0,0,1606,1608,3,46,23,0,1607,1606,1,0,0,0,1607,1608,1,0,0,0,1608,1610,1,0,0,0,1609,1605,1,0,0,0,1609,1610,1,0,0,0,1610,1611,1,0,0,0,1611,1612,5,149,0,0,1612,1613,3,138,69,0,1613,1614,7,11,0,0,1614,1615,3,140,70,0,1615,1616,3,48,24,0,1616,135,1,0,0,0,1617,1618,3,140,70,0,1618,137,1,0,0,0,1619,1624,3,90,45,0,1620,1621,5,202,0,0,1621,1623,3,90,45,0,1622,1620,1,0,0,0,1623,1626,1,0,0,0,1624,1622,1,0,0,0,1624,1625,1,0,0,0,1625,139,1,0,0,0,1626,1624,1,0,0,0,1627,1632,3,90,45,0,1628,1629,5,202,0,0,1629,1631,3,90,45,0,1630,1628,1,0,0,0,1631,1634,1,0,0,0,1632,1630,1,0,0,0,1632,1633,1,0,0,0,1633,141,1,0,0,0,1634,1632,1,0,0,0,1635,1637,5,35,0,0,1636,1638,3,46,23,0,1637,1636,1,0,0,0,1637,1638,1,0,0,0,1638,1640,1,0,0,0,1639,1635,1,0,0,0,1639,1640,1,0,0,0,1640,1641,1,0,0,0,1641,1642,5,33,0,0,1642,1647,3,90,45,0,1643,1644,5,202,0,0,1644,1646,3,90,45,0,1645,1643,1,0,0,0,1646,1649,1,0,0,0,1647,1645,1,0,0,0,1647,1648,1,0,0,0,1648,1650,1,0,0,0,1649,1647,1,0,0,0,1650,1651,7,12,0,0,1651,1656,3,90,45,0,1652,1653,5,202,0,0,1653,1655,3,90,45,0,1654,1652,1,0,0,0,1655,1658,1,0,0,0,1656,1654,1,0,0,0,1656,1657,1,0,0,0,1657,1659,1,0,0,0,1658,1656,1,0,0,0,1659,1660,3,48,24,0,1660,143,1,0,0,0,1661,1666,3,90,45,0,1662,1663,5,202,0,0,1663,1665,3,90,45,0,1664,1662,1,0,0,0,1665,1668,1,0,0,0,1666,1664,1,0,0,0,1666,1667,1,0,0,0,1667,145,1,0,0,0,1668,1666,1,0,0,0,1669,1671,5,51,0,0,1670,1672,3,46,23,0,1671,1670,1,0,0,0,1671,1672,1,0,0,0,1672,1674,1,0,0,0,1673,1669,1,0,0,0,1673,1674,1,0,0,0,1674,1675,1,0,0,0,1675,1676,5,52,0,0,1676,1681,3,90,45,0,1677,1678,5,202,0,0,1678,1680,3,90,45,0,1679,1677,1,0,0,0,1680,1683,1,0,0,0,1681,1679,1,0,0,0,1681,1682,1,0,0,0,1682,1684,1,0,0,0,1683,1681,1,0,0,0,1684,1685,5,74,0,0,1685,1690,3,90,45,0,1686,1687,5,202,0,0,1687,1689,3,90,45,0,1688,1686,1,0,0,0,1689,1692,1,0,0,0,1690,1688,1,0,0,0,1690,1691,1,0,0,0,1691,1693,1,0,0,0,1692,1690,1,0,0,0,1693,1694,3,48,24,0,1694,147,1,0,0,0,1695,1700,3,90,45,0,1696,1697,5,202,0,0,1697,1699,3,90,45,0,1698,1696,1,0,0,0,1699,1702,1,0,0,0,1700,1698,1,0,0,0,1700,1701,1,0,0,0,1701,149,1,0,0,0,1702,1700,1,0,0,0,1703,1708,3,90,45,0,1704,1705,5,202,0,0,1705,1707,3,90,45,0,1706,1704,1,0,0,0,1707,1710,1,0,0,0,1708,1706,1,0,0,0,1708,1709,1,0,0,0,1709,151,1,0,0,0,1710,1708,1,0,0,0,1711,1716,3,90,45,0,1712,1713,5,202,0,0,1713,1715,3,90,45,0,1714,1712,1,0,0,0,1715,1718,1,0,0,0,1716,1714,1,0,0,0,1716,1717,1,0,0,0,1717,153,1,0,0,0,1718,1716,1,0,0,0,1719,1724,3,90,45,0,1720,1721,5,202,0,0,1721,1723,3,90,45,0,1722,1720,1,0,0,0,1723,1726,1,0,0,0,1724,1722,1,0,0,0,1724,1725,1,0,0,0,1725,155,1,0,0,0,1726,1724,1,0,0,0,1727,1730,3,158,79,0,1728,1730,3,160,80,0,1729,1727,1,0,0,0,1729,1728,1,0,0,0,1730,157,1,0,0,0,1731,1732,3,78,39,0,1732,1733,5,97,0,0,1733,1734,3,108,54,0,1734,159,1,0,0,0,1735,1736,3,78,39,0,1736,1737,3,108,54,0,1737,161,1,0,0,0,1738,1739,3,112,56,0,1739,1740,5,29,0,0,1740,1741,3,164,82,0,1741,1742,3,130,65,0,1742,163,1,0,0,0,1743,1745,5,8,0,0,1744,1743,1,0,0,0,1744,1745,1,0,0,0,1745,1747,1,0,0,0,1746,1748,3,46,23,0,1747,1746,1,0,0,0,1747,1748,1,0,0,0,1748,1750,1,0,0,0,1749,1751,3,404,202,0,1750,1749,1,0,0,0,1750,1751,1,0,0,0,1751,1754,1,0,0,0,1752,1755,3,166,83,0,1753,1755,3,118,59,0,1754,1752,1,0,0,0,1754,1753,1,0,0,0,1754,1755,1,0,0,0,1755,1759,1,0,0,0,1756,1758,3,120,60,0,1757,1756,1,0,0,0,1758,1761,1,0,0,0,1759,1757,1,0,0,0,1759,1760,1,0,0,0,1760,165,1,0,0,0,1761,1759,1,0,0,0,1762,1763,7,11,0,0,1763,1768,3,170,85,0,1764,1765,5,200,0,0,1765,1767,3,170,85,0,1766,1764,1,0,0,0,1767,1770,1,0,0,0,1768,1766,1,0,0,0,1768,1769,1,0,0,0,1769,167,1,0,0,0,1770,1768,1,0,0,0,1771,1773,5,138,0,0,1772,1774,3,46,23,0,1773,1772,1,0,0,0,1773,1774,1,0,0,0,1774,1776,1,0,0,0,1775,1771,1,0,0,0,1775,1776,1,0,0,0,1776,1777,1,0,0,0,1777,1778,5,145,0,0,1778,1779,3,90,45,0,1779,1780,7,11,0,0,1780,1781,3,90,45,0,1781,1782,3,48,24,0,1782,169,1,0,0,0,1783,1784,3,90,45,0,1784,171,1,0,0,0,1785,1788,3,178,89,0,1786,1789,5,65,0,0,1787,1789,3,416,208,0,1788,1786,1,0,0,0,1788,1787,1,0,0,0,1789,1791,1,0,0,0,1790,1792,3,186,93,0,1791,1790,1,0,0,0,1791,1792,1,0,0,0,1792,1800,1,0,0,0,1793,1796,3,174,87,0,1794,1796,3,176,88,0,1795,1793,1,0,0,0,1795,1794,1,0,0,0,1796,1797,1,0,0,0,1797,1798,3,186,93,0,1798,1800,1,0,0,0,1799,1785,1,0,0,0,1799,1795,1,0,0,0,1800,1802,1,0,0,0,1801,1803,3,394,197,0,1802,1801,1,0,0,0,1802,1803,1,0,0,0,1803,1804,1,0,0,0,1804,1805,3,130,65,0,1805,173,1,0,0,0,1806,1808,5,39,0,0,1807,1806,1,0,0,0,1807,1808,1,0,0,0,1808,1809,1,0,0,0,1809,1810,5,56,0,0,1810,175,1,0,0,0,1811,1813,3,184,92,0,1812,1811,1,0,0,0,1812,1813,1,0,0,0,1813,1815,1,0,0,0,1814,1816,5,49,0,0,1815,1814,1,0,0,0,1815,1816,1,0,0,0,1816,1818,1,0,0,0,1817,1819,5,2,0,0,1818,1817,1,0,0,0,1818,1819,1,0,0,0,1819,1821,1,0,0,0,1820,1822,7,13,0,0,1821,1820,1,0,0,0,1821,1822,1,0,0,0,1822,1824,1,0,0,0,1823,1825,7,14,0,0,1824,1823,1,0,0,0,1824,1825,1,0,0,0,1825,177,1,0,0,0,1826,1827,3,174,87,0,1827,1828,3,180,90,0,1828,1831,1,0,0,0,1829,1831,3,176,88,0,1830,1826,1,0,0,0,1830,1829,1,0,0,0,1831,1835,1,0,0,0,1832,1834,3,416,208,0,1833,1832,1,0,0,0,1834,1837,1,0,0,0,1835,1833,1,0,0,0,1835,1836,1,0,0,0,1836,179,1,0,0,0,1837,1835,1,0,0,0,1838,1839,3,182,91,0,1839,181,1,0,0,0,1840,1841,3,176,88,0,1841,1842,3,186,93,0,1842,1848,1,0,0,0,1843,1845,3,484,242,0,1844,1846,3,496,248,0,1845,1844,1,0,0,0,1845,1846,1,0,0,0,1846,1848,1,0,0,0,1847,1840,1,0,0,0,1847,1843,1,0,0,0,1848,183,1,0,0,0,1849,1850,7,15,0,0,1850,185,1,0,0,0,1851,1853,5,8,0,0,1852,1851,1,0,0,0,1852,1853,1,0,0,0,1853,1861,1,0,0,0,1854,1857,3,188,94,0,1855,1858,3,198,99,0,1856,1858,3,118,59,0,1857,1855,1,0,0,0,1857,1856,1,0,0,0,1857,1858,1,0,0,0,1858,1862,1,0,0,0,1859,1862,3,198,99,0,1860,1862,3,118,59,0,1861,1854,1,0,0,0,1861,1859,1,0,0,0,1861,1860,1,0,0,0,1862,1866,1,0,0,0,1863,1865,3,190,95,0,1864,1863,1,0,0,0,1865,1868,1,0,0,0,1866,1864,1,0,0,0,1866,1867,1,0,0,0,1867,187,1,0,0,0,1868,1866,1,0,0,0,1869,1870,5,206,0,0,1870,1871,3,44,22,0,1871,1873,5,208,0,0,1872,1874,3,44,22,0,1873,1872,1,0,0,0,1873,1874,1,0,0,0,1874,1877,1,0,0,0,1875,1877,3,44,22,0,1876,1869,1,0,0,0,1876,1875,1,0,0,0,1877,189,1,0,0,0,1878,1883,3,120,60,0,1879,1883,3,192,96,0,1880,1883,3,194,97,0,1881,1883,3,196,98,0,1882,1878,1,0,0,0,1882,1879,1,0,0,0,1882,1880,1,0,0,0,1882,1881,1,0,0,0,1883,191,1,0,0,0,1884,1885,5,27,0,0,1885,1890,3,90,45,0,1886,1887,5,202,0,0,1887,1889,3,90,45,0,1888,1886,1,0,0,0,1889,1892,1,0,0,0,1890,1888,1,0,0,0,1890,1891,1,0,0,0,1891,193,1,0,0,0,1892,1890,1,0,0,0,1893,1894,5,88,0,0,1894,1895,5,111,0,0,1895,1896,3,244,122,0,1896,195,1,0,0,0,1897,1898,5,66,0,0,1898,1899,5,24,0,0,1899,1904,3,248,124,0,1900,1901,5,200,0,0,1901,1903,3,248,124,0,1902,1900,1,0,0,0,1903,1906,1,0,0,0,1904,1902,1,0,0,0,1904,1905,1,0,0,0,1905,197,1,0,0,0,1906,1904,1,0,0,0,1907,1909,3,202,101,0,1908,1907,1,0,0,0,1909,1910,1,0,0,0,1910,1908,1,0,0,0,1910,1911,1,0,0,0,1911,1913,1,0,0,0,1912,1914,3,200,100,0,1913,1912,1,0,0,0,1913,1914,1,0,0,0,1914,1918,1,0,0,0,1915,1917,3,202,101,0,1916,1915,1,0,0,0,1917,1920,1,0,0,0,1918,1916,1,0,0,0,1918,1919,1,0,0,0,1919,1929,1,0,0,0,1920,1918,1,0,0,0,1921,1925,3,200,100,0,1922,1924,3,202,101,0,1923,1922,1,0,0,0,1924,1927,1,0,0,0,1925,1923,1,0,0,0,1925,1926,1,0,0,0,1926,1929,1,0,0,0,1927,1925,1,0,0,0,1928,1908,1,0,0,0,1928,1921,1,0,0,0,1929,199,1,0,0,0,1930,1939,3,404,202,0,1931,1933,5,113,0,0,1932,1934,5,106,0,0,1933,1932,1,0,0,0,1933,1934,1,0,0,0,1934,1940,1,0,0,0,1935,1937,5,106,0,0,1936,1938,5,113,0,0,1937,1936,1,0,0,0,1937,1938,1,0,0,0,1938,1940,1,0,0,0,1939,1931,1,0,0,0,1939,1935,1,0,0,0,1939,1940,1,0,0,0,1940,1952,1,0,0,0,1941,1943,5,113,0,0,1942,1944,5,106,0,0,1943,1942,1,0,0,0,1943,1944,1,0,0,0,1944,1950,1,0,0,0,1945,1947,5,106,0,0,1946,1948,5,113,0,0,1947,1946,1,0,0,0,1947,1948,1,0,0,0,1948,1950,1,0,0,0,1949,1941,1,0,0,0,1949,1945,1,0,0,0,1950,1952,1,0,0,0,1951,1930,1,0,0,0,1951,1949,1,0,0,0,1952,201,1,0,0,0,1953,1959,3,204,102,0,1954,1959,3,208,104,0,1955,1959,3,212,106,0,1956,1959,3,214,107,0,1957,1959,3,216,108,0,1958,1953,1,0,0,0,1958,1954,1,0,0,0,1958,1955,1,0,0,0,1958,1956,1,0,0,0,1958,1957,1,0,0,0,1959,203,1,0,0,0,1960,1965,3,206,103,0,1961,1962,5,200,0,0,1962,1964,3,220,110,0,1963,1961,1,0,0,0,1964,1967,1,0,0,0,1965,1963,1,0,0,0,1965,1966,1,0,0,0,1966,205,1,0,0,0,1967,1965,1,0,0,0,1968,1974,5,204,0,0,1969,1970,5,158,0,0,1970,1974,5,24,0,0,1971,1972,5,47,0,0,1972,1974,5,24,0,0,1973,1968,1,0,0,0,1973,1969,1,0,0,0,1973,1971,1,0,0,0,1974,1975,1,0,0,0,1975,1976,3,220,110,0,1976,207,1,0,0,0,1977,1982,3,210,105,0,1978,1979,5,200,0,0,1979,1981,3,226,113,0,1980,1978,1,0,0,0,1981,1984,1,0,0,0,1982,1980,1,0,0,0,1982,1983,1,0,0,0,1983,209,1,0,0,0,1984,1982,1,0,0,0,1985,1986,7,16,0,0,1986,1987,3,226,113,0,1987,211,1,0,0,0,1988,1989,7,17,0,0,1989,1990,3,228,114,0,1990,213,1,0,0,0,1991,1992,7,18,0,0,1992,1993,3,230,115,0,1993,215,1,0,0,0,1994,1999,3,218,109,0,1995,1996,5,200,0,0,1996,1998,3,234,117,0,1997,1995,1,0,0,0,1998,2001,1,0,0,0,1999,1997,1,0,0,0,1999,2e3,1,0,0,0,2e3,217,1,0,0,0,2001,1999,1,0,0,0,2002,2003,7,19,0,0,2003,2004,3,234,117,0,2004,219,1,0,0,0,2005,2007,5,138,0,0,2006,2008,3,46,23,0,2007,2006,1,0,0,0,2007,2008,1,0,0,0,2008,2010,1,0,0,0,2009,2005,1,0,0,0,2009,2010,1,0,0,0,2010,2011,1,0,0,0,2011,2012,5,159,0,0,2012,2016,3,90,45,0,2013,2017,5,204,0,0,2014,2015,5,158,0,0,2015,2017,5,24,0,0,2016,2013,1,0,0,0,2016,2014,1,0,0,0,2017,2018,1,0,0,0,2018,2019,3,140,70,0,2019,2020,3,48,24,0,2020,2024,1,0,0,0,2021,2024,3,222,111,0,2022,2024,3,580,290,0,2023,2009,1,0,0,0,2023,2021,1,0,0,0,2023,2022,1,0,0,0,2024,221,1,0,0,0,2025,2030,3,90,45,0,2026,2027,5,202,0,0,2027,2029,3,90,45,0,2028,2026,1,0,0,0,2029,2032,1,0,0,0,2030,2028,1,0,0,0,2030,2031,1,0,0,0,2031,223,1,0,0,0,2032,2030,1,0,0,0,2033,2035,5,138,0,0,2034,2036,3,46,23,0,2035,2034,1,0,0,0,2035,2036,1,0,0,0,2036,2038,1,0,0,0,2037,2033,1,0,0,0,2037,2038,1,0,0,0,2038,2039,1,0,0,0,2039,2040,5,147,0,0,2040,2041,3,138,69,0,2041,2042,7,16,0,0,2042,2043,3,140,70,0,2043,2044,3,48,24,0,2044,225,1,0,0,0,2045,2050,3,90,45,0,2046,2047,5,202,0,0,2047,2049,3,90,45,0,2048,2046,1,0,0,0,2049,2052,1,0,0,0,2050,2048,1,0,0,0,2050,2051,1,0,0,0,2051,227,1,0,0,0,2052,2050,1,0,0,0,2053,2058,3,90,45,0,2054,2055,5,202,0,0,2055,2057,3,90,45,0,2056,2054,1,0,0,0,2057,2060,1,0,0,0,2058,2056,1,0,0,0,2058,2059,1,0,0,0,2059,229,1,0,0,0,2060,2058,1,0,0,0,2061,2066,3,90,45,0,2062,2063,5,202,0,0,2063,2065,3,90,45,0,2064,2062,1,0,0,0,2065,2068,1,0,0,0,2066,2064,1,0,0,0,2066,2067,1,0,0,0,2067,231,1,0,0,0,2068,2066,1,0,0,0,2069,2071,5,138,0,0,2070,2072,3,46,23,0,2071,2070,1,0,0,0,2071,2072,1,0,0,0,2072,2074,1,0,0,0,2073,2069,1,0,0,0,2073,2074,1,0,0,0,2074,2075,1,0,0,0,2075,2076,5,126,0,0,2076,2077,3,138,69,0,2077,2078,7,19,0,0,2078,2079,3,140,70,0,2079,2080,3,48,24,0,2080,233,1,0,0,0,2081,2086,3,90,45,0,2082,2083,5,202,0,0,2083,2085,3,90,45,0,2084,2082,1,0,0,0,2085,2088,1,0,0,0,2086,2084,1,0,0,0,2086,2087,1,0,0,0,2087,235,1,0,0,0,2088,2086,1,0,0,0,2089,2098,3,238,119,0,2090,2093,3,240,120,0,2091,2092,5,202,0,0,2092,2094,3,240,120,0,2093,2091,1,0,0,0,2094,2095,1,0,0,0,2095,2093,1,0,0,0,2095,2096,1,0,0,0,2096,2098,1,0,0,0,2097,2089,1,0,0,0,2097,2090,1,0,0,0,2098,237,1,0,0,0,2099,2102,3,240,120,0,2100,2101,5,202,0,0,2101,2103,3,240,120,0,2102,2100,1,0,0,0,2103,2104,1,0,0,0,2104,2102,1,0,0,0,2104,2105,1,0,0,0,2105,239,1,0,0,0,2106,2107,3,90,45,0,2107,241,1,0,0,0,2108,2110,5,89,0,0,2109,2111,3,46,23,0,2110,2109,1,0,0,0,2110,2111,1,0,0,0,2111,2113,1,0,0,0,2112,2108,1,0,0,0,2112,2113,1,0,0,0,2113,2114,1,0,0,0,2114,2115,5,88,0,0,2115,2120,3,90,45,0,2116,2117,5,202,0,0,2117,2119,3,90,45,0,2118,2116,1,0,0,0,2119,2122,1,0,0,0,2120,2118,1,0,0,0,2120,2121,1,0,0,0,2121,2123,1,0,0,0,2122,2120,1,0,0,0,2123,2124,5,111,0,0,2124,2129,3,90,45,0,2125,2126,5,202,0,0,2126,2128,3,90,45,0,2127,2125,1,0,0,0,2128,2131,1,0,0,0,2129,2127,1,0,0,0,2129,2130,1,0,0,0,2130,2132,1,0,0,0,2131,2129,1,0,0,0,2132,2133,3,48,24,0,2133,243,1,0,0,0,2134,2139,3,90,45,0,2135,2136,5,202,0,0,2136,2138,3,90,45,0,2137,2135,1,0,0,0,2138,2141,1,0,0,0,2139,2137,1,0,0,0,2139,2140,1,0,0,0,2140,245,1,0,0,0,2141,2139,1,0,0,0,2142,2147,5,67,0,0,2143,2145,3,46,23,0,2144,2143,1,0,0,0,2144,2145,1,0,0,0,2145,2146,1,0,0,0,2146,2148,5,111,0,0,2147,2144,1,0,0,0,2147,2148,1,0,0,0,2148,2149,1,0,0,0,2149,2150,3,90,45,0,2150,2151,5,24,0,0,2151,2152,3,90,45,0,2152,2153,3,48,24,0,2153,247,1,0,0,0,2154,2155,3,90,45,0,2155,249,1,0,0,0,2156,2157,3,112,56,0,2157,2158,5,43,0,0,2158,2159,3,164,82,0,2159,2160,3,130,65,0,2160,251,1,0,0,0,2161,2162,3,112,56,0,2162,2163,5,28,0,0,2163,2164,3,164,82,0,2164,2165,3,130,65,0,2165,253,1,0,0,0,2166,2167,3,112,56,0,2167,2168,5,144,0,0,2168,2169,3,164,82,0,2169,2170,3,130,65,0,2170,255,1,0,0,0,2171,2172,3,112,56,0,2172,2173,5,16,0,0,2173,2174,3,164,82,0,2174,2175,3,130,65,0,2175,257,1,0,0,0,2176,2177,3,112,56,0,2177,2178,5,16,0,0,2178,2179,5,144,0,0,2179,2180,3,164,82,0,2180,2181,3,130,65,0,2181,259,1,0,0,0,2182,2183,3,178,89,0,2183,2191,5,38,0,0,2184,2186,3,186,93,0,2185,2184,1,0,0,0,2185,2186,1,0,0,0,2186,2188,1,0,0,0,2187,2189,3,394,197,0,2188,2187,1,0,0,0,2188,2189,1,0,0,0,2189,2192,1,0,0,0,2190,2192,3,262,131,0,2191,2185,1,0,0,0,2191,2190,1,0,0,0,2192,2193,1,0,0,0,2193,2194,3,130,65,0,2194,261,1,0,0,0,2195,2198,3,264,132,0,2196,2198,3,266,133,0,2197,2195,1,0,0,0,2197,2196,1,0,0,0,2198,263,1,0,0,0,2199,2201,3,186,93,0,2200,2199,1,0,0,0,2200,2201,1,0,0,0,2201,2202,1,0,0,0,2202,2208,5,74,0,0,2203,2205,5,8,0,0,2204,2206,5,74,0,0,2205,2204,1,0,0,0,2205,2206,1,0,0,0,2206,2208,1,0,0,0,2207,2200,1,0,0,0,2207,2203,1,0,0,0,2207,2208,1,0,0,0,2208,2209,1,0,0,0,2209,2210,3,268,134,0,2210,2211,5,154,0,0,2211,2212,3,268,134,0,2212,265,1,0,0,0,2213,2215,3,186,93,0,2214,2213,1,0,0,0,2214,2215,1,0,0,0,2215,2216,1,0,0,0,2216,2217,5,196,0,0,2217,2218,3,268,134,0,2218,2219,5,200,0,0,2219,2224,3,268,134,0,2220,2221,5,200,0,0,2221,2223,3,268,134,0,2222,2220,1,0,0,0,2223,2226,1,0,0,0,2224,2222,1,0,0,0,2224,2225,1,0,0,0,2225,2227,1,0,0,0,2226,2224,1,0,0,0,2227,2228,5,197,0,0,2228,267,1,0,0,0,2229,2230,3,270,135,0,2230,269,1,0,0,0,2231,2233,3,272,136,0,2232,2231,1,0,0,0,2232,2233,1,0,0,0,2233,2237,1,0,0,0,2234,2235,3,44,22,0,2235,2236,7,17,0,0,2236,2238,1,0,0,0,2237,2234,1,0,0,0,2237,2238,1,0,0,0,2238,2239,1,0,0,0,2239,2240,3,228,114,0,2240,271,1,0,0,0,2241,2242,3,274,137,0,2242,273,1,0,0,0,2243,2244,3,404,202,0,2244,275,1,0,0,0,2245,2246,3,178,89,0,2246,2247,5,22,0,0,2247,2248,3,278,139,0,2248,2249,3,130,65,0,2249,277,1,0,0,0,2250,2256,3,186,93,0,2251,2252,5,111,0,0,2252,2253,3,268,134,0,2253,2254,5,207,0,0,2254,2255,3,268,134,0,2255,2257,1,0,0,0,2256,2251,1,0,0,0,2256,2257,1,0,0,0,2257,2271,1,0,0,0,2258,2260,5,8,0,0,2259,2258,1,0,0,0,2259,2260,1,0,0,0,2260,2268,1,0,0,0,2261,2263,5,111,0,0,2262,2261,1,0,0,0,2262,2263,1,0,0,0,2263,2264,1,0,0,0,2264,2265,3,268,134,0,2265,2266,5,207,0,0,2266,2267,3,268,134,0,2267,2269,1,0,0,0,2268,2262,1,0,0,0,2268,2269,1,0,0,0,2269,2271,1,0,0,0,2270,2250,1,0,0,0,2270,2259,1,0,0,0,2271,279,1,0,0,0,2272,2273,3,178,89,0,2273,2274,5,150,0,0,2274,2275,3,282,141,0,2275,2276,3,130,65,0,2276,281,1,0,0,0,2277,2283,3,186,93,0,2278,2279,5,69,0,0,2279,2280,3,268,134,0,2280,2281,5,152,0,0,2281,2282,3,268,134,0,2282,2284,1,0,0,0,2283,2278,1,0,0,0,2283,2284,1,0,0,0,2284,2298,1,0,0,0,2285,2287,5,8,0,0,2286,2285,1,0,0,0,2286,2287,1,0,0,0,2287,2295,1,0,0,0,2288,2290,5,69,0,0,2289,2288,1,0,0,0,2289,2290,1,0,0,0,2290,2291,1,0,0,0,2291,2292,3,268,134,0,2292,2293,5,152,0,0,2293,2294,3,268,134,0,2294,2296,1,0,0,0,2295,2289,1,0,0,0,2295,2296,1,0,0,0,2296,2298,1,0,0,0,2297,2277,1,0,0,0,2297,2286,1,0,0,0,2298,283,1,0,0,0,2299,2300,3,112,56,0,2300,2301,5,20,0,0,2301,2302,3,164,82,0,2302,2303,3,130,65,0,2303,285,1,0,0,0,2304,2305,3,178,89,0,2305,2306,5,143,0,0,2306,2308,3,186,93,0,2307,2309,3,394,197,0,2308,2307,1,0,0,0,2308,2309,1,0,0,0,2309,2310,1,0,0,0,2310,2311,3,130,65,0,2311,287,1,0,0,0,2312,2313,3,112,56,0,2313,2314,5,75,0,0,2314,2315,3,164,82,0,2315,2316,3,290,145,0,2316,289,1,0,0,0,2317,2323,5,205,0,0,2318,2319,5,214,0,0,2319,2320,3,292,146,0,2320,2321,5,216,0,0,2321,2323,1,0,0,0,2322,2317,1,0,0,0,2322,2318,1,0,0,0,2323,291,1,0,0,0,2324,2327,3,132,66,0,2325,2327,3,294,147,0,2326,2324,1,0,0,0,2326,2325,1,0,0,0,2327,2330,1,0,0,0,2328,2326,1,0,0,0,2328,2329,1,0,0,0,2329,2332,1,0,0,0,2330,2328,1,0,0,0,2331,2333,3,296,148,0,2332,2331,1,0,0,0,2332,2333,1,0,0,0,2333,293,1,0,0,0,2334,2335,3,78,39,0,2335,2336,5,134,0,0,2336,2337,3,108,54,0,2337,295,1,0,0,0,2338,2339,3,78,39,0,2339,2340,3,0,0,0,2340,297,1,0,0,0,2341,2342,3,178,89,0,2342,2343,5,63,0,0,2343,2345,3,186,93,0,2344,2346,3,394,197,0,2345,2344,1,0,0,0,2345,2346,1,0,0,0,2346,2347,1,0,0,0,2347,2348,3,290,145,0,2348,299,1,0,0,0,2349,2350,3,112,56,0,2350,2351,5,121,0,0,2351,2352,3,164,82,0,2352,2353,3,290,145,0,2353,301,1,0,0,0,2354,2355,3,178,89,0,2355,2356,5,23,0,0,2356,2358,3,186,93,0,2357,2359,3,394,197,0,2358,2357,1,0,0,0,2358,2359,1,0,0,0,2359,2360,1,0,0,0,2360,2361,3,290,145,0,2361,303,1,0,0,0,2362,2363,3,178,89,0,2363,2365,5,87,0,0,2364,2366,7,8,0,0,2365,2364,1,0,0,0,2365,2366,1,0,0,0,2366,2367,1,0,0,0,2367,2369,3,186,93,0,2368,2370,3,394,197,0,2369,2368,1,0,0,0,2369,2370,1,0,0,0,2370,2371,1,0,0,0,2371,2372,3,290,145,0,2372,305,1,0,0,0,2373,2374,3,0,0,0,2374,307,1,0,0,0,2375,2376,3,348,174,0,2376,309,1,0,0,0,2377,2378,3,2,1,0,2378,311,1,0,0,0,2379,2380,3,2,1,0,2380,313,1,0,0,0,2381,2382,3,90,45,0,2382,315,1,0,0,0,2383,2384,3,978,489,0,2384,317,1,0,0,0,2385,2386,3,306,153,0,2386,2387,5,200,0,0,2387,2388,3,320,160,0,2388,319,1,0,0,0,2389,2390,3,4,2,0,2390,321,1,0,0,0,2391,2392,3,324,162,0,2392,323,1,0,0,0,2393,2394,3,326,163,0,2394,325,1,0,0,0,2395,2396,3,18,9,0,2396,327,1,0,0,0,2397,2398,3,330,165,0,2398,329,1,0,0,0,2399,2400,3,332,166,0,2400,331,1,0,0,0,2401,2402,3,334,167,0,2402,333,1,0,0,0,2403,2404,3,336,168,0,2404,335,1,0,0,0,2405,2406,3,338,169,0,2406,337,1,0,0,0,2407,2408,3,314,157,0,2408,339,1,0,0,0,2409,2414,3,90,45,0,2410,2411,5,202,0,0,2411,2413,3,90,45,0,2412,2410,1,0,0,0,2413,2416,1,0,0,0,2414,2412,1,0,0,0,2414,2415,1,0,0,0,2415,341,1,0,0,0,2416,2414,1,0,0,0,2417,2420,3,238,119,0,2418,2420,3,236,118,0,2419,2417,1,0,0,0,2419,2418,1,0,0,0,2420,343,1,0,0,0,2421,2422,3,346,173,0,2422,345,1,0,0,0,2423,2424,3,90,45,0,2424,347,1,0,0,0,2425,2426,3,90,45,0,2426,349,1,0,0,0,2427,2428,3,352,176,0,2428,351,1,0,0,0,2429,2430,3,20,10,0,2430,353,1,0,0,0,2431,2436,3,90,45,0,2432,2433,5,202,0,0,2433,2435,3,90,45,0,2434,2432,1,0,0,0,2435,2438,1,0,0,0,2436,2434,1,0,0,0,2436,2437,1,0,0,0,2437,355,1,0,0,0,2438,2436,1,0,0,0,2439,2440,3,90,45,0,2440,357,1,0,0,0,2441,2442,3,26,13,0,2442,359,1,0,0,0,2443,2444,3,90,45,0,2444,361,1,0,0,0,2445,2446,3,364,182,0,2446,363,1,0,0,0,2447,2448,5,214,0,0,2448,2449,3,292,146,0,2449,2450,5,216,0,0,2450,365,1,0,0,0,2451,2452,7,8,0,0,2452,367,1,0,0,0,2453,2455,5,221,0,0,2454,2453,1,0,0,0,2454,2455,1,0,0,0,2455,2456,1,0,0,0,2456,2457,5,202,0,0,2457,2460,7,20,0,0,2458,2460,5,222,0,0,2459,2454,1,0,0,0,2459,2458,1,0,0,0,2460,369,1,0,0,0,2461,2462,3,112,56,0,2462,2463,5,84,0,0,2463,2464,3,164,82,0,2464,2465,3,130,65,0,2465,371,1,0,0,0,2466,2467,3,178,89,0,2467,2468,5,70,0,0,2468,2469,3,376,188,0,2469,2470,3,130,65,0,2470,373,1,0,0,0,2471,2472,3,178,89,0,2472,2473,5,150,0,0,2473,2474,5,70,0,0,2474,2475,3,376,188,0,2475,2476,3,130,65,0,2476,375,1,0,0,0,2477,2479,3,186,93,0,2478,2480,3,394,197,0,2479,2478,1,0,0,0,2479,2480,1,0,0,0,2480,2483,1,0,0,0,2481,2482,5,111,0,0,2482,2484,3,378,189,0,2483,2481,1,0,0,0,2483,2484,1,0,0,0,2484,2490,1,0,0,0,2485,2486,5,74,0,0,2486,2487,3,384,192,0,2487,2488,5,154,0,0,2488,2489,3,384,192,0,2489,2491,1,0,0,0,2490,2485,1,0,0,0,2490,2491,1,0,0,0,2491,2517,1,0,0,0,2492,2494,5,8,0,0,2493,2492,1,0,0,0,2493,2494,1,0,0,0,2494,2495,1,0,0,0,2495,2496,3,384,192,0,2496,2497,5,154,0,0,2497,2498,3,384,192,0,2498,2517,1,0,0,0,2499,2501,3,496,248,0,2500,2499,1,0,0,0,2500,2501,1,0,0,0,2501,2503,1,0,0,0,2502,2504,3,394,197,0,2503,2502,1,0,0,0,2503,2504,1,0,0,0,2504,2507,1,0,0,0,2505,2506,5,111,0,0,2506,2508,3,646,323,0,2507,2505,1,0,0,0,2507,2508,1,0,0,0,2508,2514,1,0,0,0,2509,2510,5,74,0,0,2510,2511,3,384,192,0,2511,2512,5,154,0,0,2512,2513,3,384,192,0,2513,2515,1,0,0,0,2514,2509,1,0,0,0,2514,2515,1,0,0,0,2515,2517,1,0,0,0,2516,2477,1,0,0,0,2516,2493,1,0,0,0,2516,2500,1,0,0,0,2517,377,1,0,0,0,2518,2519,3,380,190,0,2519,379,1,0,0,0,2520,2522,3,46,23,0,2521,2520,1,0,0,0,2521,2522,1,0,0,0,2522,2523,1,0,0,0,2523,2540,3,394,197,0,2524,2526,3,46,23,0,2525,2524,1,0,0,0,2525,2526,1,0,0,0,2526,2527,1,0,0,0,2527,2529,3,382,191,0,2528,2530,3,394,197,0,2529,2528,1,0,0,0,2529,2530,1,0,0,0,2530,2540,1,0,0,0,2531,2533,3,222,111,0,2532,2534,3,404,202,0,2533,2532,1,0,0,0,2533,2534,1,0,0,0,2534,2540,1,0,0,0,2535,2537,3,404,202,0,2536,2538,3,222,111,0,2537,2536,1,0,0,0,2537,2538,1,0,0,0,2538,2540,1,0,0,0,2539,2521,1,0,0,0,2539,2525,1,0,0,0,2539,2531,1,0,0,0,2539,2535,1,0,0,0,2540,381,1,0,0,0,2541,2543,3,202,101,0,2542,2541,1,0,0,0,2543,2544,1,0,0,0,2544,2542,1,0,0,0,2544,2545,1,0,0,0,2545,2547,1,0,0,0,2546,2548,3,200,100,0,2547,2546,1,0,0,0,2547,2548,1,0,0,0,2548,2552,1,0,0,0,2549,2551,3,202,101,0,2550,2549,1,0,0,0,2551,2554,1,0,0,0,2552,2550,1,0,0,0,2552,2553,1,0,0,0,2553,2562,1,0,0,0,2554,2552,1,0,0,0,2555,2557,3,200,100,0,2556,2558,3,202,101,0,2557,2556,1,0,0,0,2558,2559,1,0,0,0,2559,2557,1,0,0,0,2559,2560,1,0,0,0,2560,2562,1,0,0,0,2561,2542,1,0,0,0,2561,2555,1,0,0,0,2562,383,1,0,0,0,2563,2564,3,386,193,0,2564,385,1,0,0,0,2565,2570,3,90,45,0,2566,2567,5,202,0,0,2567,2569,3,90,45,0,2568,2566,1,0,0,0,2569,2572,1,0,0,0,2570,2568,1,0,0,0,2570,2571,1,0,0,0,2571,387,1,0,0,0,2572,2570,1,0,0,0,2573,2574,3,390,195,0,2574,389,1,0,0,0,2575,2576,3,392,196,0,2576,391,1,0,0,0,2577,2578,3,90,45,0,2578,393,1,0,0,0,2579,2580,3,396,198,0,2580,395,1,0,0,0,2581,2588,5,207,0,0,2582,2588,5,184,0,0,2583,2585,5,46,0,0,2584,2586,7,21,0,0,2585,2584,1,0,0,0,2585,2586,1,0,0,0,2586,2588,1,0,0,0,2587,2581,1,0,0,0,2587,2582,1,0,0,0,2587,2583,1,0,0,0,2588,2589,1,0,0,0,2589,2590,3,0,0,0,2590,397,1,0,0,0,2591,2594,3,400,200,0,2592,2594,3,402,201,0,2593,2591,1,0,0,0,2593,2592,1,0,0,0,2594,399,1,0,0,0,2595,2597,5,103,0,0,2596,2598,3,46,23,0,2597,2596,1,0,0,0,2597,2598,1,0,0,0,2598,2599,1,0,0,0,2599,2600,3,210,105,0,2600,2601,3,130,65,0,2601,401,1,0,0,0,2602,2604,5,103,0,0,2603,2605,3,46,23,0,2604,2603,1,0,0,0,2604,2605,1,0,0,0,2605,2606,1,0,0,0,2606,2607,3,408,204,0,2607,2608,3,130,65,0,2608,403,1,0,0,0,2609,2610,3,406,203,0,2610,405,1,0,0,0,2611,2612,3,408,204,0,2612,407,1,0,0,0,2613,2617,5,211,0,0,2614,2615,3,410,205,0,2615,2616,5,181,0,0,2616,2618,1,0,0,0,2617,2614,1,0,0,0,2617,2618,1,0,0,0,2618,2619,1,0,0,0,2619,2620,3,410,205,0,2620,2621,5,212,0,0,2621,409,1,0,0,0,2622,2625,3,28,14,0,2623,2625,3,10,5,0,2624,2622,1,0,0,0,2624,2623,1,0,0,0,2625,411,1,0,0,0,2626,2627,3,112,56,0,2627,2628,5,101,0,0,2628,2629,3,164,82,0,2629,2630,3,130,65,0,2630,413,1,0,0,0,2631,2632,5,192,0,0,2632,2636,3,418,209,0,2633,2634,5,192,0,0,2634,2636,3,956,478,0,2635,2631,1,0,0,0,2635,2633,1,0,0,0,2636,415,1,0,0,0,2637,2638,5,192,0,0,2638,2642,3,418,209,0,2639,2640,5,192,0,0,2640,2642,3,956,478,0,2641,2637,1,0,0,0,2641,2639,1,0,0,0,2642,417,1,0,0,0,2643,2644,3,222,111,0,2644,419,1,0,0,0,2645,2647,3,416,208,0,2646,2645,1,0,0,0,2647,2650,1,0,0,0,2648,2646,1,0,0,0,2648,2649,1,0,0,0,2649,2651,1,0,0,0,2650,2648,1,0,0,0,2651,2652,7,22,0,0,2652,2662,3,422,211,0,2653,2654,5,1,0,0,2654,2659,3,56,28,0,2655,2656,5,200,0,0,2656,2658,3,56,28,0,2657,2655,1,0,0,0,2658,2661,1,0,0,0,2659,2657,1,0,0,0,2659,2660,1,0,0,0,2660,2663,1,0,0,0,2661,2659,1,0,0,0,2662,2653,1,0,0,0,2662,2663,1,0,0,0,2663,2664,1,0,0,0,2664,2665,3,424,212,0,2665,421,1,0,0,0,2666,2668,3,46,23,0,2667,2666,1,0,0,0,2667,2668,1,0,0,0,2668,2672,1,0,0,0,2669,2673,5,204,0,0,2670,2671,5,158,0,0,2671,2673,5,24,0,0,2672,2669,1,0,0,0,2672,2670,1,0,0,0,2673,2675,1,0,0,0,2674,2667,1,0,0,0,2674,2675,1,0,0,0,2675,2676,1,0,0,0,2676,2677,3,222,111,0,2677,423,1,0,0,0,2678,2699,5,205,0,0,2679,2683,5,214,0,0,2680,2682,3,426,213,0,2681,2680,1,0,0,0,2682,2685,1,0,0,0,2683,2681,1,0,0,0,2683,2684,1,0,0,0,2684,2686,1,0,0,0,2685,2683,1,0,0,0,2686,2699,5,216,0,0,2687,2694,5,214,0,0,2688,2693,3,470,235,0,2689,2693,3,962,481,0,2690,2693,3,88,44,0,2691,2693,3,92,46,0,2692,2688,1,0,0,0,2692,2689,1,0,0,0,2692,2690,1,0,0,0,2692,2691,1,0,0,0,2693,2696,1,0,0,0,2694,2692,1,0,0,0,2694,2695,1,0,0,0,2695,2697,1,0,0,0,2696,2694,1,0,0,0,2697,2699,5,216,0,0,2698,2678,1,0,0,0,2698,2679,1,0,0,0,2698,2687,1,0,0,0,2699,425,1,0,0,0,2700,2705,3,84,42,0,2701,2705,3,428,214,0,2702,2705,3,88,44,0,2703,2705,3,92,46,0,2704,2700,1,0,0,0,2704,2701,1,0,0,0,2704,2702,1,0,0,0,2704,2703,1,0,0,0,2705,427,1,0,0,0,2706,2707,3,430,215,0,2707,429,1,0,0,0,2708,2710,5,65,0,0,2709,2708,1,0,0,0,2709,2710,1,0,0,0,2710,2712,1,0,0,0,2711,2713,7,19,0,0,2712,2711,1,0,0,0,2712,2713,1,0,0,0,2713,2714,1,0,0,0,2714,2716,3,234,117,0,2715,2717,3,198,99,0,2716,2715,1,0,0,0,2716,2717,1,0,0,0,2717,2719,1,0,0,0,2718,2720,3,394,197,0,2719,2718,1,0,0,0,2719,2720,1,0,0,0,2720,2721,1,0,0,0,2721,2722,3,424,212,0,2722,431,1,0,0,0,2723,2725,3,416,208,0,2724,2723,1,0,0,0,2725,2728,1,0,0,0,2726,2724,1,0,0,0,2726,2727,1,0,0,0,2727,2729,1,0,0,0,2728,2726,1,0,0,0,2729,2730,3,436,218,0,2730,2731,3,438,219,0,2731,433,1,0,0,0,2732,2734,5,141,0,0,2733,2732,1,0,0,0,2733,2734,1,0,0,0,2734,2735,1,0,0,0,2735,2739,5,94,0,0,2736,2738,3,416,208,0,2737,2736,1,0,0,0,2738,2741,1,0,0,0,2739,2737,1,0,0,0,2739,2740,1,0,0,0,2740,2742,1,0,0,0,2741,2739,1,0,0,0,2742,2743,3,436,218,0,2743,2744,3,438,219,0,2744,435,1,0,0,0,2745,2747,5,115,0,0,2746,2748,3,46,23,0,2747,2746,1,0,0,0,2747,2748,1,0,0,0,2748,437,1,0,0,0,2749,2759,5,205,0,0,2750,2754,5,214,0,0,2751,2753,3,446,223,0,2752,2751,1,0,0,0,2753,2756,1,0,0,0,2754,2752,1,0,0,0,2754,2755,1,0,0,0,2755,2757,1,0,0,0,2756,2754,1,0,0,0,2757,2759,5,216,0,0,2758,2749,1,0,0,0,2758,2750,1,0,0,0,2759,439,1,0,0,0,2760,2761,3,78,39,0,2761,2762,5,68,0,0,2762,2763,3,0,0,0,2763,2764,5,205,0,0,2764,441,1,0,0,0,2765,2767,3,46,23,0,2766,2765,1,0,0,0,2766,2767,1,0,0,0,2767,2768,1,0,0,0,2768,2770,5,74,0,0,2769,2766,1,0,0,0,2769,2770,1,0,0,0,2770,2771,1,0,0,0,2771,2776,3,90,45,0,2772,2773,5,200,0,0,2773,2775,3,90,45,0,2774,2772,1,0,0,0,2775,2778,1,0,0,0,2776,2774,1,0,0,0,2776,2777,1,0,0,0,2777,2779,1,0,0,0,2778,2776,1,0,0,0,2779,2780,5,154,0,0,2780,2785,3,90,45,0,2781,2782,5,200,0,0,2782,2784,3,90,45,0,2783,2781,1,0,0,0,2784,2787,1,0,0,0,2785,2783,1,0,0,0,2785,2786,1,0,0,0,2786,443,1,0,0,0,2787,2785,1,0,0,0,2788,2789,3,60,30,0,2789,445,1,0,0,0,2790,2795,3,448,224,0,2791,2795,3,440,220,0,2792,2795,3,88,44,0,2793,2795,3,92,46,0,2794,2790,1,0,0,0,2794,2791,1,0,0,0,2794,2792,1,0,0,0,2794,2793,1,0,0,0,2795,447,1,0,0,0,2796,2799,3,78,39,0,2797,2800,3,450,225,0,2798,2800,3,452,226,0,2799,2797,1,0,0,0,2799,2798,1,0,0,0,2800,449,1,0,0,0,2801,2832,3,432,216,0,2802,2832,3,434,217,0,2803,2832,3,60,30,0,2804,2832,3,54,27,0,2805,2832,3,522,261,0,2806,2832,3,526,263,0,2807,2832,3,538,269,0,2808,2832,3,540,270,0,2809,2832,3,564,282,0,2810,2832,3,568,284,0,2811,2832,3,582,291,0,2812,2832,3,632,316,0,2813,2832,3,596,298,0,2814,2832,3,572,286,0,2815,2832,3,654,327,0,2816,2832,3,830,415,0,2817,2832,3,768,384,0,2818,2832,3,842,421,0,2819,2832,3,850,425,0,2820,2832,3,890,445,0,2821,2832,3,894,447,0,2822,2832,3,906,453,0,2823,2832,3,910,455,0,2824,2832,3,918,459,0,2825,2832,3,924,462,0,2826,2832,3,946,473,0,2827,2832,3,950,475,0,2828,2832,3,954,477,0,2829,2832,3,626,313,0,2830,2832,3,966,483,0,2831,2801,1,0,0,0,2831,2802,1,0,0,0,2831,2803,1,0,0,0,2831,2804,1,0,0,0,2831,2805,1,0,0,0,2831,2806,1,0,0,0,2831,2807,1,0,0,0,2831,2808,1,0,0,0,2831,2809,1,0,0,0,2831,2810,1,0,0,0,2831,2811,1,0,0,0,2831,2812,1,0,0,0,2831,2813,1,0,0,0,2831,2814,1,0,0,0,2831,2815,1,0,0,0,2831,2816,1,0,0,0,2831,2817,1,0,0,0,2831,2818,1,0,0,0,2831,2819,1,0,0,0,2831,2820,1,0,0,0,2831,2821,1,0,0,0,2831,2822,1,0,0,0,2831,2823,1,0,0,0,2831,2824,1,0,0,0,2831,2825,1,0,0,0,2831,2826,1,0,0,0,2831,2827,1,0,0,0,2831,2828,1,0,0,0,2831,2829,1,0,0,0,2831,2830,1,0,0,0,2832,451,1,0,0,0,2833,2836,3,510,255,0,2834,2836,3,512,256,0,2835,2833,1,0,0,0,2835,2834,1,0,0,0,2836,453,1,0,0,0,2837,2838,7,23,0,0,2838,455,1,0,0,0,2839,2840,3,416,208,0,2840,457,1,0,0,0,2841,2843,3,454,227,0,2842,2841,1,0,0,0,2842,2843,1,0,0,0,2843,2847,1,0,0,0,2844,2846,3,456,228,0,2845,2844,1,0,0,0,2846,2849,1,0,0,0,2847,2845,1,0,0,0,2847,2848,1,0,0,0,2848,459,1,0,0,0,2849,2847,1,0,0,0,2850,2851,3,462,231,0,2851,2852,3,464,232,0,2852,461,1,0,0,0,2853,2855,3,46,23,0,2854,2853,1,0,0,0,2854,2855,1,0,0,0,2855,2857,1,0,0,0,2856,2858,3,520,260,0,2857,2856,1,0,0,0,2857,2858,1,0,0,0,2858,463,1,0,0,0,2859,2869,5,205,0,0,2860,2864,5,214,0,0,2861,2863,3,466,233,0,2862,2861,1,0,0,0,2863,2866,1,0,0,0,2864,2862,1,0,0,0,2864,2865,1,0,0,0,2865,2867,1,0,0,0,2866,2864,1,0,0,0,2867,2869,5,216,0,0,2868,2859,1,0,0,0,2868,2860,1,0,0,0,2869,465,1,0,0,0,2870,2881,3,92,46,0,2871,2872,3,78,39,0,2872,2873,3,468,234,0,2873,2881,1,0,0,0,2874,2876,3,556,278,0,2875,2874,1,0,0,0,2875,2876,1,0,0,0,2876,2877,1,0,0,0,2877,2878,3,78,39,0,2878,2879,3,512,256,0,2879,2881,1,0,0,0,2880,2870,1,0,0,0,2880,2871,1,0,0,0,2880,2875,1,0,0,0,2881,467,1,0,0,0,2882,2887,5,7,0,0,2883,2884,5,206,0,0,2884,2885,3,44,22,0,2885,2886,5,208,0,0,2886,2888,1,0,0,0,2887,2883,1,0,0,0,2887,2888,1,0,0,0,2888,2890,1,0,0,0,2889,2891,3,44,22,0,2890,2889,1,0,0,0,2890,2891,1,0,0,0,2891,2892,1,0,0,0,2892,2893,5,71,0,0,2893,2894,3,90,45,0,2894,2895,3,48,24,0,2895,2901,1,0,0,0,2896,2897,5,164,0,0,2897,2901,3,518,259,0,2898,2901,3,450,225,0,2899,2901,3,510,255,0,2900,2882,1,0,0,0,2900,2896,1,0,0,0,2900,2898,1,0,0,0,2900,2899,1,0,0,0,2901,469,1,0,0,0,2902,2903,3,78,39,0,2903,2904,3,450,225,0,2904,471,1,0,0,0,2905,2906,3,78,39,0,2906,2907,5,164,0,0,2907,2908,3,518,259,0,2908,473,1,0,0,0,2909,2910,3,78,39,0,2910,2911,3,510,255,0,2911,475,1,0,0,0,2912,2913,3,78,39,0,2913,2914,3,512,256,0,2914,477,1,0,0,0,2915,2916,3,78,39,0,2916,2917,3,514,257,0,2917,479,1,0,0,0,2918,2919,3,78,39,0,2919,2920,3,516,258,0,2920,481,1,0,0,0,2921,2923,3,184,92,0,2922,2921,1,0,0,0,2922,2923,1,0,0,0,2923,2925,1,0,0,0,2924,2926,5,49,0,0,2925,2924,1,0,0,0,2925,2926,1,0,0,0,2926,2928,1,0,0,0,2927,2929,7,23,0,0,2928,2927,1,0,0,0,2928,2929,1,0,0,0,2929,2931,1,0,0,0,2930,2932,5,40,0,0,2931,2930,1,0,0,0,2931,2932,1,0,0,0,2932,483,1,0,0,0,2933,2935,3,482,241,0,2934,2936,5,127,0,0,2935,2934,1,0,0,0,2935,2936,1,0,0,0,2936,485,1,0,0,0,2937,2938,5,56,0,0,2938,2939,3,180,90,0,2939,487,1,0,0,0,2940,2941,3,416,208,0,2941,489,1,0,0,0,2942,2945,3,486,243,0,2943,2945,3,484,242,0,2944,2942,1,0,0,0,2944,2943,1,0,0,0,2945,491,1,0,0,0,2946,2950,3,490,245,0,2947,2949,3,488,244,0,2948,2947,1,0,0,0,2949,2952,1,0,0,0,2950,2948,1,0,0,0,2950,2951,1,0,0,0,2951,493,1,0,0,0,2952,2950,1,0,0,0,2953,2955,3,496,248,0,2954,2953,1,0,0,0,2954,2955,1,0,0,0,2955,2956,1,0,0,0,2956,2957,3,498,249,0,2957,495,1,0,0,0,2958,2960,3,46,23,0,2959,2961,3,198,99,0,2960,2959,1,0,0,0,2960,2961,1,0,0,0,2961,2964,1,0,0,0,2962,2964,3,198,99,0,2963,2958,1,0,0,0,2963,2962,1,0,0,0,2964,497,1,0,0,0,2965,2967,3,394,197,0,2966,2965,1,0,0,0,2966,2967,1,0,0,0,2967,2968,1,0,0,0,2968,2969,3,500,250,0,2969,499,1,0,0,0,2970,2971,3,464,232,0,2971,501,1,0,0,0,2972,2973,3,482,241,0,2973,2974,3,494,247,0,2974,503,1,0,0,0,2975,2978,3,486,243,0,2976,2978,3,482,241,0,2977,2975,1,0,0,0,2977,2976,1,0,0,0,2978,2979,1,0,0,0,2979,2980,5,127,0,0,2980,2981,3,494,247,0,2981,505,1,0,0,0,2982,2983,3,486,243,0,2983,2984,3,186,93,0,2984,2985,3,498,249,0,2985,507,1,0,0,0,2986,2990,3,228,114,0,2987,2989,3,202,101,0,2988,2987,1,0,0,0,2989,2992,1,0,0,0,2990,2988,1,0,0,0,2990,2991,1,0,0,0,2991,2993,1,0,0,0,2992,2990,1,0,0,0,2993,2994,3,500,250,0,2994,509,1,0,0,0,2995,3004,3,504,252,0,2996,3004,3,506,253,0,2997,3004,3,524,262,0,2998,3004,3,534,267,0,2999,3004,3,592,296,0,3e3,3004,3,594,297,0,3001,3004,3,968,484,0,3002,3004,3,502,251,0,3003,2995,1,0,0,0,3003,2996,1,0,0,0,3003,2997,1,0,0,0,3003,2998,1,0,0,0,3003,2999,1,0,0,0,3003,3e3,1,0,0,0,3003,3001,1,0,0,0,3003,3002,1,0,0,0,3004,511,1,0,0,0,3005,3008,3,514,257,0,3006,3008,3,516,258,0,3007,3005,1,0,0,0,3007,3006,1,0,0,0,3008,513,1,0,0,0,3009,3025,3,546,273,0,3010,3025,3,548,274,0,3011,3025,3,550,275,0,3012,3025,3,554,277,0,3013,3025,3,566,283,0,3014,3025,3,570,285,0,3015,3025,3,934,467,0,3016,3025,3,952,476,0,3017,3025,3,578,289,0,3018,3025,3,584,292,0,3019,3025,3,612,306,0,3020,3025,3,628,314,0,3021,3025,3,634,317,0,3022,3025,3,642,321,0,3023,3025,3,644,322,0,3024,3009,1,0,0,0,3024,3010,1,0,0,0,3024,3011,1,0,0,0,3024,3012,1,0,0,0,3024,3013,1,0,0,0,3024,3014,1,0,0,0,3024,3015,1,0,0,0,3024,3016,1,0,0,0,3024,3017,1,0,0,0,3024,3018,1,0,0,0,3024,3019,1,0,0,0,3024,3020,1,0,0,0,3024,3021,1,0,0,0,3024,3022,1,0,0,0,3024,3023,1,0,0,0,3025,515,1,0,0,0,3026,3043,3,672,336,0,3027,3043,3,832,416,0,3028,3043,3,796,398,0,3029,3043,3,844,422,0,3030,3043,3,878,439,0,3031,3043,3,892,446,0,3032,3043,3,896,448,0,3033,3043,3,908,454,0,3034,3043,3,912,456,0,3035,3043,3,920,460,0,3036,3043,3,948,474,0,3037,3043,3,676,338,0,3038,3043,3,800,400,0,3039,3043,3,922,461,0,3040,3043,3,846,423,0,3041,3043,3,880,440,0,3042,3026,1,0,0,0,3042,3027,1,0,0,0,3042,3028,1,0,0,0,3042,3029,1,0,0,0,3042,3030,1,0,0,0,3042,3031,1,0,0,0,3042,3032,1,0,0,0,3042,3033,1,0,0,0,3042,3034,1,0,0,0,3042,3035,1,0,0,0,3042,3036,1,0,0,0,3042,3037,1,0,0,0,3042,3038,1,0,0,0,3042,3039,1,0,0,0,3042,3040,1,0,0,0,3042,3041,1,0,0,0,3043,517,1,0,0,0,3044,3066,3,508,254,0,3045,3066,3,504,252,0,3046,3066,3,524,262,0,3047,3066,3,592,296,0,3048,3066,3,594,297,0,3049,3066,3,546,273,0,3050,3066,3,548,274,0,3051,3066,3,550,275,0,3052,3066,3,554,277,0,3053,3066,3,566,283,0,3054,3066,3,570,285,0,3055,3066,3,934,467,0,3056,3066,3,952,476,0,3057,3066,3,578,289,0,3058,3066,3,584,292,0,3059,3066,3,612,306,0,3060,3066,3,628,314,0,3061,3066,3,634,317,0,3062,3066,3,642,321,0,3063,3066,3,644,322,0,3064,3066,3,516,258,0,3065,3044,1,0,0,0,3065,3045,1,0,0,0,3065,3046,1,0,0,0,3065,3047,1,0,0,0,3065,3048,1,0,0,0,3065,3049,1,0,0,0,3065,3050,1,0,0,0,3065,3051,1,0,0,0,3065,3052,1,0,0,0,3065,3053,1,0,0,0,3065,3054,1,0,0,0,3065,3055,1,0,0,0,3065,3056,1,0,0,0,3065,3057,1,0,0,0,3065,3058,1,0,0,0,3065,3059,1,0,0,0,3065,3060,1,0,0,0,3065,3061,1,0,0,0,3065,3062,1,0,0,0,3065,3063,1,0,0,0,3065,3064,1,0,0,0,3066,519,1,0,0,0,3067,3068,7,11,0,0,3068,3073,3,170,85,0,3069,3070,5,200,0,0,3070,3072,3,170,85,0,3071,3069,1,0,0,0,3072,3075,1,0,0,0,3073,3071,1,0,0,0,3073,3074,1,0,0,0,3074,521,1,0,0,0,3075,3073,1,0,0,0,3076,3077,3,458,229,0,3077,3078,5,19,0,0,3078,3079,5,45,0,0,3079,3080,3,460,230,0,3080,523,1,0,0,0,3081,3082,3,492,246,0,3082,3083,5,19,0,0,3083,3084,3,494,247,0,3084,525,1,0,0,0,3085,3087,3,456,228,0,3086,3085,1,0,0,0,3087,3090,1,0,0,0,3088,3086,1,0,0,0,3088,3089,1,0,0,0,3089,3091,1,0,0,0,3090,3088,1,0,0,0,3091,3092,5,58,0,0,3092,3093,5,45,0,0,3093,3094,3,462,231,0,3094,3095,3,528,264,0,3095,527,1,0,0,0,3096,3107,5,205,0,0,3097,3102,5,214,0,0,3098,3101,3,444,222,0,3099,3101,3,530,265,0,3100,3098,1,0,0,0,3100,3099,1,0,0,0,3101,3104,1,0,0,0,3102,3100,1,0,0,0,3102,3103,1,0,0,0,3103,3105,1,0,0,0,3104,3102,1,0,0,0,3105,3107,5,216,0,0,3106,3096,1,0,0,0,3106,3097,1,0,0,0,3107,529,1,0,0,0,3108,3109,3,78,39,0,3109,3110,3,532,266,0,3110,531,1,0,0,0,3111,3113,5,58,0,0,3112,3111,1,0,0,0,3112,3113,1,0,0,0,3113,3114,1,0,0,0,3114,3115,3,494,247,0,3115,533,1,0,0,0,3116,3117,3,492,246,0,3117,3118,5,58,0,0,3118,3119,3,494,247,0,3119,535,1,0,0,0,3120,3122,3,454,227,0,3121,3120,1,0,0,0,3121,3122,1,0,0,0,3122,3125,1,0,0,0,3123,3124,5,82,0,0,3124,3126,3,542,271,0,3125,3123,1,0,0,0,3125,3126,1,0,0,0,3126,3130,1,0,0,0,3127,3129,3,456,228,0,3128,3127,1,0,0,0,3129,3132,1,0,0,0,3130,3128,1,0,0,0,3130,3131,1,0,0,0,3131,537,1,0,0,0,3132,3130,1,0,0,0,3133,3134,3,536,268,0,3134,3135,5,110,0,0,3135,3136,5,45,0,0,3136,3137,3,460,230,0,3137,539,1,0,0,0,3138,3140,3,454,227,0,3139,3138,1,0,0,0,3139,3140,1,0,0,0,3140,3141,1,0,0,0,3141,3145,5,82,0,0,3142,3144,3,456,228,0,3143,3142,1,0,0,0,3144,3147,1,0,0,0,3145,3143,1,0,0,0,3145,3146,1,0,0,0,3146,3148,1,0,0,0,3147,3145,1,0,0,0,3148,3149,5,45,0,0,3149,3150,3,460,230,0,3150,3151,3,542,271,0,3151,541,1,0,0,0,3152,3153,3,980,490,0,3153,543,1,0,0,0,3154,3156,3,484,242,0,3155,3157,5,82,0,0,3156,3155,1,0,0,0,3156,3157,1,0,0,0,3157,3159,1,0,0,0,3158,3160,3,552,276,0,3159,3158,1,0,0,0,3159,3160,1,0,0,0,3160,3164,1,0,0,0,3161,3163,3,488,244,0,3162,3161,1,0,0,0,3163,3166,1,0,0,0,3164,3162,1,0,0,0,3164,3165,1,0,0,0,3165,545,1,0,0,0,3166,3164,1,0,0,0,3167,3168,3,544,272,0,3168,3169,5,110,0,0,3169,3170,3,494,247,0,3170,547,1,0,0,0,3171,3172,3,484,242,0,3172,3176,5,82,0,0,3173,3175,3,488,244,0,3174,3173,1,0,0,0,3175,3178,1,0,0,0,3176,3174,1,0,0,0,3176,3177,1,0,0,0,3177,3179,1,0,0,0,3178,3176,1,0,0,0,3179,3180,3,494,247,0,3180,549,1,0,0,0,3181,3183,3,484,242,0,3182,3184,5,82,0,0,3183,3182,1,0,0,0,3183,3184,1,0,0,0,3184,3185,1,0,0,0,3185,3189,3,552,276,0,3186,3188,3,488,244,0,3187,3186,1,0,0,0,3188,3191,1,0,0,0,3189,3187,1,0,0,0,3189,3190,1,0,0,0,3190,3192,1,0,0,0,3191,3189,1,0,0,0,3192,3193,3,494,247,0,3193,551,1,0,0,0,3194,3195,7,24,0,0,3195,553,1,0,0,0,3196,3197,3,544,272,0,3197,3206,5,59,0,0,3198,3200,3,228,114,0,3199,3201,3,198,99,0,3200,3199,1,0,0,0,3200,3201,1,0,0,0,3201,3207,1,0,0,0,3202,3204,5,110,0,0,3203,3205,3,496,248,0,3204,3203,1,0,0,0,3204,3205,1,0,0,0,3205,3207,1,0,0,0,3206,3198,1,0,0,0,3206,3202,1,0,0,0,3207,3208,1,0,0,0,3208,3209,3,498,249,0,3209,555,1,0,0,0,3210,3211,5,152,0,0,3211,3212,3,558,279,0,3212,557,1,0,0,0,3213,3214,3,560,280,0,3214,559,1,0,0,0,3215,3216,3,562,281,0,3216,561,1,0,0,0,3217,3219,3,404,202,0,3218,3217,1,0,0,0,3218,3219,1,0,0,0,3219,563,1,0,0,0,3220,3221,3,536,268,0,3221,3222,5,91,0,0,3222,3223,5,45,0,0,3223,3224,3,460,230,0,3224,565,1,0,0,0,3225,3226,3,544,272,0,3226,3227,5,91,0,0,3227,3228,3,494,247,0,3228,567,1,0,0,0,3229,3230,3,536,268,0,3230,3231,5,117,0,0,3231,3232,5,45,0,0,3232,3233,3,460,230,0,3233,569,1,0,0,0,3234,3235,3,544,272,0,3235,3236,5,117,0,0,3236,3237,3,494,247,0,3237,571,1,0,0,0,3238,3239,3,458,229,0,3239,3240,5,119,0,0,3240,3241,5,45,0,0,3241,3242,3,460,230,0,3242,3243,3,574,287,0,3243,573,1,0,0,0,3244,3245,3,576,288,0,3245,575,1,0,0,0,3246,3247,3,988,494,0,3247,577,1,0,0,0,3248,3249,3,544,272,0,3249,3250,5,119,0,0,3250,3251,3,494,247,0,3251,579,1,0,0,0,3252,3253,5,217,0,0,3253,3254,3,90,45,0,3254,581,1,0,0,0,3255,3256,3,536,268,0,3256,3257,5,37,0,0,3257,3258,5,45,0,0,3258,3259,3,460,230,0,3259,583,1,0,0,0,3260,3274,3,544,272,0,3261,3263,5,37,0,0,3262,3264,3,496,248,0,3263,3262,1,0,0,0,3263,3264,1,0,0,0,3264,3266,1,0,0,0,3265,3267,3,394,197,0,3266,3265,1,0,0,0,3266,3267,1,0,0,0,3267,3270,1,0,0,0,3268,3269,5,36,0,0,3269,3271,3,586,293,0,3270,3268,1,0,0,0,3270,3271,1,0,0,0,3271,3275,1,0,0,0,3272,3273,5,36,0,0,3273,3275,3,586,293,0,3274,3261,1,0,0,0,3274,3272,1,0,0,0,3275,3276,1,0,0,0,3276,3277,3,500,250,0,3277,585,1,0,0,0,3278,3281,3,588,294,0,3279,3281,3,590,295,0,3280,3278,1,0,0,0,3280,3279,1,0,0,0,3281,587,1,0,0,0,3282,3283,3,268,134,0,3283,3284,5,154,0,0,3284,3285,3,268,134,0,3285,589,1,0,0,0,3286,3287,5,196,0,0,3287,3288,3,268,134,0,3288,3289,5,200,0,0,3289,3294,3,268,134,0,3290,3291,5,200,0,0,3291,3293,3,268,134,0,3292,3290,1,0,0,0,3293,3296,1,0,0,0,3294,3292,1,0,0,0,3294,3295,1,0,0,0,3295,3297,1,0,0,0,3296,3294,1,0,0,0,3297,3298,5,197,0,0,3298,591,1,0,0,0,3299,3304,3,492,246,0,3300,3302,5,22,0,0,3301,3303,3,496,248,0,3302,3301,1,0,0,0,3302,3303,1,0,0,0,3303,3305,1,0,0,0,3304,3300,1,0,0,0,3304,3305,1,0,0,0,3305,3306,1,0,0,0,3306,3307,5,21,0,0,3307,3308,3,268,134,0,3308,3309,5,207,0,0,3309,3310,3,268,134,0,3310,3311,3,500,250,0,3311,593,1,0,0,0,3312,3317,3,492,246,0,3313,3315,5,150,0,0,3314,3316,3,496,248,0,3315,3314,1,0,0,0,3315,3316,1,0,0,0,3316,3318,1,0,0,0,3317,3313,1,0,0,0,3317,3318,1,0,0,0,3318,3319,1,0,0,0,3319,3320,5,69,0,0,3320,3321,3,268,134,0,3321,3322,5,152,0,0,3322,3323,3,268,134,0,3323,3324,3,500,250,0,3324,595,1,0,0,0,3325,3326,3,536,268,0,3326,3327,5,85,0,0,3327,3328,5,45,0,0,3328,3329,3,462,231,0,3329,3330,3,598,299,0,3330,597,1,0,0,0,3331,3341,5,205,0,0,3332,3336,5,214,0,0,3333,3335,3,600,300,0,3334,3333,1,0,0,0,3335,3338,1,0,0,0,3336,3334,1,0,0,0,3336,3337,1,0,0,0,3337,3339,1,0,0,0,3338,3336,1,0,0,0,3339,3341,5,216,0,0,3340,3331,1,0,0,0,3340,3332,1,0,0,0,3341,599,1,0,0,0,3342,3352,3,470,235,0,3343,3352,3,472,236,0,3344,3352,3,602,301,0,3345,3347,3,556,278,0,3346,3345,1,0,0,0,3346,3347,1,0,0,0,3347,3348,1,0,0,0,3348,3352,3,606,303,0,3349,3352,3,88,44,0,3350,3352,3,92,46,0,3351,3342,1,0,0,0,3351,3343,1,0,0,0,3351,3344,1,0,0,0,3351,3346,1,0,0,0,3351,3349,1,0,0,0,3351,3350,1,0,0,0,3352,601,1,0,0,0,3353,3354,3,78,39,0,3354,3355,3,604,302,0,3355,603,1,0,0,0,3356,3362,3,504,252,0,3357,3362,3,524,262,0,3358,3362,3,534,267,0,3359,3362,3,592,296,0,3360,3362,3,594,297,0,3361,3356,1,0,0,0,3361,3357,1,0,0,0,3361,3358,1,0,0,0,3361,3359,1,0,0,0,3361,3360,1,0,0,0,3362,605,1,0,0,0,3363,3364,3,78,39,0,3364,3365,3,608,304,0,3365,607,1,0,0,0,3366,3370,3,610,305,0,3367,3370,3,514,257,0,3368,3370,3,516,258,0,3369,3366,1,0,0,0,3369,3367,1,0,0,0,3369,3368,1,0,0,0,3370,609,1,0,0,0,3371,3372,5,56,0,0,3372,3373,3,494,247,0,3373,611,1,0,0,0,3374,3375,3,544,272,0,3375,3376,5,85,0,0,3376,3377,3,614,307,0,3377,3378,3,598,299,0,3378,613,1,0,0,0,3379,3381,3,496,248,0,3380,3379,1,0,0,0,3380,3381,1,0,0,0,3381,3383,1,0,0,0,3382,3384,3,394,197,0,3383,3382,1,0,0,0,3383,3384,1,0,0,0,3384,3387,1,0,0,0,3385,3386,5,36,0,0,3386,3388,3,616,308,0,3387,3385,1,0,0,0,3387,3388,1,0,0,0,3388,3391,1,0,0,0,3389,3391,3,616,308,0,3390,3380,1,0,0,0,3390,3389,1,0,0,0,3391,615,1,0,0,0,3392,3395,3,618,309,0,3393,3395,3,620,310,0,3394,3392,1,0,0,0,3394,3393,1,0,0,0,3395,617,1,0,0,0,3396,3397,3,622,311,0,3397,3398,5,154,0,0,3398,3399,3,622,311,0,3399,619,1,0,0,0,3400,3401,5,196,0,0,3401,3402,3,622,311,0,3402,3403,5,200,0,0,3403,3408,3,622,311,0,3404,3405,5,200,0,0,3405,3407,3,622,311,0,3406,3404,1,0,0,0,3407,3410,1,0,0,0,3408,3406,1,0,0,0,3408,3409,1,0,0,0,3409,3411,1,0,0,0,3410,3408,1,0,0,0,3411,3412,5,197,0,0,3412,621,1,0,0,0,3413,3414,3,624,312,0,3414,623,1,0,0,0,3415,3417,3,272,136,0,3416,3415,1,0,0,0,3416,3417,1,0,0,0,3417,3421,1,0,0,0,3418,3419,3,44,22,0,3419,3420,7,17,0,0,3420,3422,1,0,0,0,3421,3418,1,0,0,0,3421,3422,1,0,0,0,3422,3423,1,0,0,0,3423,3424,3,228,114,0,3424,625,1,0,0,0,3425,3426,3,536,268,0,3426,3427,5,10,0,0,3427,3428,5,45,0,0,3428,3429,3,460,230,0,3429,627,1,0,0,0,3430,3431,3,544,272,0,3431,3432,3,630,315,0,3432,3433,3,500,250,0,3433,629,1,0,0,0,3434,3436,5,10,0,0,3435,3437,3,496,248,0,3436,3435,1,0,0,0,3436,3437,1,0,0,0,3437,3440,1,0,0,0,3438,3439,5,9,0,0,3439,3441,3,586,293,0,3440,3438,1,0,0,0,3440,3441,1,0,0,0,3441,3445,1,0,0,0,3442,3443,5,9,0,0,3443,3445,3,586,293,0,3444,3434,1,0,0,0,3444,3442,1,0,0,0,3445,631,1,0,0,0,3446,3447,3,536,268,0,3447,3448,5,70,0,0,3448,3449,5,45,0,0,3449,3450,3,460,230,0,3450,633,1,0,0,0,3451,3452,3,544,272,0,3452,3453,5,99,0,0,3453,3454,3,636,318,0,3454,3455,3,464,232,0,3455,635,1,0,0,0,3456,3458,3,496,248,0,3457,3456,1,0,0,0,3457,3458,1,0,0,0,3458,3460,1,0,0,0,3459,3461,3,394,197,0,3460,3459,1,0,0,0,3460,3461,1,0,0,0,3461,3464,1,0,0,0,3462,3463,5,111,0,0,3463,3465,3,646,323,0,3464,3462,1,0,0,0,3464,3465,1,0,0,0,3465,3471,1,0,0,0,3466,3467,5,74,0,0,3467,3468,3,638,319,0,3468,3469,5,154,0,0,3469,3470,3,638,319,0,3470,3472,1,0,0,0,3471,3466,1,0,0,0,3471,3472,1,0,0,0,3472,3478,1,0,0,0,3473,3474,3,638,319,0,3474,3475,5,154,0,0,3475,3476,3,638,319,0,3476,3478,1,0,0,0,3477,3457,1,0,0,0,3477,3473,1,0,0,0,3478,637,1,0,0,0,3479,3480,3,640,320,0,3480,639,1,0,0,0,3481,3482,3,228,114,0,3482,641,1,0,0,0,3483,3484,3,544,272,0,3484,3485,5,70,0,0,3485,3486,3,376,188,0,3486,3487,3,464,232,0,3487,643,1,0,0,0,3488,3489,3,544,272,0,3489,3490,5,150,0,0,3490,3491,5,70,0,0,3491,3492,3,376,188,0,3492,3493,3,464,232,0,3493,645,1,0,0,0,3494,3495,3,648,324,0,3495,647,1,0,0,0,3496,3497,3,380,190,0,3497,649,1,0,0,0,3498,3501,3,90,45,0,3499,3501,3,652,326,0,3500,3498,1,0,0,0,3500,3499,1,0,0,0,3501,651,1,0,0,0,3502,3503,3,240,120,0,3503,3504,5,202,0,0,3504,3506,1,0,0,0,3505,3502,1,0,0,0,3506,3507,1,0,0,0,3507,3505,1,0,0,0,3507,3508,1,0,0,0,3508,3509,1,0,0,0,3509,3510,3,240,120,0,3510,3511,5,202,0,0,3511,653,1,0,0,0,3512,3513,3,536,268,0,3513,3514,5,4,0,0,3514,3515,5,45,0,0,3515,3516,3,462,231,0,3516,3517,3,656,328,0,3517,655,1,0,0,0,3518,3528,5,205,0,0,3519,3523,5,214,0,0,3520,3522,3,658,329,0,3521,3520,1,0,0,0,3522,3525,1,0,0,0,3523,3521,1,0,0,0,3523,3524,1,0,0,0,3524,3526,1,0,0,0,3525,3523,1,0,0,0,3526,3528,5,216,0,0,3527,3518,1,0,0,0,3527,3519,1,0,0,0,3528,657,1,0,0,0,3529,3549,3,660,330,0,3530,3534,3,664,332,0,3531,3533,3,668,334,0,3532,3531,1,0,0,0,3533,3536,1,0,0,0,3534,3532,1,0,0,0,3534,3535,1,0,0,0,3535,3549,1,0,0,0,3536,3534,1,0,0,0,3537,3539,3,556,278,0,3538,3537,1,0,0,0,3538,3539,1,0,0,0,3539,3540,1,0,0,0,3540,3544,3,662,331,0,3541,3543,3,668,334,0,3542,3541,1,0,0,0,3543,3546,1,0,0,0,3544,3542,1,0,0,0,3544,3545,1,0,0,0,3545,3549,1,0,0,0,3546,3544,1,0,0,0,3547,3549,3,670,335,0,3548,3529,1,0,0,0,3548,3530,1,0,0,0,3548,3538,1,0,0,0,3548,3547,1,0,0,0,3549,659,1,0,0,0,3550,3560,3,92,46,0,3551,3560,3,88,44,0,3552,3560,3,470,235,0,3553,3560,3,472,236,0,3554,3560,3,474,237,0,3555,3557,3,556,278,0,3556,3555,1,0,0,0,3556,3557,1,0,0,0,3557,3558,1,0,0,0,3558,3560,3,478,239,0,3559,3550,1,0,0,0,3559,3551,1,0,0,0,3559,3552,1,0,0,0,3559,3553,1,0,0,0,3559,3554,1,0,0,0,3559,3556,1,0,0,0,3560,661,1,0,0,0,3561,3564,3,480,240,0,3562,3564,3,666,333,0,3563,3561,1,0,0,0,3563,3562,1,0,0,0,3564,663,1,0,0,0,3565,3566,3,78,39,0,3566,3567,5,69,0,0,3567,3568,3,90,45,0,3568,3569,3,48,24,0,3569,665,1,0,0,0,3570,3571,3,78,39,0,3571,3572,3,680,340,0,3572,667,1,0,0,0,3573,3574,3,78,39,0,3574,3575,3,758,379,0,3575,669,1,0,0,0,3576,3577,3,78,39,0,3577,3578,3,766,383,0,3578,671,1,0,0,0,3579,3580,3,544,272,0,3580,3581,5,4,0,0,3581,3582,3,674,337,0,3582,3583,3,656,328,0,3583,673,1,0,0,0,3584,3586,3,496,248,0,3585,3584,1,0,0,0,3585,3586,1,0,0,0,3586,3588,1,0,0,0,3587,3589,3,394,197,0,3588,3587,1,0,0,0,3588,3589,1,0,0,0,3589,675,1,0,0,0,3590,3591,3,544,272,0,3591,3592,5,118,0,0,3592,3593,3,678,339,0,3593,3594,3,656,328,0,3594,677,1,0,0,0,3595,3597,3,228,114,0,3596,3598,3,198,99,0,3597,3596,1,0,0,0,3597,3598,1,0,0,0,3598,3604,1,0,0,0,3599,3601,5,4,0,0,3600,3602,3,496,248,0,3601,3600,1,0,0,0,3601,3602,1,0,0,0,3602,3604,1,0,0,0,3603,3595,1,0,0,0,3603,3599,1,0,0,0,3604,3606,1,0,0,0,3605,3607,3,394,197,0,3606,3605,1,0,0,0,3606,3607,1,0,0,0,3607,679,1,0,0,0,3608,3617,3,686,343,0,3609,3617,3,714,357,0,3610,3617,3,698,349,0,3611,3617,3,728,364,0,3612,3617,3,738,369,0,3613,3617,3,740,370,0,3614,3617,3,750,375,0,3615,3617,3,752,376,0,3616,3608,1,0,0,0,3616,3609,1,0,0,0,3616,3610,1,0,0,0,3616,3611,1,0,0,0,3616,3612,1,0,0,0,3616,3613,1,0,0,0,3616,3614,1,0,0,0,3616,3615,1,0,0,0,3617,681,1,0,0,0,3618,3620,5,4,0,0,3619,3621,3,496,248,0,3620,3619,1,0,0,0,3620,3621,1,0,0,0,3621,683,1,0,0,0,3622,3624,3,544,272,0,3623,3625,3,682,341,0,3624,3623,1,0,0,0,3624,3625,1,0,0,0,3625,685,1,0,0,0,3626,3631,3,690,345,0,3627,3631,3,692,346,0,3628,3631,3,694,347,0,3629,3631,3,696,348,0,3630,3626,1,0,0,0,3630,3627,1,0,0,0,3630,3628,1,0,0,0,3630,3629,1,0,0,0,3631,687,1,0,0,0,3632,3634,3,482,241,0,3633,3635,5,82,0,0,3634,3633,1,0,0,0,3634,3635,1,0,0,0,3635,3637,1,0,0,0,3636,3638,3,552,276,0,3637,3636,1,0,0,0,3637,3638,1,0,0,0,3638,3642,1,0,0,0,3639,3641,3,488,244,0,3640,3639,1,0,0,0,3641,3644,1,0,0,0,3642,3640,1,0,0,0,3642,3643,1,0,0,0,3643,689,1,0,0,0,3644,3642,1,0,0,0,3645,3646,3,688,344,0,3646,3648,5,98,0,0,3647,3649,3,496,248,0,3648,3647,1,0,0,0,3648,3649,1,0,0,0,3649,3650,1,0,0,0,3650,3651,3,656,328,0,3651,691,1,0,0,0,3652,3653,3,688,344,0,3653,3655,5,44,0,0,3654,3656,3,496,248,0,3655,3654,1,0,0,0,3655,3656,1,0,0,0,3656,3657,1,0,0,0,3657,3658,3,656,328,0,3658,693,1,0,0,0,3659,3660,3,688,344,0,3660,3662,5,92,0,0,3661,3663,3,496,248,0,3662,3661,1,0,0,0,3662,3663,1,0,0,0,3663,3664,1,0,0,0,3664,3665,3,656,328,0,3665,695,1,0,0,0,3666,3667,3,688,344,0,3667,3669,5,72,0,0,3668,3670,3,496,248,0,3669,3668,1,0,0,0,3669,3670,1,0,0,0,3670,3671,1,0,0,0,3671,3672,3,656,328,0,3672,697,1,0,0,0,3673,3674,3,544,272,0,3674,3675,3,700,350,0,3675,3676,3,656,328,0,3676,699,1,0,0,0,3677,3679,3,682,341,0,3678,3677,1,0,0,0,3678,3679,1,0,0,0,3679,3680,1,0,0,0,3680,3681,5,3,0,0,3681,3682,3,702,351,0,3682,701,1,0,0,0,3683,3686,3,704,352,0,3684,3685,5,168,0,0,3685,3687,3,720,360,0,3686,3684,1,0,0,0,3686,3687,1,0,0,0,3687,703,1,0,0,0,3688,3689,3,706,353,0,3689,705,1,0,0,0,3690,3699,3,380,190,0,3691,3693,3,46,23,0,3692,3691,1,0,0,0,3692,3693,1,0,0,0,3693,3695,1,0,0,0,3694,3696,3,382,191,0,3695,3694,1,0,0,0,3695,3696,1,0,0,0,3696,3697,1,0,0,0,3697,3699,3,708,354,0,3698,3690,1,0,0,0,3698,3692,1,0,0,0,3699,707,1,0,0,0,3700,3701,3,710,355,0,3701,709,1,0,0,0,3702,3703,3,712,356,0,3703,711,1,0,0,0,3704,3705,7,25,0,0,3705,3709,3,40,20,0,3706,3707,5,171,0,0,3707,3709,3,42,21,0,3708,3704,1,0,0,0,3708,3706,1,0,0,0,3709,713,1,0,0,0,3710,3713,3,544,272,0,3711,3714,3,682,341,0,3712,3714,3,674,337,0,3713,3711,1,0,0,0,3713,3712,1,0,0,0,3714,3715,1,0,0,0,3715,3723,5,136,0,0,3716,3718,3,720,360,0,3717,3719,3,718,359,0,3718,3717,1,0,0,0,3718,3719,1,0,0,0,3719,3724,1,0,0,0,3720,3721,3,726,363,0,3721,3722,3,718,359,0,3722,3724,1,0,0,0,3723,3716,1,0,0,0,3723,3720,1,0,0,0,3724,3725,1,0,0,0,3725,3726,3,656,328,0,3726,715,1,0,0,0,3727,3729,3,682,341,0,3728,3727,1,0,0,0,3728,3729,1,0,0,0,3729,3730,1,0,0,0,3730,3731,5,136,0,0,3731,3733,3,720,360,0,3732,3734,3,718,359,0,3733,3732,1,0,0,0,3733,3734,1,0,0,0,3734,717,1,0,0,0,3735,3736,5,168,0,0,3736,3739,3,720,360,0,3737,3738,5,154,0,0,3738,3740,3,720,360,0,3739,3737,1,0,0,0,3739,3740,1,0,0,0,3740,3746,1,0,0,0,3741,3742,3,726,363,0,3742,3743,5,154,0,0,3743,3744,3,720,360,0,3744,3746,1,0,0,0,3745,3735,1,0,0,0,3745,3741,1,0,0,0,3746,719,1,0,0,0,3747,3748,3,722,361,0,3748,721,1,0,0,0,3749,3750,3,724,362,0,3750,723,1,0,0,0,3751,3752,3,0,0,0,3752,725,1,0,0,0,3753,3754,3,982,491,0,3754,727,1,0,0,0,3755,3756,3,544,272,0,3756,3757,3,730,365,0,3757,3758,3,656,328,0,3758,729,1,0,0,0,3759,3761,3,682,341,0,3760,3759,1,0,0,0,3760,3761,1,0,0,0,3761,3762,1,0,0,0,3762,3763,5,15,0,0,3763,3764,3,732,366,0,3764,3765,3,340,170,0,3765,3766,5,184,0,0,3766,3767,3,720,360,0,3767,731,1,0,0,0,3768,3769,3,734,367,0,3769,733,1,0,0,0,3770,3771,3,736,368,0,3771,3772,5,202,0,0,3772,3774,1,0,0,0,3773,3770,1,0,0,0,3773,3774,1,0,0,0,3774,735,1,0,0,0,3775,3776,3,986,493,0,3776,737,1,0,0,0,3777,3779,3,544,272,0,3778,3780,3,682,341,0,3779,3778,1,0,0,0,3779,3780,1,0,0,0,3780,3781,1,0,0,0,3781,3783,5,151,0,0,3782,3784,3,720,360,0,3783,3782,1,0,0,0,3783,3784,1,0,0,0,3784,3785,1,0,0,0,3785,3786,3,656,328,0,3786,739,1,0,0,0,3787,3788,3,684,342,0,3788,3789,5,77,0,0,3789,3790,3,742,371,0,3790,3796,3,744,372,0,3791,3794,5,55,0,0,3792,3795,3,744,372,0,3793,3795,3,748,374,0,3794,3792,1,0,0,0,3794,3793,1,0,0,0,3795,3797,1,0,0,0,3796,3791,1,0,0,0,3796,3797,1,0,0,0,3797,741,1,0,0,0,3798,3799,3,0,0,0,3799,743,1,0,0,0,3800,3801,3,746,373,0,3801,745,1,0,0,0,3802,3804,5,4,0,0,3803,3805,3,496,248,0,3804,3803,1,0,0,0,3804,3805,1,0,0,0,3805,3807,1,0,0,0,3806,3802,1,0,0,0,3806,3807,1,0,0,0,3807,3808,1,0,0,0,3808,3812,5,214,0,0,3809,3811,3,658,329,0,3810,3809,1,0,0,0,3811,3814,1,0,0,0,3812,3810,1,0,0,0,3812,3813,1,0,0,0,3813,3815,1,0,0,0,3814,3812,1,0,0,0,3815,3816,5,216,0,0,3816,747,1,0,0,0,3817,3818,3,740,370,0,3818,749,1,0,0,0,3819,3824,3,684,342,0,3820,3821,5,172,0,0,3821,3825,3,742,371,0,3822,3823,5,96,0,0,3823,3825,3,726,363,0,3824,3820,1,0,0,0,3824,3822,1,0,0,0,3825,3826,1,0,0,0,3826,3831,3,744,372,0,3827,3828,5,161,0,0,3828,3829,3,742,371,0,3829,3830,5,205,0,0,3830,3832,1,0,0,0,3831,3827,1,0,0,0,3831,3832,1,0,0,0,3832,751,1,0,0,0,3833,3834,3,684,342,0,3834,3835,5,71,0,0,3835,3836,3,754,377,0,3836,3837,5,80,0,0,3837,3838,3,720,360,0,3838,3839,3,744,372,0,3839,753,1,0,0,0,3840,3842,3,496,248,0,3841,3840,1,0,0,0,3841,3842,1,0,0,0,3842,755,1,0,0,0,3843,3845,3,496,248,0,3844,3843,1,0,0,0,3844,3845,1,0,0,0,3845,757,1,0,0,0,3846,3850,3,760,380,0,3847,3850,3,762,381,0,3848,3850,3,764,382,0,3849,3846,1,0,0,0,3849,3847,1,0,0,0,3849,3848,1,0,0,0,3850,3851,1,0,0,0,3851,3852,3,500,250,0,3852,759,1,0,0,0,3853,3854,3,560,280,0,3854,3855,5,152,0,0,3855,3856,3,268,134,0,3856,761,1,0,0,0,3857,3858,3,810,405,0,3858,3859,5,152,0,0,3859,3860,3,824,412,0,3860,763,1,0,0,0,3861,3862,5,55,0,0,3862,3863,3,824,412,0,3863,765,1,0,0,0,3864,3866,5,150,0,0,3865,3867,3,496,248,0,3866,3865,1,0,0,0,3866,3867,1,0,0,0,3867,3869,1,0,0,0,3868,3864,1,0,0,0,3868,3869,1,0,0,0,3869,3870,1,0,0,0,3870,3871,5,69,0,0,3871,3872,3,340,170,0,3872,3873,3,810,405,0,3873,3874,5,152,0,0,3874,3875,3,824,412,0,3875,3876,3,500,250,0,3876,767,1,0,0,0,3877,3878,3,536,268,0,3878,3879,5,142,0,0,3879,3880,5,45,0,0,3880,3881,3,462,231,0,3881,3882,3,770,385,0,3882,769,1,0,0,0,3883,3896,5,205,0,0,3884,3886,5,116,0,0,3885,3884,1,0,0,0,3885,3886,1,0,0,0,3886,3887,1,0,0,0,3887,3891,5,214,0,0,3888,3890,3,772,386,0,3889,3888,1,0,0,0,3890,3893,1,0,0,0,3891,3889,1,0,0,0,3891,3892,1,0,0,0,3892,3894,1,0,0,0,3893,3891,1,0,0,0,3894,3896,5,216,0,0,3895,3883,1,0,0,0,3895,3885,1,0,0,0,3896,771,1,0,0,0,3897,3919,3,660,330,0,3898,3900,3,556,278,0,3899,3898,1,0,0,0,3899,3900,1,0,0,0,3900,3901,1,0,0,0,3901,3905,3,480,240,0,3902,3904,3,794,397,0,3903,3902,1,0,0,0,3904,3907,1,0,0,0,3905,3903,1,0,0,0,3905,3906,1,0,0,0,3906,3919,1,0,0,0,3907,3905,1,0,0,0,3908,3919,3,792,396,0,3909,3913,3,774,387,0,3910,3912,3,780,390,0,3911,3910,1,0,0,0,3912,3915,1,0,0,0,3913,3911,1,0,0,0,3913,3914,1,0,0,0,3914,3919,1,0,0,0,3915,3913,1,0,0,0,3916,3919,3,776,388,0,3917,3919,3,778,389,0,3918,3897,1,0,0,0,3918,3899,1,0,0,0,3918,3908,1,0,0,0,3918,3909,1,0,0,0,3918,3916,1,0,0,0,3918,3917,1,0,0,0,3919,773,1,0,0,0,3920,3921,3,78,39,0,3921,3922,5,57,0,0,3922,3923,3,782,391,0,3923,775,1,0,0,0,3924,3925,3,78,39,0,3925,3926,5,53,0,0,3926,3927,3,782,391,0,3927,777,1,0,0,0,3928,3929,3,78,39,0,3929,3930,5,61,0,0,3930,3931,3,782,391,0,3931,779,1,0,0,0,3932,3936,3,78,39,0,3933,3937,3,762,381,0,3934,3935,5,152,0,0,3935,3937,3,824,412,0,3936,3933,1,0,0,0,3936,3934,1,0,0,0,3937,3938,1,0,0,0,3938,3939,5,205,0,0,3939,781,1,0,0,0,3940,3941,3,976,488,0,3941,3942,5,205,0,0,3942,3948,1,0,0,0,3943,3948,3,784,392,0,3944,3948,3,786,393,0,3945,3948,3,788,394,0,3946,3948,3,790,395,0,3947,3940,1,0,0,0,3947,3943,1,0,0,0,3947,3944,1,0,0,0,3947,3945,1,0,0,0,3947,3946,1,0,0,0,3948,783,1,0,0,0,3949,3950,3,678,339,0,3950,3951,3,656,328,0,3951,785,1,0,0,0,3952,3953,3,700,350,0,3953,3954,3,656,328,0,3954,787,1,0,0,0,3955,3956,3,716,358,0,3956,3957,3,656,328,0,3957,789,1,0,0,0,3958,3959,3,730,365,0,3959,3960,3,656,328,0,3960,791,1,0,0,0,3961,3962,3,78,39,0,3962,3963,3,802,401,0,3963,793,1,0,0,0,3964,3965,3,78,39,0,3965,3966,3,804,402,0,3966,795,1,0,0,0,3967,3968,3,544,272,0,3968,3969,5,142,0,0,3969,3970,3,674,337,0,3970,3971,3,798,399,0,3971,797,1,0,0,0,3972,3985,5,205,0,0,3973,3975,5,116,0,0,3974,3973,1,0,0,0,3974,3975,1,0,0,0,3975,3976,1,0,0,0,3976,3980,5,214,0,0,3977,3979,3,772,386,0,3978,3977,1,0,0,0,3979,3982,1,0,0,0,3980,3978,1,0,0,0,3980,3981,1,0,0,0,3981,3983,1,0,0,0,3982,3980,1,0,0,0,3983,3985,5,216,0,0,3984,3972,1,0,0,0,3984,3974,1,0,0,0,3985,799,1,0,0,0,3986,3987,3,544,272,0,3987,3996,5,60,0,0,3988,3990,3,228,114,0,3989,3991,3,198,99,0,3990,3989,1,0,0,0,3990,3991,1,0,0,0,3991,3997,1,0,0,0,3992,3994,5,142,0,0,3993,3995,3,496,248,0,3994,3993,1,0,0,0,3994,3995,1,0,0,0,3995,3997,1,0,0,0,3996,3988,1,0,0,0,3996,3992,1,0,0,0,3997,3999,1,0,0,0,3998,4e3,3,394,197,0,3999,3998,1,0,0,0,3999,4e3,1,0,0,0,4e3,4001,1,0,0,0,4001,4002,3,798,399,0,4002,801,1,0,0,0,4003,4008,5,155,0,0,4004,4006,3,496,248,0,4005,4004,1,0,0,0,4005,4006,1,0,0,0,4006,4007,1,0,0,0,4007,4009,5,69,0,0,4008,4005,1,0,0,0,4008,4009,1,0,0,0,4009,4010,1,0,0,0,4010,4011,3,340,170,0,4011,4015,3,726,363,0,4012,4013,3,726,363,0,4013,4014,3,806,403,0,4014,4016,1,0,0,0,4015,4012,1,0,0,0,4015,4016,1,0,0,0,4016,4018,1,0,0,0,4017,4019,3,810,405,0,4018,4017,1,0,0,0,4018,4019,1,0,0,0,4019,4021,1,0,0,0,4020,4022,3,812,406,0,4021,4020,1,0,0,0,4021,4022,1,0,0,0,4022,4023,1,0,0,0,4023,4024,5,152,0,0,4024,4025,3,824,412,0,4025,4026,3,656,328,0,4026,803,1,0,0,0,4027,4052,3,726,363,0,4028,4032,5,155,0,0,4029,4030,3,726,363,0,4030,4031,3,806,403,0,4031,4033,1,0,0,0,4032,4029,1,0,0,0,4032,4033,1,0,0,0,4033,4035,1,0,0,0,4034,4036,3,810,405,0,4035,4034,1,0,0,0,4035,4036,1,0,0,0,4036,4038,1,0,0,0,4037,4039,3,812,406,0,4038,4037,1,0,0,0,4038,4039,1,0,0,0,4039,4053,1,0,0,0,4040,4041,3,726,363,0,4041,4043,3,806,403,0,4042,4044,3,810,405,0,4043,4042,1,0,0,0,4043,4044,1,0,0,0,4044,4046,1,0,0,0,4045,4047,3,812,406,0,4046,4045,1,0,0,0,4046,4047,1,0,0,0,4047,4053,1,0,0,0,4048,4050,3,810,405,0,4049,4051,3,812,406,0,4050,4049,1,0,0,0,4050,4051,1,0,0,0,4051,4053,1,0,0,0,4052,4028,1,0,0,0,4052,4040,1,0,0,0,4052,4048,1,0,0,0,4052,4053,1,0,0,0,4053,4054,1,0,0,0,4054,4055,5,152,0,0,4055,4056,3,824,412,0,4056,4057,3,656,328,0,4057,805,1,0,0,0,4058,4059,5,3,0,0,4059,4060,3,808,404,0,4060,807,1,0,0,0,4061,4062,3,702,351,0,4062,809,1,0,0,0,4063,4064,5,77,0,0,4064,4065,3,0,0,0,4065,811,1,0,0,0,4066,4067,5,53,0,0,4067,4068,3,814,407,0,4068,813,1,0,0,0,4069,4075,3,976,488,0,4070,4075,3,816,408,0,4071,4075,3,818,409,0,4072,4075,3,820,410,0,4073,4075,3,822,411,0,4074,4069,1,0,0,0,4074,4070,1,0,0,0,4074,4071,1,0,0,0,4074,4072,1,0,0,0,4074,4073,1,0,0,0,4075,815,1,0,0,0,4076,4085,3,678,339,0,4077,4081,5,214,0,0,4078,4080,3,658,329,0,4079,4078,1,0,0,0,4080,4083,1,0,0,0,4081,4079,1,0,0,0,4081,4082,1,0,0,0,4082,4084,1,0,0,0,4083,4081,1,0,0,0,4084,4086,5,216,0,0,4085,4077,1,0,0,0,4085,4086,1,0,0,0,4086,817,1,0,0,0,4087,4096,3,700,350,0,4088,4092,5,214,0,0,4089,4091,3,658,329,0,4090,4089,1,0,0,0,4091,4094,1,0,0,0,4092,4090,1,0,0,0,4092,4093,1,0,0,0,4093,4095,1,0,0,0,4094,4092,1,0,0,0,4095,4097,5,216,0,0,4096,4088,1,0,0,0,4096,4097,1,0,0,0,4097,819,1,0,0,0,4098,4107,3,716,358,0,4099,4103,5,214,0,0,4100,4102,3,658,329,0,4101,4100,1,0,0,0,4102,4105,1,0,0,0,4103,4101,1,0,0,0,4103,4104,1,0,0,0,4104,4106,1,0,0,0,4105,4103,1,0,0,0,4106,4108,5,216,0,0,4107,4099,1,0,0,0,4107,4108,1,0,0,0,4108,821,1,0,0,0,4109,4118,3,730,365,0,4110,4114,5,214,0,0,4111,4113,3,658,329,0,4112,4111,1,0,0,0,4113,4116,1,0,0,0,4114,4112,1,0,0,0,4114,4115,1,0,0,0,4115,4117,1,0,0,0,4116,4114,1,0,0,0,4117,4119,5,216,0,0,4118,4110,1,0,0,0,4118,4119,1,0,0,0,4119,823,1,0,0,0,4120,4121,3,826,413,0,4121,825,1,0,0,0,4122,4123,3,828,414,0,4123,4124,3,268,134,0,4124,827,1,0,0,0,4125,4126,3,978,489,0,4126,829,1,0,0,0,4127,4128,3,536,268,0,4128,4129,5,25,0,0,4129,4130,5,45,0,0,4130,4131,3,462,231,0,4131,4132,3,834,417,0,4132,831,1,0,0,0,4133,4134,3,544,272,0,4134,4135,5,25,0,0,4135,4136,3,674,337,0,4136,4137,3,834,417,0,4137,833,1,0,0,0,4138,4144,5,205,0,0,4139,4140,5,214,0,0,4140,4141,3,836,418,0,4141,4142,5,216,0,0,4142,4144,1,0,0,0,4143,4138,1,0,0,0,4143,4139,1,0,0,0,4144,835,1,0,0,0,4145,4147,3,838,419,0,4146,4145,1,0,0,0,4147,4150,1,0,0,0,4148,4146,1,0,0,0,4148,4149,1,0,0,0,4149,4152,1,0,0,0,4150,4148,1,0,0,0,4151,4153,3,296,148,0,4152,4151,1,0,0,0,4152,4153,1,0,0,0,4153,837,1,0,0,0,4154,4157,3,658,329,0,4155,4157,3,840,420,0,4156,4154,1,0,0,0,4156,4155,1,0,0,0,4157,839,1,0,0,0,4158,4159,3,78,39,0,4159,4160,5,134,0,0,4160,4161,3,452,226,0,4161,841,1,0,0,0,4162,4163,3,536,268,0,4163,4164,5,41,0,0,4164,4165,5,45,0,0,4165,4166,3,462,231,0,4166,4167,3,834,417,0,4167,843,1,0,0,0,4168,4169,3,544,272,0,4169,4170,5,41,0,0,4170,4171,3,848,424,0,4171,4172,3,834,417,0,4172,845,1,0,0,0,4173,4174,3,544,272,0,4174,4176,5,14,0,0,4175,4177,5,107,0,0,4176,4175,1,0,0,0,4176,4177,1,0,0,0,4177,4184,1,0,0,0,4178,4180,3,228,114,0,4179,4181,3,198,99,0,4180,4179,1,0,0,0,4180,4181,1,0,0,0,4181,4185,1,0,0,0,4182,4183,5,41,0,0,4183,4185,3,848,424,0,4184,4178,1,0,0,0,4184,4182,1,0,0,0,4185,4186,1,0,0,0,4186,4187,3,834,417,0,4187,847,1,0,0,0,4188,4190,3,496,248,0,4189,4188,1,0,0,0,4189,4190,1,0,0,0,4190,4192,1,0,0,0,4191,4193,3,394,197,0,4192,4191,1,0,0,0,4192,4193,1,0,0,0,4193,849,1,0,0,0,4194,4195,3,536,268,0,4195,4196,5,133,0,0,4196,4197,5,45,0,0,4197,4198,3,462,231,0,4198,4199,3,852,426,0,4199,851,1,0,0,0,4200,4210,5,205,0,0,4201,4205,5,214,0,0,4202,4204,3,854,427,0,4203,4202,1,0,0,0,4204,4207,1,0,0,0,4205,4203,1,0,0,0,4205,4206,1,0,0,0,4206,4208,1,0,0,0,4207,4205,1,0,0,0,4208,4210,5,216,0,0,4209,4200,1,0,0,0,4209,4201,1,0,0,0,4210,853,1,0,0,0,4211,4219,3,466,233,0,4212,4219,3,856,428,0,4213,4219,3,860,430,0,4214,4219,3,866,433,0,4215,4219,3,914,457,0,4216,4219,3,870,435,0,4217,4219,3,874,437,0,4218,4211,1,0,0,0,4218,4212,1,0,0,0,4218,4213,1,0,0,0,4218,4214,1,0,0,0,4218,4215,1,0,0,0,4218,4216,1,0,0,0,4218,4217,1,0,0,0,4219,855,1,0,0,0,4220,4221,3,78,39,0,4221,4222,3,858,429,0,4222,857,1,0,0,0,4223,4227,5,146,0,0,4224,4226,3,488,244,0,4225,4224,1,0,0,0,4226,4229,1,0,0,0,4227,4225,1,0,0,0,4227,4228,1,0,0,0,4228,4230,1,0,0,0,4229,4227,1,0,0,0,4230,4231,3,494,247,0,4231,859,1,0,0,0,4232,4233,3,78,39,0,4233,4234,3,862,431,0,4234,4235,3,864,432,0,4235,861,1,0,0,0,4236,4237,7,26,0,0,4237,863,1,0,0,0,4238,4240,3,228,114,0,4239,4241,3,198,99,0,4240,4239,1,0,0,0,4240,4241,1,0,0,0,4241,4242,1,0,0,0,4242,4243,3,852,426,0,4243,4262,1,0,0,0,4244,4246,3,488,244,0,4245,4244,1,0,0,0,4246,4249,1,0,0,0,4247,4245,1,0,0,0,4247,4248,1,0,0,0,4248,4250,1,0,0,0,4249,4247,1,0,0,0,4250,4257,5,41,0,0,4251,4253,3,488,244,0,4252,4251,1,0,0,0,4253,4254,1,0,0,0,4254,4252,1,0,0,0,4254,4255,1,0,0,0,4255,4257,1,0,0,0,4256,4247,1,0,0,0,4256,4252,1,0,0,0,4257,4258,1,0,0,0,4258,4259,3,848,424,0,4259,4260,3,834,417,0,4260,4262,1,0,0,0,4261,4238,1,0,0,0,4261,4256,1,0,0,0,4262,865,1,0,0,0,4263,4264,3,78,39,0,4264,4265,5,73,0,0,4265,4266,3,868,434,0,4266,867,1,0,0,0,4267,4269,3,228,114,0,4268,4270,3,198,99,0,4269,4268,1,0,0,0,4269,4270,1,0,0,0,4270,4271,1,0,0,0,4271,4272,3,834,417,0,4272,4291,1,0,0,0,4273,4275,3,488,244,0,4274,4273,1,0,0,0,4275,4278,1,0,0,0,4276,4274,1,0,0,0,4276,4277,1,0,0,0,4277,4279,1,0,0,0,4278,4276,1,0,0,0,4279,4286,5,32,0,0,4280,4282,3,488,244,0,4281,4280,1,0,0,0,4282,4283,1,0,0,0,4283,4281,1,0,0,0,4283,4284,1,0,0,0,4284,4286,1,0,0,0,4285,4276,1,0,0,0,4285,4281,1,0,0,0,4286,4287,1,0,0,0,4287,4288,3,974,487,0,4288,4289,3,834,417,0,4289,4291,1,0,0,0,4290,4267,1,0,0,0,4290,4285,1,0,0,0,4291,869,1,0,0,0,4292,4293,3,78,39,0,4293,4294,3,872,436,0,4294,871,1,0,0,0,4295,4299,5,5,0,0,4296,4298,3,488,244,0,4297,4296,1,0,0,0,4298,4301,1,0,0,0,4299,4297,1,0,0,0,4299,4300,1,0,0,0,4300,4302,1,0,0,0,4301,4299,1,0,0,0,4302,4303,3,494,247,0,4303,873,1,0,0,0,4304,4305,3,78,39,0,4305,4306,3,876,438,0,4306,875,1,0,0,0,4307,4311,5,140,0,0,4308,4310,3,488,244,0,4309,4308,1,0,0,0,4310,4313,1,0,0,0,4311,4309,1,0,0,0,4311,4312,1,0,0,0,4312,4314,1,0,0,0,4313,4311,1,0,0,0,4314,4315,3,494,247,0,4315,877,1,0,0,0,4316,4317,3,544,272,0,4317,4318,5,133,0,0,4318,4319,3,848,424,0,4319,4320,3,852,426,0,4320,879,1,0,0,0,4321,4326,3,544,272,0,4322,4324,5,14,0,0,4323,4325,5,107,0,0,4324,4323,1,0,0,0,4324,4325,1,0,0,0,4325,4327,1,0,0,0,4326,4322,1,0,0,0,4326,4327,1,0,0,0,4327,4328,1,0,0,0,4328,4337,5,135,0,0,4329,4331,3,228,114,0,4330,4332,3,198,99,0,4331,4330,1,0,0,0,4331,4332,1,0,0,0,4332,4338,1,0,0,0,4333,4335,5,133,0,0,4334,4336,3,496,248,0,4335,4334,1,0,0,0,4335,4336,1,0,0,0,4336,4338,1,0,0,0,4337,4329,1,0,0,0,4337,4333,1,0,0,0,4338,4340,1,0,0,0,4339,4341,3,394,197,0,4340,4339,1,0,0,0,4340,4341,1,0,0,0,4341,4344,1,0,0,0,4342,4343,5,24,0,0,4343,4345,3,882,441,0,4344,4342,1,0,0,0,4344,4345,1,0,0,0,4345,4346,1,0,0,0,4346,4347,3,852,426,0,4347,881,1,0,0,0,4348,4349,3,884,442,0,4349,883,1,0,0,0,4350,4351,3,886,443,0,4351,885,1,0,0,0,4352,4353,3,888,444,0,4353,887,1,0,0,0,4354,4355,3,340,170,0,4355,889,1,0,0,0,4356,4357,3,536,268,0,4357,4358,5,32,0,0,4358,4359,5,45,0,0,4359,4360,3,462,231,0,4360,4361,3,852,426,0,4361,891,1,0,0,0,4362,4363,3,544,272,0,4363,4364,5,32,0,0,4364,4365,3,848,424,0,4365,4366,3,852,426,0,4366,893,1,0,0,0,4367,4368,3,536,268,0,4368,4369,5,26,0,0,4369,4370,5,45,0,0,4370,4371,3,462,231,0,4371,4372,3,898,449,0,4372,895,1,0,0,0,4373,4374,3,544,272,0,4374,4375,5,26,0,0,4375,4376,3,848,424,0,4376,4377,3,898,449,0,4377,897,1,0,0,0,4378,4391,5,205,0,0,4379,4383,5,214,0,0,4380,4382,3,900,450,0,4381,4380,1,0,0,0,4382,4385,1,0,0,0,4383,4381,1,0,0,0,4383,4384,1,0,0,0,4384,4387,1,0,0,0,4385,4383,1,0,0,0,4386,4388,3,296,148,0,4387,4386,1,0,0,0,4387,4388,1,0,0,0,4388,4389,1,0,0,0,4389,4391,5,216,0,0,4390,4378,1,0,0,0,4390,4379,1,0,0,0,4391,899,1,0,0,0,4392,4398,3,658,329,0,4393,4398,3,840,420,0,4394,4398,3,856,428,0,4395,4398,3,870,435,0,4396,4398,3,902,451,0,4397,4392,1,0,0,0,4397,4393,1,0,0,0,4397,4394,1,0,0,0,4397,4395,1,0,0,0,4397,4396,1,0,0,0,4398,901,1,0,0,0,4399,4400,3,78,39,0,4400,4401,5,109,0,0,4401,4402,3,904,452,0,4402,903,1,0,0,0,4403,4405,3,488,244,0,4404,4403,1,0,0,0,4405,4408,1,0,0,0,4406,4404,1,0,0,0,4406,4407,1,0,0,0,4407,4409,1,0,0,0,4408,4406,1,0,0,0,4409,4410,3,848,424,0,4410,4411,3,852,426,0,4411,905,1,0,0,0,4412,4413,3,536,268,0,4413,4414,5,11,0,0,4414,4415,5,45,0,0,4415,4416,3,462,231,0,4416,4417,3,898,449,0,4417,907,1,0,0,0,4418,4419,3,544,272,0,4419,4420,5,11,0,0,4420,4421,3,848,424,0,4421,4422,3,898,449,0,4422,909,1,0,0,0,4423,4424,3,536,268,0,4424,4425,5,166,0,0,4425,4426,5,45,0,0,4426,4427,3,462,231,0,4427,4428,3,898,449,0,4428,911,1,0,0,0,4429,4430,3,544,272,0,4430,4431,5,166,0,0,4431,4432,3,848,424,0,4432,4433,3,898,449,0,4433,913,1,0,0,0,4434,4435,3,78,39,0,4435,4436,5,167,0,0,4436,4437,3,916,458,0,4437,915,1,0,0,0,4438,4442,3,228,114,0,4439,4441,3,202,101,0,4440,4439,1,0,0,0,4441,4444,1,0,0,0,4442,4440,1,0,0,0,4442,4443,1,0,0,0,4443,4445,1,0,0,0,4444,4442,1,0,0,0,4445,4446,3,852,426,0,4446,4465,1,0,0,0,4447,4449,3,488,244,0,4448,4447,1,0,0,0,4449,4452,1,0,0,0,4450,4448,1,0,0,0,4450,4451,1,0,0,0,4451,4453,1,0,0,0,4452,4450,1,0,0,0,4453,4460,5,133,0,0,4454,4456,3,488,244,0,4455,4454,1,0,0,0,4456,4457,1,0,0,0,4457,4455,1,0,0,0,4457,4458,1,0,0,0,4458,4460,1,0,0,0,4459,4450,1,0,0,0,4459,4455,1,0,0,0,4460,4461,1,0,0,0,4461,4462,3,848,424,0,4462,4463,3,852,426,0,4463,4465,1,0,0,0,4464,4438,1,0,0,0,4464,4459,1,0,0,0,4465,917,1,0,0,0,4466,4467,3,536,268,0,4467,4468,5,162,0,0,4468,4469,5,26,0,0,4469,4470,5,45,0,0,4470,4471,3,462,231,0,4471,4472,3,898,449,0,4472,919,1,0,0,0,4473,4474,3,544,272,0,4474,4475,5,162,0,0,4475,4476,5,26,0,0,4476,4477,3,848,424,0,4477,4478,3,898,449,0,4478,921,1,0,0,0,4479,4480,3,544,272,0,4480,4490,5,81,0,0,4481,4483,3,228,114,0,4482,4484,3,198,99,0,4483,4482,1,0,0,0,4483,4484,1,0,0,0,4484,4491,1,0,0,0,4485,4486,5,162,0,0,4486,4488,5,26,0,0,4487,4489,3,496,248,0,4488,4487,1,0,0,0,4488,4489,1,0,0,0,4489,4491,1,0,0,0,4490,4481,1,0,0,0,4490,4485,1,0,0,0,4491,4493,1,0,0,0,4492,4494,3,394,197,0,4493,4492,1,0,0,0,4493,4494,1,0,0,0,4494,4495,1,0,0,0,4495,4496,3,898,449,0,4496,923,1,0,0,0,4497,4498,3,536,268,0,4498,4499,5,169,0,0,4499,4500,5,45,0,0,4500,4501,3,462,231,0,4501,4502,3,926,463,0,4502,925,1,0,0,0,4503,4513,5,205,0,0,4504,4508,5,214,0,0,4505,4507,3,928,464,0,4506,4505,1,0,0,0,4507,4510,1,0,0,0,4508,4506,1,0,0,0,4508,4509,1,0,0,0,4509,4511,1,0,0,0,4510,4508,1,0,0,0,4511,4513,5,216,0,0,4512,4503,1,0,0,0,4512,4504,1,0,0,0,4513,927,1,0,0,0,4514,4518,3,466,233,0,4515,4518,3,440,220,0,4516,4518,3,930,465,0,4517,4514,1,0,0,0,4517,4515,1,0,0,0,4517,4516,1,0,0,0,4518,929,1,0,0,0,4519,4520,3,78,39,0,4520,4521,5,129,0,0,4521,4522,3,932,466,0,4522,931,1,0,0,0,4523,4525,3,228,114,0,4524,4526,3,198,99,0,4525,4524,1,0,0,0,4525,4526,1,0,0,0,4526,4527,1,0,0,0,4527,4528,3,500,250,0,4528,4545,1,0,0,0,4529,4531,3,488,244,0,4530,4529,1,0,0,0,4531,4534,1,0,0,0,4532,4530,1,0,0,0,4532,4533,1,0,0,0,4533,4535,1,0,0,0,4534,4532,1,0,0,0,4535,4542,5,130,0,0,4536,4538,3,488,244,0,4537,4536,1,0,0,0,4538,4539,1,0,0,0,4539,4537,1,0,0,0,4539,4540,1,0,0,0,4540,4542,1,0,0,0,4541,4532,1,0,0,0,4541,4537,1,0,0,0,4542,4543,1,0,0,0,4543,4545,3,494,247,0,4544,4523,1,0,0,0,4544,4541,1,0,0,0,4545,933,1,0,0,0,4546,4547,3,544,272,0,4547,4549,5,169,0,0,4548,4550,3,496,248,0,4549,4548,1,0,0,0,4549,4550,1,0,0,0,4550,4552,1,0,0,0,4551,4553,3,394,197,0,4552,4551,1,0,0,0,4552,4553,1,0,0,0,4553,4554,1,0,0,0,4554,4555,3,936,468,0,4555,935,1,0,0,0,4556,4566,5,205,0,0,4557,4561,5,214,0,0,4558,4560,3,938,469,0,4559,4558,1,0,0,0,4560,4563,1,0,0,0,4561,4559,1,0,0,0,4561,4562,1,0,0,0,4562,4564,1,0,0,0,4563,4561,1,0,0,0,4564,4566,5,216,0,0,4565,4556,1,0,0,0,4565,4557,1,0,0,0,4566,937,1,0,0,0,4567,4572,3,466,233,0,4568,4572,3,440,220,0,4569,4572,3,930,465,0,4570,4572,3,940,470,0,4571,4567,1,0,0,0,4571,4568,1,0,0,0,4571,4569,1,0,0,0,4571,4570,1,0,0,0,4572,939,1,0,0,0,4573,4576,5,62,0,0,4574,4577,3,942,471,0,4575,4577,3,944,472,0,4576,4574,1,0,0,0,4576,4575,1,0,0,0,4577,4578,1,0,0,0,4578,4579,3,48,24,0,4579,941,1,0,0,0,4580,4581,3,96,48,0,4581,943,1,0,0,0,4582,4583,3,98,49,0,4583,945,1,0,0,0,4584,4585,3,536,268,0,4585,4586,5,170,0,0,4586,4587,5,45,0,0,4587,4588,3,462,231,0,4588,4589,3,852,426,0,4589,947,1,0,0,0,4590,4591,3,544,272,0,4591,4592,5,170,0,0,4592,4593,3,848,424,0,4593,4594,3,852,426,0,4594,949,1,0,0,0,4595,4596,3,536,268,0,4596,4597,5,130,0,0,4597,4598,5,45,0,0,4598,4599,3,460,230,0,4599,951,1,0,0,0,4600,4601,3,544,272,0,4601,4602,5,130,0,0,4602,4603,3,494,247,0,4603,953,1,0,0,0,4604,4606,5,2,0,0,4605,4604,1,0,0,0,4605,4606,1,0,0,0,4606,4610,1,0,0,0,4607,4609,3,456,228,0,4608,4607,1,0,0,0,4609,4612,1,0,0,0,4610,4608,1,0,0,0,4610,4611,1,0,0,0,4611,4613,1,0,0,0,4612,4610,1,0,0,0,4613,4614,5,102,0,0,4614,4615,5,45,0,0,4615,4616,3,460,230,0,4616,955,1,0,0,0,4617,4618,3,222,111,0,4618,957,1,0,0,0,4619,4621,3,488,244,0,4620,4619,1,0,0,0,4621,4624,1,0,0,0,4622,4620,1,0,0,0,4622,4623,1,0,0,0,4623,4625,1,0,0,0,4624,4622,1,0,0,0,4625,4626,7,22,0,0,4626,4636,3,960,480,0,4627,4628,5,1,0,0,4628,4633,3,56,28,0,4629,4630,5,200,0,0,4630,4632,3,56,28,0,4631,4629,1,0,0,0,4632,4635,1,0,0,0,4633,4631,1,0,0,0,4633,4634,1,0,0,0,4634,4637,1,0,0,0,4635,4633,1,0,0,0,4636,4627,1,0,0,0,4636,4637,1,0,0,0,4637,4638,1,0,0,0,4638,4639,3,424,212,0,4639,959,1,0,0,0,4640,4642,3,46,23,0,4641,4640,1,0,0,0,4641,4642,1,0,0,0,4642,4646,1,0,0,0,4643,4647,5,204,0,0,4644,4645,5,158,0,0,4645,4647,5,24,0,0,4646,4643,1,0,0,0,4646,4644,1,0,0,0,4647,4649,1,0,0,0,4648,4641,1,0,0,0,4648,4649,1,0,0,0,4649,4650,1,0,0,0,4650,4651,3,222,111,0,4651,961,1,0,0,0,4652,4653,3,964,482,0,4653,963,1,0,0,0,4654,4656,5,127,0,0,4655,4654,1,0,0,0,4655,4656,1,0,0,0,4656,4658,1,0,0,0,4657,4659,7,19,0,0,4658,4657,1,0,0,0,4658,4659,1,0,0,0,4659,4660,1,0,0,0,4660,4662,3,234,117,0,4661,4663,3,198,99,0,4662,4661,1,0,0,0,4662,4663,1,0,0,0,4663,4665,1,0,0,0,4664,4666,3,394,197,0,4665,4664,1,0,0,0,4665,4666,1,0,0,0,4666,4667,1,0,0,0,4667,4668,3,424,212,0,4668,965,1,0,0,0,4669,4671,3,454,227,0,4670,4669,1,0,0,0,4670,4671,1,0,0,0,4671,4673,1,0,0,0,4672,4674,3,456,228,0,4673,4672,1,0,0,0,4674,4675,1,0,0,0,4675,4673,1,0,0,0,4675,4676,1,0,0,0,4676,4677,1,0,0,0,4677,4678,5,45,0,0,4678,4679,3,460,230,0,4679,967,1,0,0,0,4680,4682,3,490,245,0,4681,4683,3,488,244,0,4682,4681,1,0,0,0,4683,4684,1,0,0,0,4684,4682,1,0,0,0,4684,4685,1,0,0,0,4685,4686,1,0,0,0,4686,4687,3,494,247,0,4687,969,1,0,0,0,4688,4691,3,96,48,0,4689,4691,3,972,486,0,4690,4688,1,0,0,0,4690,4689,1,0,0,0,4691,971,1,0,0,0,4692,4693,3,90,45,0,4693,4694,5,183,0,0,4694,4697,5,198,0,0,4695,4696,5,183,0,0,4696,4698,5,179,0,0,4697,4695,1,0,0,0,4697,4698,1,0,0,0,4698,973,1,0,0,0,4699,4701,3,496,248,0,4700,4699,1,0,0,0,4700,4701,1,0,0,0,4701,4703,1,0,0,0,4702,4704,3,394,197,0,4703,4702,1,0,0,0,4703,4704,1,0,0,0,4704,975,1,0,0,0,4705,4706,1,0,0,0,4706,977,1,0,0,0,4707,4708,1,0,0,0,4708,979,1,0,0,0,4709,4710,1,0,0,0,4710,981,1,0,0,0,4711,4712,1,0,0,0,4712,983,1,0,0,0,4713,4714,5,218,0,0,4714,985,1,0,0,0,4715,4716,5,218,0,0,4716,987,1,0,0,0,4717,4718,1,0,0,0,4718,989,1,0,0,0,518,1005,1061,1068,1084,1086,1088,1098,1107,1113,1116,1121,1143,1152,1160,1172,1200,1207,1215,1219,1223,1227,1232,1237,1240,1247,1256,1264,1271,1281,1285,1293,1296,1298,1302,1308,1312,1318,1320,1329,1337,1345,1352,1356,1361,1364,1370,1384,1387,1395,1402,1408,1412,1419,1424,1431,1434,1440,1446,1448,1456,1484,1496,1504,1509,1513,1516,1519,1523,1525,1530,1539,1549,1558,1567,1576,1585,1593,1597,1603,1607,1609,1624,1632,1637,1639,1647,1656,1666,1671,1673,1681,1690,1700,1708,1716,1724,1729,1744,1747,1750,1754,1759,1768,1773,1775,1788,1791,1795,1799,1802,1807,1812,1815,1818,1821,1824,1830,1835,1845,1847,1852,1857,1861,1866,1873,1876,1882,1890,1904,1910,1913,1918,1925,1928,1933,1937,1939,1943,1947,1949,1951,1958,1965,1973,1982,1999,2007,2009,2016,2023,2030,2035,2037,2050,2058,2066,2071,2073,2086,2095,2097,2104,2110,2112,2120,2129,2139,2144,2147,2185,2188,2191,2197,2200,2205,2207,2214,2224,2232,2237,2256,2259,2262,2268,2270,2283,2286,2289,2295,2297,2308,2322,2326,2328,2332,2345,2358,2365,2369,2414,2419,2436,2454,2459,2479,2483,2490,2493,2500,2503,2507,2514,2516,2521,2525,2529,2533,2537,2539,2544,2547,2552,2559,2561,2570,2585,2587,2593,2597,2604,2617,2624,2635,2641,2648,2659,2662,2667,2672,2674,2683,2692,2694,2698,2704,2709,2712,2716,2719,2726,2733,2739,2747,2754,2758,2766,2769,2776,2785,2794,2799,2831,2835,2842,2847,2854,2857,2864,2868,2875,2880,2887,2890,2900,2922,2925,2928,2931,2935,2944,2950,2954,2960,2963,2966,2977,2990,3003,3007,3024,3042,3065,3073,3088,3100,3102,3106,3112,3121,3125,3130,3139,3145,3156,3159,3164,3176,3183,3189,3200,3204,3206,3218,3263,3266,3270,3274,3280,3294,3302,3304,3315,3317,3336,3340,3346,3351,3361,3369,3380,3383,3387,3390,3394,3408,3416,3421,3436,3440,3444,3457,3460,3464,3471,3477,3500,3507,3523,3527,3534,3538,3544,3548,3556,3559,3563,3585,3588,3597,3601,3603,3606,3616,3620,3624,3630,3634,3637,3642,3648,3655,3662,3669,3678,3686,3692,3695,3698,3708,3713,3718,3723,3728,3733,3739,3745,3760,3773,3779,3783,3794,3796,3804,3806,3812,3824,3831,3841,3844,3849,3866,3868,3885,3891,3895,3899,3905,3913,3918,3936,3947,3974,3980,3984,3990,3994,3996,3999,4005,4008,4015,4018,4021,4032,4035,4038,4043,4046,4050,4052,4074,4081,4085,4092,4096,4103,4107,4114,4118,4143,4148,4152,4156,4176,4180,4184,4189,4192,4205,4209,4218,4227,4240,4247,4254,4256,4261,4269,4276,4283,4285,4290,4299,4311,4324,4326,4331,4335,4337,4340,4344,4383,4387,4390,4397,4406,4442,4450,4457,4459,4464,4483,4488,4490,4493,4508,4512,4517,4525,4532,4539,4541,4544,4549,4552,4561,4565,4571,4576,4605,4610,4622,4633,4636,4641,4646,4648,4655,4658,4662,4665,4670,4675,4684,4690,4697,4700,4703];static __ATN;static get _ATN(){return r.__ATN||(r.__ATN=new Ks().deserialize(r._serializedATN)),r.__ATN}static vocabulary=new nn(r.literalNames,r.symbolicNames,[]);get vocabulary(){return r.vocabulary}static decisionsToDFA=r._ATN.decisionToState.map((e,t)=>new rs(e,t))},Me=class r extends h{constructor(e,t){super(e,t)}IF(){return this.getToken(l.IF,0)}ownedExpression(e){return e===void 0?this.getRuleContexts(r):this.getRuleContext(e,r)}QUESTION(){return this.getToken(l.QUESTION,0)}ELSE(){return this.getToken(l.ELSE,0)}PLUS(){return this.getToken(l.PLUS,0)}MINUS(){return this.getToken(l.MINUS,0)}TILDE(){return this.getToken(l.TILDE,0)}NOT(){return this.getToken(l.NOT,0)}typeReference(){return this.getRuleContext(0,cu)}AT_SIGN(){return this.getToken(l.AT_SIGN,0)}AT_AT(){return this.getToken(l.AT_AT,0)}ALL(){return this.getToken(l.ALL,0)}baseExpression(){return this.getRuleContext(0,Sg)}QUESTION_QUESTION(){return this.getToken(l.QUESTION_QUESTION,0)}IMPLIES(){return this.getToken(l.IMPLIES,0)}OR(){return this.getToken(l.OR,0)}AND(){return this.getToken(l.AND,0)}XOR(){return this.getToken(l.XOR,0)}PIPE(){return this.getToken(l.PIPE,0)}AMP(){return this.getToken(l.AMP,0)}EQ_EQ(){return this.getToken(l.EQ_EQ,0)}BANG_EQ(){return this.getToken(l.BANG_EQ,0)}EQ_EQ_EQ(){return this.getToken(l.EQ_EQ_EQ,0)}BANG_EQ_EQ(){return this.getToken(l.BANG_EQ_EQ,0)}LT(){return this.getToken(l.LT,0)}GT(){return this.getToken(l.GT,0)}LE(){return this.getToken(l.LE,0)}GE(){return this.getToken(l.GE,0)}DOT_DOT(){return this.getToken(l.DOT_DOT,0)}STAR(){return this.getToken(l.STAR,0)}SLASH(){return this.getToken(l.SLASH,0)}PERCENT(){return this.getToken(l.PERCENT,0)}STAR_STAR(){return this.getToken(l.STAR_STAR,0)}CARET(){return this.getToken(l.CARET,0)}ISTYPE(){return this.getToken(l.ISTYPE,0)}HASTYPE(){return this.getToken(l.HASTYPE,0)}AS(){return this.getToken(l.AS,0)}META(){return this.getToken(l.META,0)}LBRACK(){return this.getToken(l.LBRACK,0)}RBRACK(){return this.getToken(l.RBRACK,0)}sequenceExpressionList(){return this.getRuleContext(0,du)}HASH(){return this.getToken(l.HASH,0)}LPAREN(){return this.getToken(l.LPAREN,0)}RPAREN(){return this.getToken(l.RPAREN,0)}argumentList(){return this.getRuleContext(0,Js)}DOT(){return this.getToken(l.DOT,0)}qualifiedName(){return this.getRuleContext(0,Y)}DOT_QUESTION(){return this.getToken(l.DOT_QUESTION,0)}bodyExpression(){return this.getRuleContext(0,hu)}ARROW(){return this.getToken(l.ARROW,0)}get ruleIndex(){return l.RULE_ownedExpression}enterRule(e){e.enterOwnedExpression&&e.enterOwnedExpression(this)}exitRule(e){e.exitOwnedExpression&&e.exitOwnedExpression(this)}accept(e){return e.visitOwnedExpression?e.visitOwnedExpression(this):e.visitChildren(this)}},cu=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_typeReference}enterRule(e){e.enterTypeReference&&e.enterTypeReference(this)}exitRule(e){e.exitTypeReference&&e.exitTypeReference(this)}accept(e){return e.visitTypeReference?e.visitTypeReference(this):e.visitChildren(this)}},du=class extends h{constructor(e,t){super(e,t)}ownedExpression(e){return e===void 0?this.getRuleContexts(Me):this.getRuleContext(e,Me)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_sequenceExpressionList}enterRule(e){e.enterSequenceExpressionList&&e.enterSequenceExpressionList(this)}exitRule(e){e.exitSequenceExpressionList&&e.exitSequenceExpressionList(this)}accept(e){return e.visitSequenceExpressionList?e.visitSequenceExpressionList(this):e.visitChildren(this)}},Sg=class extends h{constructor(e,t){super(e,t)}nullExpression(){return this.getRuleContext(0,Pg)}literalExpression(){return this.getRuleContext(0,w1)}qualifiedName(){return this.getRuleContext(0,Y)}argumentList(){return this.getRuleContext(0,Js)}DOT(){return this.getToken(l.DOT,0)}METADATA(){return this.getToken(l.METADATA,0)}constructorExpression(){return this.getRuleContext(0,Tg)}bodyExpression(){return this.getRuleContext(0,hu)}LPAREN(){return this.getToken(l.LPAREN,0)}RPAREN(){return this.getToken(l.RPAREN,0)}sequenceExpressionList(){return this.getRuleContext(0,du)}get ruleIndex(){return l.RULE_baseExpression}enterRule(e){e.enterBaseExpression&&e.enterBaseExpression(this)}exitRule(e){e.exitBaseExpression&&e.exitBaseExpression(this)}accept(e){return e.visitBaseExpression?e.visitBaseExpression(this):e.visitChildren(this)}},Pg=class extends h{constructor(e,t){super(e,t)}NULL(){return this.getToken(l.NULL,0)}LPAREN(){return this.getToken(l.LPAREN,0)}RPAREN(){return this.getToken(l.RPAREN,0)}get ruleIndex(){return l.RULE_nullExpression}enterRule(e){e.enterNullExpression&&e.enterNullExpression(this)}exitRule(e){e.exitNullExpression&&e.exitNullExpression(this)}accept(e){return e.visitNullExpression?e.visitNullExpression(this):e.visitChildren(this)}},Lg=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_featureReferenceExpression}enterRule(e){e.enterFeatureReferenceExpression&&e.enterFeatureReferenceExpression(this)}exitRule(e){e.exitFeatureReferenceExpression&&e.exitFeatureReferenceExpression(this)}accept(e){return e.visitFeatureReferenceExpression?e.visitFeatureReferenceExpression(this):e.visitChildren(this)}},H9=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}DOT(){return this.getToken(l.DOT,0)}METADATA(){return this.getToken(l.METADATA,0)}get ruleIndex(){return l.RULE_metadataAccessExpression}enterRule(e){e.enterMetadataAccessExpression&&e.enterMetadataAccessExpression(this)}exitRule(e){e.exitMetadataAccessExpression&&e.exitMetadataAccessExpression(this)}accept(e){return e.visitMetadataAccessExpression?e.visitMetadataAccessExpression(this):e.visitChildren(this)}},z9=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}argumentList(){return this.getRuleContext(0,Js)}get ruleIndex(){return l.RULE_invocationExpression}enterRule(e){e.enterInvocationExpression&&e.enterInvocationExpression(this)}exitRule(e){e.exitInvocationExpression&&e.exitInvocationExpression(this)}accept(e){return e.visitInvocationExpression?e.visitInvocationExpression(this):e.visitChildren(this)}},Tg=class extends h{constructor(e,t){super(e,t)}NEW(){return this.getToken(l.NEW,0)}qualifiedName(){return this.getRuleContext(0,Y)}argumentList(){return this.getRuleContext(0,Js)}get ruleIndex(){return l.RULE_constructorExpression}enterRule(e){e.enterConstructorExpression&&e.enterConstructorExpression(this)}exitRule(e){e.exitConstructorExpression&&e.exitConstructorExpression(this)}accept(e){return e.visitConstructorExpression?e.visitConstructorExpression(this):e.visitChildren(this)}},hu=class extends h{constructor(e,t){super(e,t)}LBRACE(){return this.getToken(l.LBRACE,0)}functionBodyPart(){return this.getRuleContext(0,vu)}RBRACE(){return this.getToken(l.RBRACE,0)}get ruleIndex(){return l.RULE_bodyExpression}enterRule(e){e.enterBodyExpression&&e.enterBodyExpression(this)}exitRule(e){e.exitBodyExpression&&e.exitBodyExpression(this)}accept(e){return e.visitBodyExpression?e.visitBodyExpression(this):e.visitChildren(this)}},Js=class extends h{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(l.LPAREN,0)}RPAREN(){return this.getToken(l.RPAREN,0)}positionalArgumentList(){return this.getRuleContext(0,wg)}namedArgumentList(){return this.getRuleContext(0,kg)}get ruleIndex(){return l.RULE_argumentList}enterRule(e){e.enterArgumentList&&e.enterArgumentList(this)}exitRule(e){e.exitArgumentList&&e.exitArgumentList(this)}accept(e){return e.visitArgumentList?e.visitArgumentList(this):e.visitChildren(this)}},wg=class extends h{constructor(e,t){super(e,t)}ownedExpression(e){return e===void 0?this.getRuleContexts(Me):this.getRuleContext(e,Me)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_positionalArgumentList}enterRule(e){e.enterPositionalArgumentList&&e.enterPositionalArgumentList(this)}exitRule(e){e.exitPositionalArgumentList&&e.exitPositionalArgumentList(this)}accept(e){return e.visitPositionalArgumentList?e.visitPositionalArgumentList(this):e.visitChildren(this)}},kg=class extends h{constructor(e,t){super(e,t)}namedArgument(e){return e===void 0?this.getRuleContexts(pu):this.getRuleContext(e,pu)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_namedArgumentList}enterRule(e){e.enterNamedArgumentList&&e.enterNamedArgumentList(this)}exitRule(e){e.exitNamedArgumentList&&e.exitNamedArgumentList(this)}accept(e){return e.visitNamedArgumentList?e.visitNamedArgumentList(this):e.visitChildren(this)}},pu=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}EQ(){return this.getToken(l.EQ,0)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_namedArgument}enterRule(e){e.enterNamedArgument&&e.enterNamedArgument(this)}exitRule(e){e.exitNamedArgument&&e.exitNamedArgument(this)}accept(e){return e.visitNamedArgument?e.visitNamedArgument(this):e.visitChildren(this)}},w1=class extends h{constructor(e,t){super(e,t)}literalBoolean(){return this.getRuleContext(0,Ag)}literalString(){return this.getRuleContext(0,Mg)}literalInteger(){return this.getRuleContext(0,_g)}literalReal(){return this.getRuleContext(0,Ng)}literalInfinity(){return this.getRuleContext(0,Ig)}get ruleIndex(){return l.RULE_literalExpression}enterRule(e){e.enterLiteralExpression&&e.enterLiteralExpression(this)}exitRule(e){e.exitLiteralExpression&&e.exitLiteralExpression(this)}accept(e){return e.visitLiteralExpression?e.visitLiteralExpression(this):e.visitChildren(this)}},Ag=class extends h{constructor(e,t){super(e,t)}TRUE(){return this.getToken(l.TRUE,0)}FALSE(){return this.getToken(l.FALSE,0)}get ruleIndex(){return l.RULE_literalBoolean}enterRule(e){e.enterLiteralBoolean&&e.enterLiteralBoolean(this)}exitRule(e){e.exitLiteralBoolean&&e.exitLiteralBoolean(this)}accept(e){return e.visitLiteralBoolean?e.visitLiteralBoolean(this):e.visitChildren(this)}},Mg=class extends h{constructor(e,t){super(e,t)}DOUBLE_STRING(){return this.getToken(l.DOUBLE_STRING,0)}get ruleIndex(){return l.RULE_literalString}enterRule(e){e.enterLiteralString&&e.enterLiteralString(this)}exitRule(e){e.exitLiteralString&&e.exitLiteralString(this)}accept(e){return e.visitLiteralString?e.visitLiteralString(this):e.visitChildren(this)}},_g=class extends h{constructor(e,t){super(e,t)}INTEGER(){return this.getToken(l.INTEGER,0)}get ruleIndex(){return l.RULE_literalInteger}enterRule(e){e.enterLiteralInteger&&e.enterLiteralInteger(this)}exitRule(e){e.exitLiteralInteger&&e.exitLiteralInteger(this)}accept(e){return e.visitLiteralInteger?e.visitLiteralInteger(this):e.visitChildren(this)}},Ng=class extends h{constructor(e,t){super(e,t)}REAL(){return this.getToken(l.REAL,0)}get ruleIndex(){return l.RULE_literalReal}enterRule(e){e.enterLiteralReal&&e.enterLiteralReal(this)}exitRule(e){e.exitLiteralReal&&e.exitLiteralReal(this)}accept(e){return e.visitLiteralReal?e.visitLiteralReal(this):e.visitChildren(this)}},Ig=class extends h{constructor(e,t){super(e,t)}STAR(){return this.getToken(l.STAR,0)}get ruleIndex(){return l.RULE_literalInfinity}enterRule(e){e.enterLiteralInfinity&&e.enterLiteralInfinity(this)}exitRule(e){e.exitLiteralInfinity&&e.exitLiteralInfinity(this)}accept(e){return e.visitLiteralInfinity?e.visitLiteralInfinity(this):e.visitChildren(this)}},Ug=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_argumentMember}enterRule(e){e.enterArgumentMember&&e.enterArgumentMember(this)}exitRule(e){e.exitArgumentMember&&e.exitArgumentMember(this)}accept(e){return e.visitArgumentMember?e.visitArgumentMember(this):e.visitChildren(this)}},Og=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_argumentExpressionMember}enterRule(e){e.enterArgumentExpressionMember&&e.enterArgumentExpressionMember(this)}exitRule(e){e.exitArgumentExpressionMember&&e.exitArgumentExpressionMember(this)}accept(e){return e.visitArgumentExpressionMember?e.visitArgumentExpressionMember(this):e.visitChildren(this)}},Or=class extends h{constructor(e,t){super(e,t)}IDENTIFIER(){return this.getToken(l.IDENTIFIER,0)}STRING(){return this.getToken(l.STRING,0)}get ruleIndex(){return l.RULE_name}enterRule(e){e.enterName&&e.enterName(this)}exitRule(e){e.exitName&&e.exitName(this)}accept(e){return e.visitName?e.visitName(this):e.visitChildren(this)}},ot=class extends h{constructor(e,t){super(e,t)}LT(){return this.getToken(l.LT,0)}name(e){return e===void 0?this.getRuleContexts(Or):this.getRuleContext(e,Or)}GT(){return this.getToken(l.GT,0)}get ruleIndex(){return l.RULE_identification}enterRule(e){e.enterIdentification&&e.enterIdentification(this)}exitRule(e){e.exitIdentification&&e.exitIdentification(this)}accept(e){return e.visitIdentification?e.visitIdentification(this):e.visitChildren(this)}},Xt=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}relationshipOwnedElement(e){return e===void 0?this.getRuleContexts(k1):this.getRuleContext(e,k1)}ownedAnnotation(e){return e===void 0?this.getRuleContexts(fu):this.getRuleContext(e,fu)}get ruleIndex(){return l.RULE_relationshipBody}enterRule(e){e.enterRelationshipBody&&e.enterRelationshipBody(this)}exitRule(e){e.exitRelationshipBody&&e.exitRelationshipBody(this)}accept(e){return e.visitRelationshipBody?e.visitRelationshipBody(this):e.visitChildren(this)}},k1=class extends h{constructor(e,t){super(e,t)}ownedRelatedElement(){return this.getRuleContext(0,Dg)}ownedAnnotation(){return this.getRuleContext(0,fu)}get ruleIndex(){return l.RULE_relationshipOwnedElement}enterRule(e){e.enterRelationshipOwnedElement&&e.enterRelationshipOwnedElement(this)}exitRule(e){e.exitRelationshipOwnedElement&&e.exitRelationshipOwnedElement(this)}accept(e){return e.visitRelationshipOwnedElement?e.visitRelationshipOwnedElement(this):e.visitChildren(this)}},Dg=class extends h{constructor(e,t){super(e,t)}nonFeatureElement(){return this.getRuleContext(0,U1)}featureElement(){return this.getRuleContext(0,Qs)}get ruleIndex(){return l.RULE_ownedRelatedElement}enterRule(e){e.enterOwnedRelatedElement&&e.enterOwnedRelatedElement(this)}exitRule(e){e.exitOwnedRelatedElement&&e.exitOwnedRelatedElement(this)}accept(e){return e.visitOwnedRelatedElement?e.visitOwnedRelatedElement(this):e.visitChildren(this)}},A1=class extends h{constructor(e,t){super(e,t)}DEPENDENCY(){return this.getToken(l.DEPENDENCY,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}TO(){return this.getToken(l.TO,0)}relationshipBody(){return this.getRuleContext(0,Xt)}prefixMetadataAnnotation(e){return e===void 0?this.getRuleContexts(rd):this.getRuleContext(e,rd)}FROM(){return this.getToken(l.FROM,0)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}identification(){return this.getRuleContext(0,ot)}dependencyDeclaration(){return this.getRuleContext(0,Ax)}get ruleIndex(){return l.RULE_dependency}enterRule(e){e.enterDependency&&e.enterDependency(this)}exitRule(e){e.exitDependency&&e.exitDependency(this)}accept(e){return e.visitDependency?e.visitDependency(this):e.visitChildren(this)}},is=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_annotation}enterRule(e){e.enterAnnotation&&e.enterAnnotation(this)}exitRule(e){e.exitAnnotation&&e.exitAnnotation(this)}accept(e){return e.visitAnnotation?e.visitAnnotation(this):e.visitChildren(this)}},fu=class extends h{constructor(e,t){super(e,t)}annotatingElement(){return this.getRuleContext(0,aa)}get ruleIndex(){return l.RULE_ownedAnnotation}enterRule(e){e.enterOwnedAnnotation&&e.enterOwnedAnnotation(this)}exitRule(e){e.exitOwnedAnnotation&&e.exitOwnedAnnotation(this)}accept(e){return e.visitOwnedAnnotation?e.visitOwnedAnnotation(this):e.visitChildren(this)}},aa=class extends h{constructor(e,t){super(e,t)}comment(){return this.getRuleContext(0,$g)}documentation(){return this.getRuleContext(0,Fg)}textualRepresentation(){return this.getRuleContext(0,Hg)}metadataFeature(){return this.getRuleContext(0,Lx)}get ruleIndex(){return l.RULE_annotatingElement}enterRule(e){e.enterAnnotatingElement&&e.enterAnnotatingElement(this)}exitRule(e){e.exitAnnotatingElement&&e.exitAnnotatingElement(this)}accept(e){return e.visitAnnotatingElement?e.visitAnnotatingElement(this):e.visitChildren(this)}},$g=class extends h{constructor(e,t){super(e,t)}REGULAR_COMMENT(){return this.getToken(l.REGULAR_COMMENT,0)}COMMENT(){return this.getToken(l.COMMENT,0)}LOCALE(){return this.getToken(l.LOCALE,0)}DOUBLE_STRING(){return this.getToken(l.DOUBLE_STRING,0)}identification(){return this.getRuleContext(0,ot)}ABOUT(){return this.getToken(l.ABOUT,0)}annotation(e){return e===void 0?this.getRuleContexts(is):this.getRuleContext(e,is)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_comment}enterRule(e){e.enterComment&&e.enterComment(this)}exitRule(e){e.exitComment&&e.exitComment(this)}accept(e){return e.visitComment?e.visitComment(this):e.visitChildren(this)}},Fg=class extends h{constructor(e,t){super(e,t)}DOC(){return this.getToken(l.DOC,0)}REGULAR_COMMENT(){return this.getToken(l.REGULAR_COMMENT,0)}identification(){return this.getRuleContext(0,ot)}LOCALE(){return this.getToken(l.LOCALE,0)}DOUBLE_STRING(){return this.getToken(l.DOUBLE_STRING,0)}get ruleIndex(){return l.RULE_documentation}enterRule(e){e.enterDocumentation&&e.enterDocumentation(this)}exitRule(e){e.exitDocumentation&&e.exitDocumentation(this)}accept(e){return e.visitDocumentation?e.visitDocumentation(this):e.visitChildren(this)}},Hg=class extends h{constructor(e,t){super(e,t)}LANGUAGE(){return this.getToken(l.LANGUAGE,0)}DOUBLE_STRING(){return this.getToken(l.DOUBLE_STRING,0)}REGULAR_COMMENT(){return this.getToken(l.REGULAR_COMMENT,0)}REP(){return this.getToken(l.REP,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_textualRepresentation}enterRule(e){e.enterTextualRepresentation&&e.enterTextualRepresentation(this)}exitRule(e){e.exitTextualRepresentation&&e.exitTextualRepresentation(this)}accept(e){return e.visitTextualRepresentation?e.visitTextualRepresentation(this):e.visitChildren(this)}},B9=class extends h{constructor(e,t){super(e,t)}EOF(){return this.getToken(l.EOF,0)}packageBodyElement(e){return e===void 0?this.getRuleContexts(ma):this.getRuleContext(e,ma)}get ruleIndex(){return l.RULE_rootNamespace}enterRule(e){e.enterRootNamespace&&e.enterRootNamespace(this)}exitRule(e){e.exitRootNamespace&&e.exitRootNamespace(this)}accept(e){return e.visitRootNamespace?e.visitRootNamespace(this):e.visitChildren(this)}},zg=class extends h{constructor(e,t){super(e,t)}namespaceDeclaration(){return this.getRuleContext(0,Bg)}namespaceBody(){return this.getRuleContext(0,jg)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}get ruleIndex(){return l.RULE_namespace}enterRule(e){e.enterNamespace&&e.enterNamespace(this)}exitRule(e){e.exitNamespace&&e.exitNamespace(this)}accept(e){return e.visitNamespace?e.visitNamespace(this):e.visitChildren(this)}},Bg=class extends h{constructor(e,t){super(e,t)}NAMESPACE(){return this.getToken(l.NAMESPACE,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_namespaceDeclaration}enterRule(e){e.enterNamespaceDeclaration&&e.enterNamespaceDeclaration(this)}exitRule(e){e.exitNamespaceDeclaration&&e.exitNamespaceDeclaration(this)}accept(e){return e.visitNamespaceDeclaration?e.visitNamespaceDeclaration(this):e.visitChildren(this)}},jg=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}namespaceBodyElement(e){return e===void 0?this.getRuleContexts(M1):this.getRuleContext(e,M1)}get ruleIndex(){return l.RULE_namespaceBody}enterRule(e){e.enterNamespaceBody&&e.enterNamespaceBody(this)}exitRule(e){e.exitNamespaceBody&&e.exitNamespaceBody(this)}accept(e){return e.visitNamespaceBody?e.visitNamespaceBody(this):e.visitChildren(this)}},M1=class extends h{constructor(e,t){super(e,t)}namespaceMember(){return this.getRuleContext(0,qg)}aliasMember(){return this.getRuleContext(0,sn)}importRule(){return this.getRuleContext(0,wi)}get ruleIndex(){return l.RULE_namespaceBodyElement}enterRule(e){e.enterNamespaceBodyElement&&e.enterNamespaceBodyElement(this)}exitRule(e){e.exitNamespaceBodyElement&&e.exitNamespaceBodyElement(this)}accept(e){return e.visitNamespaceBodyElement?e.visitNamespaceBodyElement(this):e.visitChildren(this)}},_e=class extends h{constructor(e,t){super(e,t)}visibilityIndicator(){return this.getRuleContext(0,_1)}get ruleIndex(){return l.RULE_memberPrefix}enterRule(e){e.enterMemberPrefix&&e.enterMemberPrefix(this)}exitRule(e){e.exitMemberPrefix&&e.exitMemberPrefix(this)}accept(e){return e.visitMemberPrefix?e.visitMemberPrefix(this):e.visitChildren(this)}},_1=class extends h{constructor(e,t){super(e,t)}PUBLIC(){return this.getToken(l.PUBLIC,0)}PRIVATE(){return this.getToken(l.PRIVATE,0)}PROTECTED(){return this.getToken(l.PROTECTED,0)}get ruleIndex(){return l.RULE_visibilityIndicator}enterRule(e){e.enterVisibilityIndicator&&e.enterVisibilityIndicator(this)}exitRule(e){e.exitVisibilityIndicator&&e.exitVisibilityIndicator(this)}accept(e){return e.visitVisibilityIndicator?e.visitVisibilityIndicator(this):e.visitChildren(this)}},qg=class extends h{constructor(e,t){super(e,t)}nonFeatureMember(){return this.getRuleContext(0,mu)}namespaceFeatureMember(){return this.getRuleContext(0,Vg)}get ruleIndex(){return l.RULE_namespaceMember}enterRule(e){e.enterNamespaceMember&&e.enterNamespaceMember(this)}exitRule(e){e.exitNamespaceMember&&e.exitNamespaceMember(this)}accept(e){return e.visitNamespaceMember?e.visitNamespaceMember(this):e.visitChildren(this)}},mu=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}memberElement(){return this.getRuleContext(0,Wg)}get ruleIndex(){return l.RULE_nonFeatureMember}enterRule(e){e.enterNonFeatureMember&&e.enterNonFeatureMember(this)}exitRule(e){e.exitNonFeatureMember&&e.exitNonFeatureMember(this)}accept(e){return e.visitNonFeatureMember?e.visitNonFeatureMember(this):e.visitChildren(this)}},Vg=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}featureElement(){return this.getRuleContext(0,Qs)}get ruleIndex(){return l.RULE_namespaceFeatureMember}enterRule(e){e.enterNamespaceFeatureMember&&e.enterNamespaceFeatureMember(this)}exitRule(e){e.exitNamespaceFeatureMember&&e.exitNamespaceFeatureMember(this)}accept(e){return e.visitNamespaceFeatureMember?e.visitNamespaceFeatureMember(this):e.visitChildren(this)}},sn=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}ALIAS(){return this.getToken(l.ALIAS,0)}FOR(){return this.getToken(l.FOR,0)}qualifiedName(){return this.getRuleContext(0,Y)}relationshipBody(){return this.getRuleContext(0,Xt)}LT(){return this.getToken(l.LT,0)}name(e){return e===void 0?this.getRuleContexts(Or):this.getRuleContext(e,Or)}GT(){return this.getToken(l.GT,0)}get ruleIndex(){return l.RULE_aliasMember}enterRule(e){e.enterAliasMember&&e.enterAliasMember(this)}exitRule(e){e.exitAliasMember&&e.exitAliasMember(this)}accept(e){return e.visitAliasMember?e.visitAliasMember(this):e.visitChildren(this)}},Y=class extends h{constructor(e,t){super(e,t)}name(e){return e===void 0?this.getRuleContexts(Or):this.getRuleContext(e,Or)}DOLLAR(){return this.getToken(l.DOLLAR,0)}COLON_COLON(e){return e===void 0?this.getTokens(l.COLON_COLON):this.getToken(l.COLON_COLON,e)}get ruleIndex(){return l.RULE_qualifiedName}enterRule(e){e.enterQualifiedName&&e.enterQualifiedName(this)}exitRule(e){e.exitQualifiedName&&e.exitQualifiedName(this)}accept(e){return e.visitQualifiedName?e.visitQualifiedName(this):e.visitChildren(this)}},wi=class extends h{constructor(e,t){super(e,t)}IMPORT(){return this.getToken(l.IMPORT,0)}importDeclaration(){return this.getRuleContext(0,Zg)}relationshipBody(){return this.getRuleContext(0,Xt)}visibilityIndicator(){return this.getRuleContext(0,_1)}ALL(){return this.getToken(l.ALL,0)}get ruleIndex(){return l.RULE_importRule}enterRule(e){e.enterImportRule&&e.enterImportRule(this)}exitRule(e){e.exitImportRule&&e.exitImportRule(this)}accept(e){return e.visitImportRule?e.visitImportRule(this):e.visitChildren(this)}},Zg=class extends h{constructor(e,t){super(e,t)}membershipImport(){return this.getRuleContext(0,gu)}namespaceImport(){return this.getRuleContext(0,N1)}get ruleIndex(){return l.RULE_importDeclaration}enterRule(e){e.enterImportDeclaration&&e.enterImportDeclaration(this)}exitRule(e){e.exitImportDeclaration&&e.exitImportDeclaration(this)}accept(e){return e.visitImportDeclaration?e.visitImportDeclaration(this):e.visitChildren(this)}},gu=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}COLON_COLON(){return this.getToken(l.COLON_COLON,0)}STAR_STAR(){return this.getToken(l.STAR_STAR,0)}get ruleIndex(){return l.RULE_membershipImport}enterRule(e){e.enterMembershipImport&&e.enterMembershipImport(this)}exitRule(e){e.exitMembershipImport&&e.exitMembershipImport(this)}accept(e){return e.visitMembershipImport?e.visitMembershipImport(this):e.visitChildren(this)}},N1=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}COLON_COLON(e){return e===void 0?this.getTokens(l.COLON_COLON):this.getToken(l.COLON_COLON,e)}STAR(){return this.getToken(l.STAR,0)}STAR_STAR(){return this.getToken(l.STAR_STAR,0)}filterPackage(){return this.getRuleContext(0,Gg)}get ruleIndex(){return l.RULE_namespaceImport}enterRule(e){e.enterNamespaceImport&&e.enterNamespaceImport(this)}exitRule(e){e.exitNamespaceImport&&e.exitNamespaceImport(this)}accept(e){return e.visitNamespaceImport?e.visitNamespaceImport(this):e.visitChildren(this)}},Gg=class extends h{constructor(e,t){super(e,t)}filterPackageImportDeclaration(){return this.getRuleContext(0,Cy)}filterPackageMember(e){return e===void 0?this.getRuleContexts(I1):this.getRuleContext(e,I1)}filterPackageImport(){return this.getRuleContext(0,Ty)}get ruleIndex(){return l.RULE_filterPackage}enterRule(e){e.enterFilterPackage&&e.enterFilterPackage(this)}exitRule(e){e.exitFilterPackage&&e.exitFilterPackage(this)}accept(e){return e.visitFilterPackage?e.visitFilterPackage(this):e.visitChildren(this)}},I1=class extends h{constructor(e,t){super(e,t)}LBRACK(){return this.getToken(l.LBRACK,0)}ownedExpression(){return this.getRuleContext(0,Me)}RBRACK(){return this.getToken(l.RBRACK,0)}get ruleIndex(){return l.RULE_filterPackageMember}enterRule(e){e.enterFilterPackageMember&&e.enterFilterPackageMember(this)}exitRule(e){e.exitFilterPackageMember&&e.exitFilterPackageMember(this)}accept(e){return e.visitFilterPackageMember?e.visitFilterPackageMember(this):e.visitChildren(this)}},Wg=class extends h{constructor(e,t){super(e,t)}annotatingElement(){return this.getRuleContext(0,aa)}nonFeatureElement(){return this.getRuleContext(0,U1)}get ruleIndex(){return l.RULE_memberElement}enterRule(e){e.enterMemberElement&&e.enterMemberElement(this)}exitRule(e){e.exitMemberElement&&e.exitMemberElement(this)}accept(e){return e.visitMemberElement?e.visitMemberElement(this):e.visitChildren(this)}},U1=class extends h{constructor(e,t){super(e,t)}dependency(){return this.getRuleContext(0,A1)}namespace(){return this.getRuleContext(0,zg)}type(){return this.getRuleContext(0,Kg)}classifier(){return this.getRuleContext(0,l3)}dataType(){return this.getRuleContext(0,M3)}class(){return this.getRuleContext(0,_3)}structure(){return this.getRuleContext(0,N3)}metaclass(){return this.getRuleContext(0,Px)}association(){return this.getRuleContext(0,I3)}associationStructure(){return this.getRuleContext(0,U3)}interaction(){return this.getRuleContext(0,px)}behavior(){return this.getRuleContext(0,Z3)}function(){return this.getRuleContext(0,W3)}predicate(){return this.getRuleContext(0,J3)}multiplicity(){return this.getRuleContext(0,Rx)}package(){return this.getRuleContext(0,sd)}libraryPackage(){return this.getRuleContext(0,od)}specialization(){return this.getRuleContext(0,t3)}conjugation(){return this.getRuleContext(0,r3)}subclassification(){return this.getRuleContext(0,c3)}disjoining(){return this.getRuleContext(0,n3)}featureInverting(){return this.getRuleContext(0,w3)}featureTyping(){return this.getRuleContext(0,da)}subsetting(){return this.getRuleContext(0,S3)}redefinition(){return this.getRuleContext(0,L3)}typeFeaturing(){return this.getRuleContext(0,A3)}get ruleIndex(){return l.RULE_nonFeatureElement}enterRule(e){e.enterNonFeatureElement&&e.enterNonFeatureElement(this)}exitRule(e){e.exitNonFeatureElement&&e.exitNonFeatureElement(this)}accept(e){return e.visitNonFeatureElement?e.visitNonFeatureElement(this):e.visitChildren(this)}},Qs=class extends h{constructor(e,t){super(e,t)}feature(){return this.getRuleContext(0,d3)}step(){return this.getRuleContext(0,G3)}expression(){return this.getRuleContext(0,K3)}booleanExpression(){return this.getRuleContext(0,Q3)}invariant(){return this.getRuleContext(0,Y3)}connector(){return this.getRuleContext(0,O3)}bindingConnector(){return this.getRuleContext(0,B3)}succession(){return this.getRuleContext(0,q3)}flow(){return this.getRuleContext(0,fx)}successionFlow(){return this.getRuleContext(0,mx)}get ruleIndex(){return l.RULE_featureElement}enterRule(e){e.enterFeatureElement&&e.enterFeatureElement(this)}exitRule(e){e.exitFeatureElement&&e.exitFeatureElement(this)}accept(e){return e.visitFeatureElement?e.visitFeatureElement(this):e.visitChildren(this)}},Kg=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}TYPE(){return this.getToken(l.TYPE,0)}typeDeclaration(){return this.getRuleContext(0,Jg)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_type}enterRule(e){e.enterType&&e.enterType(this)}exitRule(e){e.exitType&&e.exitType(this)}accept(e){return e.visitType?e.visitType(this):e.visitChildren(this)}},Dr=class extends h{constructor(e,t){super(e,t)}ABSTRACT(){return this.getToken(l.ABSTRACT,0)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}get ruleIndex(){return l.RULE_typePrefix}enterRule(e){e.enterTypePrefix&&e.enterTypePrefix(this)}exitRule(e){e.exitTypePrefix&&e.exitTypePrefix(this)}accept(e){return e.visitTypePrefix?e.visitTypePrefix(this):e.visitChildren(this)}},Jg=class extends h{constructor(e,t){super(e,t)}ALL(){return this.getToken(l.ALL,0)}identification(){return this.getRuleContext(0,ot)}ownedMultiplicity(){return this.getRuleContext(0,os)}specializationPart(e){return e===void 0?this.getRuleContexts(O1):this.getRuleContext(e,O1)}conjugationPart(e){return e===void 0?this.getRuleContexts(la):this.getRuleContext(e,la)}typeRelationshipPart(e){return e===void 0?this.getRuleContexts(Ys):this.getRuleContext(e,Ys)}get ruleIndex(){return l.RULE_typeDeclaration}enterRule(e){e.enterTypeDeclaration&&e.enterTypeDeclaration(this)}exitRule(e){e.exitTypeDeclaration&&e.exitTypeDeclaration(this)}accept(e){return e.visitTypeDeclaration?e.visitTypeDeclaration(this):e.visitChildren(this)}},O1=class extends h{constructor(e,t){super(e,t)}ownedSpecialization(e){return e===void 0?this.getRuleContexts(D1):this.getRuleContext(e,D1)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SPECIALIZES(){return this.getToken(l.SPECIALIZES,0)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_specializationPart}enterRule(e){e.enterSpecializationPart&&e.enterSpecializationPart(this)}exitRule(e){e.exitSpecializationPart&&e.exitSpecializationPart(this)}accept(e){return e.visitSpecializationPart?e.visitSpecializationPart(this):e.visitChildren(this)}},la=class extends h{constructor(e,t){super(e,t)}ownedConjugation(){return this.getRuleContext(0,i3)}TILDE(){return this.getToken(l.TILDE,0)}CONJUGATES(){return this.getToken(l.CONJUGATES,0)}get ruleIndex(){return l.RULE_conjugationPart}enterRule(e){e.enterConjugationPart&&e.enterConjugationPart(this)}exitRule(e){e.exitConjugationPart&&e.exitConjugationPart(this)}accept(e){return e.visitConjugationPart?e.visitConjugationPart(this):e.visitChildren(this)}},Ys=class extends h{constructor(e,t){super(e,t)}disjoiningPart(){return this.getRuleContext(0,Qg)}unioningPart(){return this.getRuleContext(0,Yg)}intersectingPart(){return this.getRuleContext(0,Xg)}differencingPart(){return this.getRuleContext(0,e3)}get ruleIndex(){return l.RULE_typeRelationshipPart}enterRule(e){e.enterTypeRelationshipPart&&e.enterTypeRelationshipPart(this)}exitRule(e){e.exitTypeRelationshipPart&&e.exitTypeRelationshipPart(this)}accept(e){return e.visitTypeRelationshipPart?e.visitTypeRelationshipPart(this):e.visitChildren(this)}},Qg=class extends h{constructor(e,t){super(e,t)}DISJOINT(){return this.getToken(l.DISJOINT,0)}FROM(){return this.getToken(l.FROM,0)}ownedDisjoining(e){return e===void 0?this.getRuleContexts($1):this.getRuleContext(e,$1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_disjoiningPart}enterRule(e){e.enterDisjoiningPart&&e.enterDisjoiningPart(this)}exitRule(e){e.exitDisjoiningPart&&e.exitDisjoiningPart(this)}accept(e){return e.visitDisjoiningPart?e.visitDisjoiningPart(this):e.visitChildren(this)}},Yg=class extends h{constructor(e,t){super(e,t)}UNIONS(){return this.getToken(l.UNIONS,0)}unioning(e){return e===void 0?this.getRuleContexts(F1):this.getRuleContext(e,F1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_unioningPart}enterRule(e){e.enterUnioningPart&&e.enterUnioningPart(this)}exitRule(e){e.exitUnioningPart&&e.exitUnioningPart(this)}accept(e){return e.visitUnioningPart?e.visitUnioningPart(this):e.visitChildren(this)}},Xg=class extends h{constructor(e,t){super(e,t)}INTERSECTS(){return this.getToken(l.INTERSECTS,0)}intersecting(e){return e===void 0?this.getRuleContexts(H1):this.getRuleContext(e,H1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_intersectingPart}enterRule(e){e.enterIntersectingPart&&e.enterIntersectingPart(this)}exitRule(e){e.exitIntersectingPart&&e.exitIntersectingPart(this)}accept(e){return e.visitIntersectingPart?e.visitIntersectingPart(this):e.visitChildren(this)}},e3=class extends h{constructor(e,t){super(e,t)}DIFFERENCES(){return this.getToken(l.DIFFERENCES,0)}differencing(e){return e===void 0?this.getRuleContexts(z1):this.getRuleContext(e,z1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_differencingPart}enterRule(e){e.enterDifferencingPart&&e.enterDifferencingPart(this)}exitRule(e){e.exitDifferencingPart&&e.exitDifferencingPart(this)}accept(e){return e.visitDifferencingPart?e.visitDifferencingPart(this):e.visitChildren(this)}},Ut=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}typeBodyElement(e){return e===void 0?this.getRuleContexts(ua):this.getRuleContext(e,ua)}get ruleIndex(){return l.RULE_typeBody}enterRule(e){e.enterTypeBody&&e.enterTypeBody(this)}exitRule(e){e.exitTypeBody&&e.exitTypeBody(this)}accept(e){return e.visitTypeBody?e.visitTypeBody(this):e.visitChildren(this)}},ua=class extends h{constructor(e,t){super(e,t)}nonFeatureMember(){return this.getRuleContext(0,mu)}featureMember(){return this.getRuleContext(0,s3)}aliasMember(){return this.getRuleContext(0,sn)}importRule(){return this.getRuleContext(0,wi)}get ruleIndex(){return l.RULE_typeBodyElement}enterRule(e){e.enterTypeBodyElement&&e.enterTypeBodyElement(this)}exitRule(e){e.exitTypeBodyElement&&e.exitTypeBodyElement(this)}accept(e){return e.visitTypeBodyElement?e.visitTypeBodyElement(this):e.visitChildren(this)}},t3=class extends h{constructor(e,t){super(e,t)}SUBTYPE(){return this.getToken(l.SUBTYPE,0)}specificType(){return this.getRuleContext(0,xu)}generalType(){return this.getRuleContext(0,Xs)}relationshipBody(){return this.getRuleContext(0,Xt)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SPECIALIZES(){return this.getToken(l.SPECIALIZES,0)}SPECIALIZATION(){return this.getToken(l.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_specialization}enterRule(e){e.enterSpecialization&&e.enterSpecialization(this)}exitRule(e){e.exitSpecialization&&e.exitSpecialization(this)}accept(e){return e.visitSpecialization?e.visitSpecialization(this):e.visitChildren(this)}},D1=class extends h{constructor(e,t){super(e,t)}generalType(){return this.getRuleContext(0,Xs)}get ruleIndex(){return l.RULE_ownedSpecialization}enterRule(e){e.enterOwnedSpecialization&&e.enterOwnedSpecialization(this)}exitRule(e){e.exitOwnedSpecialization&&e.exitOwnedSpecialization(this)}accept(e){return e.visitOwnedSpecialization?e.visitOwnedSpecialization(this):e.visitChildren(this)}},xu=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_specificType}enterRule(e){e.enterSpecificType&&e.enterSpecificType(this)}exitRule(e){e.exitSpecificType&&e.exitSpecificType(this)}accept(e){return e.visitSpecificType?e.visitSpecificType(this):e.visitChildren(this)}},Xs=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_generalType}enterRule(e){e.enterGeneralType&&e.enterGeneralType(this)}exitRule(e){e.exitGeneralType&&e.exitGeneralType(this)}accept(e){return e.visitGeneralType?e.visitGeneralType(this):e.visitChildren(this)}},r3=class extends h{constructor(e,t){super(e,t)}CONJUGATE(){return this.getToken(l.CONJUGATE,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}relationshipBody(){return this.getRuleContext(0,Xt)}TILDE(){return this.getToken(l.TILDE,0)}CONJUGATES(){return this.getToken(l.CONJUGATES,0)}CONJUGATION(){return this.getToken(l.CONJUGATION,0)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_conjugation}enterRule(e){e.enterConjugation&&e.enterConjugation(this)}exitRule(e){e.exitConjugation&&e.exitConjugation(this)}accept(e){return e.visitConjugation?e.visitConjugation(this):e.visitChildren(this)}},i3=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedConjugation}enterRule(e){e.enterOwnedConjugation&&e.enterOwnedConjugation(this)}exitRule(e){e.exitOwnedConjugation&&e.exitOwnedConjugation(this)}accept(e){return e.visitOwnedConjugation?e.visitOwnedConjugation(this):e.visitChildren(this)}},n3=class extends h{constructor(e,t){super(e,t)}DISJOINT(){return this.getToken(l.DISJOINT,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}FROM(){return this.getToken(l.FROM,0)}relationshipBody(){return this.getRuleContext(0,Xt)}DISJOINING(){return this.getToken(l.DISJOINING,0)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_disjoining}enterRule(e){e.enterDisjoining&&e.enterDisjoining(this)}exitRule(e){e.exitDisjoining&&e.exitDisjoining(this)}accept(e){return e.visitDisjoining?e.visitDisjoining(this):e.visitChildren(this)}},$1=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedDisjoining}enterRule(e){e.enterOwnedDisjoining&&e.enterOwnedDisjoining(this)}exitRule(e){e.exitOwnedDisjoining&&e.exitOwnedDisjoining(this)}accept(e){return e.visitOwnedDisjoining?e.visitOwnedDisjoining(this):e.visitChildren(this)}},F1=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_unioning}enterRule(e){e.enterUnioning&&e.enterUnioning(this)}exitRule(e){e.exitUnioning&&e.exitUnioning(this)}accept(e){return e.visitUnioning?e.visitUnioning(this):e.visitChildren(this)}},H1=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_intersecting}enterRule(e){e.enterIntersecting&&e.enterIntersecting(this)}exitRule(e){e.exitIntersecting&&e.exitIntersecting(this)}accept(e){return e.visitIntersecting?e.visitIntersecting(this):e.visitChildren(this)}},z1=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_differencing}enterRule(e){e.enterDifferencing&&e.enterDifferencing(this)}exitRule(e){e.exitDifferencing&&e.exitDifferencing(this)}accept(e){return e.visitDifferencing?e.visitDifferencing(this):e.visitChildren(this)}},s3=class extends h{constructor(e,t){super(e,t)}typeFeatureMember(){return this.getRuleContext(0,o3)}ownedFeatureMember(){return this.getRuleContext(0,a3)}get ruleIndex(){return l.RULE_featureMember}enterRule(e){e.enterFeatureMember&&e.enterFeatureMember(this)}exitRule(e){e.exitFeatureMember&&e.exitFeatureMember(this)}accept(e){return e.visitFeatureMember?e.visitFeatureMember(this):e.visitChildren(this)}},o3=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}MEMBER(){return this.getToken(l.MEMBER,0)}featureElement(){return this.getRuleContext(0,Qs)}get ruleIndex(){return l.RULE_typeFeatureMember}enterRule(e){e.enterTypeFeatureMember&&e.enterTypeFeatureMember(this)}exitRule(e){e.exitTypeFeatureMember&&e.exitTypeFeatureMember(this)}accept(e){return e.visitTypeFeatureMember?e.visitTypeFeatureMember(this):e.visitChildren(this)}},a3=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}featureElement(){return this.getRuleContext(0,Qs)}get ruleIndex(){return l.RULE_ownedFeatureMember}enterRule(e){e.enterOwnedFeatureMember&&e.enterOwnedFeatureMember(this)}exitRule(e){e.exitOwnedFeatureMember&&e.exitOwnedFeatureMember(this)}accept(e){return e.visitOwnedFeatureMember?e.visitOwnedFeatureMember(this):e.visitChildren(this)}},l3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}CLASSIFIER(){return this.getToken(l.CLASSIFIER,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_classifier}enterRule(e){e.enterClassifier&&e.enterClassifier(this)}exitRule(e){e.exitClassifier&&e.exitClassifier(this)}accept(e){return e.visitClassifier?e.visitClassifier(this):e.visitChildren(this)}},Qr=class extends h{constructor(e,t){super(e,t)}ALL(){return this.getToken(l.ALL,0)}identification(){return this.getRuleContext(0,ot)}ownedMultiplicity(){return this.getRuleContext(0,os)}superclassingPart(){return this.getRuleContext(0,u3)}conjugationPart(){return this.getRuleContext(0,la)}typeRelationshipPart(e){return e===void 0?this.getRuleContexts(Ys):this.getRuleContext(e,Ys)}get ruleIndex(){return l.RULE_classifierDeclaration}enterRule(e){e.enterClassifierDeclaration&&e.enterClassifierDeclaration(this)}exitRule(e){e.exitClassifierDeclaration&&e.exitClassifierDeclaration(this)}accept(e){return e.visitClassifierDeclaration?e.visitClassifierDeclaration(this):e.visitChildren(this)}},u3=class extends h{constructor(e,t){super(e,t)}ownedSubclassification(e){return e===void 0?this.getRuleContexts(ca):this.getRuleContext(e,ca)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SPECIALIZES(){return this.getToken(l.SPECIALIZES,0)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_superclassingPart}enterRule(e){e.enterSuperclassingPart&&e.enterSuperclassingPart(this)}exitRule(e){e.exitSuperclassingPart&&e.exitSuperclassingPart(this)}accept(e){return e.visitSuperclassingPart?e.visitSuperclassingPart(this):e.visitChildren(this)}},c3=class extends h{constructor(e,t){super(e,t)}SUBCLASSIFIER(){return this.getToken(l.SUBCLASSIFIER,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}relationshipBody(){return this.getRuleContext(0,Xt)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SPECIALIZES(){return this.getToken(l.SPECIALIZES,0)}SPECIALIZATION(){return this.getToken(l.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_subclassification}enterRule(e){e.enterSubclassification&&e.enterSubclassification(this)}exitRule(e){e.exitSubclassification&&e.exitSubclassification(this)}accept(e){return e.visitSubclassification?e.visitSubclassification(this):e.visitChildren(this)}},ca=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_ownedSubclassification}enterRule(e){e.enterOwnedSubclassification&&e.enterOwnedSubclassification(this)}exitRule(e){e.exitOwnedSubclassification&&e.exitOwnedSubclassification(this)}accept(e){return e.visitOwnedSubclassification?e.visitOwnedSubclassification(this):e.visitChildren(this)}},d3=class extends h{constructor(e,t){super(e,t)}typeBody(){return this.getRuleContext(0,Ut)}featurePrefix(){return this.getRuleContext(0,ci)}featureDeclaration(){return this.getRuleContext(0,Er)}valuePart(){return this.getRuleContext(0,St)}FEATURE(){return this.getToken(l.FEATURE,0)}prefixMetadataMember(){return this.getRuleContext(0,tr)}endFeaturePrefix(){return this.getRuleContext(0,B1)}basicFeaturePrefix(){return this.getRuleContext(0,bu)}get ruleIndex(){return l.RULE_feature}enterRule(e){e.enterFeature&&e.enterFeature(this)}exitRule(e){e.exitFeature&&e.exitFeature(this)}accept(e){return e.visitFeature?e.visitFeature(this):e.visitChildren(this)}},B1=class extends h{constructor(e,t){super(e,t)}END(){return this.getToken(l.END,0)}CONST(){return this.getToken(l.CONST,0)}get ruleIndex(){return l.RULE_endFeaturePrefix}enterRule(e){e.enterEndFeaturePrefix&&e.enterEndFeaturePrefix(this)}exitRule(e){e.exitEndFeaturePrefix&&e.exitEndFeaturePrefix(this)}accept(e){return e.visitEndFeaturePrefix?e.visitEndFeaturePrefix(this):e.visitChildren(this)}},bu=class extends h{constructor(e,t){super(e,t)}featureDirection(){return this.getRuleContext(0,q1)}DERIVED(){return this.getToken(l.DERIVED,0)}ABSTRACT(){return this.getToken(l.ABSTRACT,0)}COMPOSITE(){return this.getToken(l.COMPOSITE,0)}PORTION(){return this.getToken(l.PORTION,0)}VAR(){return this.getToken(l.VAR,0)}CONST(){return this.getToken(l.CONST,0)}get ruleIndex(){return l.RULE_basicFeaturePrefix}enterRule(e){e.enterBasicFeaturePrefix&&e.enterBasicFeaturePrefix(this)}exitRule(e){e.exitBasicFeaturePrefix&&e.exitBasicFeaturePrefix(this)}accept(e){return e.visitBasicFeaturePrefix?e.visitBasicFeaturePrefix(this):e.visitChildren(this)}},ci=class extends h{constructor(e,t){super(e,t)}endFeaturePrefix(){return this.getRuleContext(0,B1)}ownedCrossFeatureMember(){return this.getRuleContext(0,j1)}basicFeaturePrefix(){return this.getRuleContext(0,bu)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}get ruleIndex(){return l.RULE_featurePrefix}enterRule(e){e.enterFeaturePrefix&&e.enterFeaturePrefix(this)}exitRule(e){e.exitFeaturePrefix&&e.exitFeaturePrefix(this)}accept(e){return e.visitFeaturePrefix?e.visitFeaturePrefix(this):e.visitChildren(this)}},j1=class extends h{constructor(e,t){super(e,t)}ownedCrossFeature(){return this.getRuleContext(0,h3)}get ruleIndex(){return l.RULE_ownedCrossFeatureMember}enterRule(e){e.enterOwnedCrossFeatureMember&&e.enterOwnedCrossFeatureMember(this)}exitRule(e){e.exitOwnedCrossFeatureMember&&e.exitOwnedCrossFeatureMember(this)}accept(e){return e.visitOwnedCrossFeatureMember?e.visitOwnedCrossFeatureMember(this):e.visitChildren(this)}},h3=class extends h{constructor(e,t){super(e,t)}basicFeaturePrefix(){return this.getRuleContext(0,bu)}featureDeclaration(){return this.getRuleContext(0,Er)}basicUsagePrefix(){return this.getRuleContext(0,no)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_ownedCrossFeature}enterRule(e){e.enterOwnedCrossFeature&&e.enterOwnedCrossFeature(this)}exitRule(e){e.exitOwnedCrossFeature&&e.exitOwnedCrossFeature(this)}accept(e){return e.visitOwnedCrossFeature?e.visitOwnedCrossFeature(this):e.visitChildren(this)}},q1=class extends h{constructor(e,t){super(e,t)}IN(){return this.getToken(l.IN,0)}OUT(){return this.getToken(l.OUT,0)}INOUT(){return this.getToken(l.INOUT,0)}get ruleIndex(){return l.RULE_featureDirection}enterRule(e){e.enterFeatureDirection&&e.enterFeatureDirection(this)}exitRule(e){e.exitFeatureDirection&&e.exitFeatureDirection(this)}accept(e){return e.visitFeatureDirection?e.visitFeatureDirection(this):e.visitChildren(this)}},Er=class extends h{constructor(e,t){super(e,t)}featureIdentification(){return this.getRuleContext(0,p3)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}conjugationPart(){return this.getRuleContext(0,la)}ALL(){return this.getToken(l.ALL,0)}featureRelationshipPart(e){return e===void 0?this.getRuleContexts(V1):this.getRuleContext(e,V1)}get ruleIndex(){return l.RULE_featureDeclaration}enterRule(e){e.enterFeatureDeclaration&&e.enterFeatureDeclaration(this)}exitRule(e){e.exitFeatureDeclaration&&e.exitFeatureDeclaration(this)}accept(e){return e.visitFeatureDeclaration?e.visitFeatureDeclaration(this):e.visitChildren(this)}},p3=class extends h{constructor(e,t){super(e,t)}LT(){return this.getToken(l.LT,0)}name(e){return e===void 0?this.getRuleContexts(Or):this.getRuleContext(e,Or)}GT(){return this.getToken(l.GT,0)}get ruleIndex(){return l.RULE_featureIdentification}enterRule(e){e.enterFeatureIdentification&&e.enterFeatureIdentification(this)}exitRule(e){e.exitFeatureIdentification&&e.exitFeatureIdentification(this)}accept(e){return e.visitFeatureIdentification?e.visitFeatureIdentification(this):e.visitChildren(this)}},V1=class extends h{constructor(e,t){super(e,t)}typeRelationshipPart(){return this.getRuleContext(0,Ys)}chainingPart(){return this.getRuleContext(0,f3)}invertingPart(){return this.getRuleContext(0,m3)}typeFeaturingPart(){return this.getRuleContext(0,g3)}get ruleIndex(){return l.RULE_featureRelationshipPart}enterRule(e){e.enterFeatureRelationshipPart&&e.enterFeatureRelationshipPart(this)}exitRule(e){e.exitFeatureRelationshipPart&&e.exitFeatureRelationshipPart(this)}accept(e){return e.visitFeatureRelationshipPart?e.visitFeatureRelationshipPart(this):e.visitChildren(this)}},f3=class extends h{constructor(e,t){super(e,t)}CHAINS(){return this.getToken(l.CHAINS,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_chainingPart}enterRule(e){e.enterChainingPart&&e.enterChainingPart(this)}exitRule(e){e.exitChainingPart&&e.exitChainingPart(this)}accept(e){return e.visitChainingPart?e.visitChainingPart(this):e.visitChildren(this)}},m3=class extends h{constructor(e,t){super(e,t)}INVERSE(){return this.getToken(l.INVERSE,0)}OF(){return this.getToken(l.OF,0)}ownedFeatureInverting(){return this.getRuleContext(0,k3)}get ruleIndex(){return l.RULE_invertingPart}enterRule(e){e.enterInvertingPart&&e.enterInvertingPart(this)}exitRule(e){e.exitInvertingPart&&e.exitInvertingPart(this)}accept(e){return e.visitInvertingPart?e.visitInvertingPart(this):e.visitChildren(this)}},g3=class extends h{constructor(e,t){super(e,t)}FEATURED(){return this.getToken(l.FEATURED,0)}BY(){return this.getToken(l.BY,0)}ownedTypeFeaturing(e){return e===void 0?this.getRuleContexts(K1):this.getRuleContext(e,K1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_typeFeaturingPart}enterRule(e){e.enterTypeFeaturingPart&&e.enterTypeFeaturingPart(this)}exitRule(e){e.exitTypeFeaturingPart&&e.exitTypeFeaturingPart(this)}accept(e){return e.visitTypeFeaturingPart?e.visitTypeFeaturingPart(this):e.visitChildren(this)}},Sr=class extends h{constructor(e,t){super(e,t)}featureSpecialization(e){return e===void 0?this.getRuleContexts(on):this.getRuleContext(e,on)}multiplicityPart(){return this.getRuleContext(0,Z1)}get ruleIndex(){return l.RULE_featureSpecializationPart}enterRule(e){e.enterFeatureSpecializationPart&&e.enterFeatureSpecializationPart(this)}exitRule(e){e.exitFeatureSpecializationPart&&e.exitFeatureSpecializationPart(this)}accept(e){return e.visitFeatureSpecializationPart?e.visitFeatureSpecializationPart(this):e.visitChildren(this)}},Z1=class extends h{constructor(e,t){super(e,t)}ownedMultiplicity(){return this.getRuleContext(0,os)}ORDERED(){return this.getToken(l.ORDERED,0)}NONUNIQUE(){return this.getToken(l.NONUNIQUE,0)}get ruleIndex(){return l.RULE_multiplicityPart}enterRule(e){e.enterMultiplicityPart&&e.enterMultiplicityPart(this)}exitRule(e){e.exitMultiplicityPart&&e.exitMultiplicityPart(this)}accept(e){return e.visitMultiplicityPart?e.visitMultiplicityPart(this):e.visitChildren(this)}},on=class extends h{constructor(e,t){super(e,t)}typings(){return this.getRuleContext(0,x3)}subsettings(){return this.getRuleContext(0,y3)}references(){return this.getRuleContext(0,v3)}crosses(){return this.getRuleContext(0,R3)}redefinitions(){return this.getRuleContext(0,C3)}get ruleIndex(){return l.RULE_featureSpecialization}enterRule(e){e.enterFeatureSpecialization&&e.enterFeatureSpecialization(this)}exitRule(e){e.exitFeatureSpecialization&&e.exitFeatureSpecialization(this)}accept(e){return e.visitFeatureSpecialization?e.visitFeatureSpecialization(this):e.visitChildren(this)}},x3=class extends h{constructor(e,t){super(e,t)}typedBy(){return this.getRuleContext(0,b3)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}featureTyping(e){return e===void 0?this.getRuleContexts(da):this.getRuleContext(e,da)}get ruleIndex(){return l.RULE_typings}enterRule(e){e.enterTypings&&e.enterTypings(this)}exitRule(e){e.exitTypings&&e.exitTypings(this)}accept(e){return e.visitTypings?e.visitTypings(this):e.visitChildren(this)}},b3=class extends h{constructor(e,t){super(e,t)}featureTyping(){return this.getRuleContext(0,da)}COLON(){return this.getToken(l.COLON,0)}TYPED(){return this.getToken(l.TYPED,0)}BY(){return this.getToken(l.BY,0)}DEFINED(){return this.getToken(l.DEFINED,0)}get ruleIndex(){return l.RULE_typedBy}enterRule(e){e.enterTypedBy&&e.enterTypedBy(this)}exitRule(e){e.exitTypedBy&&e.exitTypedBy(this)}accept(e){return e.visitTypedBy?e.visitTypedBy(this):e.visitChildren(this)}},y3=class extends h{constructor(e,t){super(e,t)}subsets(){return this.getRuleContext(0,G1)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}ownedSubsetting(e){return e===void 0?this.getRuleContexts(yu):this.getRuleContext(e,yu)}get ruleIndex(){return l.RULE_subsettings}enterRule(e){e.enterSubsettings&&e.enterSubsettings(this)}exitRule(e){e.exitSubsettings&&e.exitSubsettings(this)}accept(e){return e.visitSubsettings?e.visitSubsettings(this):e.visitChildren(this)}},G1=class extends h{constructor(e,t){super(e,t)}ownedSubsetting(){return this.getRuleContext(0,yu)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SUBSETS(){return this.getToken(l.SUBSETS,0)}get ruleIndex(){return l.RULE_subsets}enterRule(e){e.enterSubsets&&e.enterSubsets(this)}exitRule(e){e.exitSubsets&&e.exitSubsets(this)}accept(e){return e.visitSubsets?e.visitSubsets(this):e.visitChildren(this)}},v3=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}COLON_COLON_GT(){return this.getToken(l.COLON_COLON_GT,0)}REFERENCES(){return this.getToken(l.REFERENCES,0)}get ruleIndex(){return l.RULE_references}enterRule(e){e.enterReferences&&e.enterReferences(this)}exitRule(e){e.exitReferences&&e.exitReferences(this)}accept(e){return e.visitReferences?e.visitReferences(this):e.visitChildren(this)}},R3=class extends h{constructor(e,t){super(e,t)}ownedCrossSubsetting(){return this.getRuleContext(0,P3)}FAT_ARROW(){return this.getToken(l.FAT_ARROW,0)}CROSSES(){return this.getToken(l.CROSSES,0)}get ruleIndex(){return l.RULE_crosses}enterRule(e){e.enterCrosses&&e.enterCrosses(this)}exitRule(e){e.exitCrosses&&e.exitCrosses(this)}accept(e){return e.visitCrosses?e.visitCrosses(this):e.visitChildren(this)}},C3=class extends h{constructor(e,t){super(e,t)}redefines(){return this.getRuleContext(0,E3)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}ownedRedefinition(e){return e===void 0?this.getRuleContexts(eo):this.getRuleContext(e,eo)}get ruleIndex(){return l.RULE_redefinitions}enterRule(e){e.enterRedefinitions&&e.enterRedefinitions(this)}exitRule(e){e.exitRedefinitions&&e.exitRedefinitions(this)}accept(e){return e.visitRedefinitions?e.visitRedefinitions(this):e.visitChildren(this)}},E3=class extends h{constructor(e,t){super(e,t)}ownedRedefinition(){return this.getRuleContext(0,eo)}COLON_GT_GT(){return this.getToken(l.COLON_GT_GT,0)}REDEFINES(){return this.getToken(l.REDEFINES,0)}get ruleIndex(){return l.RULE_redefines}enterRule(e){e.enterRedefines&&e.enterRedefines(this)}exitRule(e){e.exitRedefines&&e.exitRedefines(this)}accept(e){return e.visitRedefines?e.visitRedefines(this):e.visitChildren(this)}},da=class extends h{constructor(e,t){super(e,t)}TYPING(){return this.getToken(l.TYPING,0)}qualifiedName(){return this.getRuleContext(0,Y)}generalType(){return this.getRuleContext(0,Xs)}relationshipBody(){return this.getRuleContext(0,Xt)}COLON(){return this.getToken(l.COLON,0)}TYPED(){return this.getToken(l.TYPED,0)}BY(){return this.getToken(l.BY,0)}SPECIALIZATION(){return this.getToken(l.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,ot)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}conjugatedPortTyping(){return this.getRuleContext(0,Yx)}get ruleIndex(){return l.RULE_featureTyping}enterRule(e){e.enterFeatureTyping&&e.enterFeatureTyping(this)}exitRule(e){e.exitFeatureTyping&&e.exitFeatureTyping(this)}accept(e){return e.visitFeatureTyping?e.visitFeatureTyping(this):e.visitChildren(this)}},ns=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedFeatureTyping}enterRule(e){e.enterOwnedFeatureTyping&&e.enterOwnedFeatureTyping(this)}exitRule(e){e.exitOwnedFeatureTyping&&e.exitOwnedFeatureTyping(this)}accept(e){return e.visitOwnedFeatureTyping?e.visitOwnedFeatureTyping(this):e.visitChildren(this)}},S3=class extends h{constructor(e,t){super(e,t)}SUBSET(){return this.getToken(l.SUBSET,0)}specificType(){return this.getRuleContext(0,xu)}generalType(){return this.getRuleContext(0,Xs)}relationshipBody(){return this.getRuleContext(0,Xt)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SUBSETS(){return this.getToken(l.SUBSETS,0)}SPECIALIZATION(){return this.getToken(l.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_subsetting}enterRule(e){e.enterSubsetting&&e.enterSubsetting(this)}exitRule(e){e.exitSubsetting&&e.exitSubsetting(this)}accept(e){return e.visitSubsetting?e.visitSubsetting(this):e.visitChildren(this)}},yu=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedSubsetting}enterRule(e){e.enterOwnedSubsetting&&e.enterOwnedSubsetting(this)}exitRule(e){e.exitOwnedSubsetting&&e.exitOwnedSubsetting(this)}accept(e){return e.visitOwnedSubsetting?e.visitOwnedSubsetting(this):e.visitChildren(this)}},er=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedReferenceSubsetting}enterRule(e){e.enterOwnedReferenceSubsetting&&e.enterOwnedReferenceSubsetting(this)}exitRule(e){e.exitOwnedReferenceSubsetting&&e.exitOwnedReferenceSubsetting(this)}accept(e){return e.visitOwnedReferenceSubsetting?e.visitOwnedReferenceSubsetting(this):e.visitChildren(this)}},P3=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedCrossSubsetting}enterRule(e){e.enterOwnedCrossSubsetting&&e.enterOwnedCrossSubsetting(this)}exitRule(e){e.exitOwnedCrossSubsetting&&e.exitOwnedCrossSubsetting(this)}accept(e){return e.visitOwnedCrossSubsetting?e.visitOwnedCrossSubsetting(this):e.visitChildren(this)}},L3=class extends h{constructor(e,t){super(e,t)}REDEFINITION(){return this.getToken(l.REDEFINITION,0)}specificType(){return this.getRuleContext(0,xu)}generalType(){return this.getRuleContext(0,Xs)}relationshipBody(){return this.getRuleContext(0,Xt)}COLON_GT_GT(){return this.getToken(l.COLON_GT_GT,0)}REDEFINES(){return this.getToken(l.REDEFINES,0)}SPECIALIZATION(){return this.getToken(l.SPECIALIZATION,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_redefinition}enterRule(e){e.enterRedefinition&&e.enterRedefinition(this)}exitRule(e){e.exitRedefinition&&e.exitRedefinition(this)}accept(e){return e.visitRedefinition?e.visitRedefinition(this):e.visitChildren(this)}},eo=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedRedefinition}enterRule(e){e.enterOwnedRedefinition&&e.enterOwnedRedefinition(this)}exitRule(e){e.exitOwnedRedefinition&&e.exitOwnedRedefinition(this)}accept(e){return e.visitOwnedRedefinition?e.visitOwnedRedefinition(this):e.visitChildren(this)}},T3=class extends h{constructor(e,t){super(e,t)}featureChain(){return this.getRuleContext(0,W1)}ownedFeatureChaining(e){return e===void 0?this.getRuleContexts(ss):this.getRuleContext(e,ss)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedFeatureChain}enterRule(e){e.enterOwnedFeatureChain&&e.enterOwnedFeatureChain(this)}exitRule(e){e.exitOwnedFeatureChain&&e.exitOwnedFeatureChain(this)}accept(e){return e.visitOwnedFeatureChain?e.visitOwnedFeatureChain(this):e.visitChildren(this)}},W1=class extends h{constructor(e,t){super(e,t)}ownedFeatureChaining(e){return e===void 0?this.getRuleContexts(ss):this.getRuleContext(e,ss)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_featureChain}enterRule(e){e.enterFeatureChain&&e.enterFeatureChain(this)}exitRule(e){e.exitFeatureChain&&e.exitFeatureChain(this)}accept(e){return e.visitFeatureChain?e.visitFeatureChain(this):e.visitChildren(this)}},ss=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_ownedFeatureChaining}enterRule(e){e.enterOwnedFeatureChaining&&e.enterOwnedFeatureChaining(this)}exitRule(e){e.exitOwnedFeatureChaining&&e.exitOwnedFeatureChaining(this)}accept(e){return e.visitOwnedFeatureChaining?e.visitOwnedFeatureChaining(this):e.visitChildren(this)}},w3=class extends h{constructor(e,t){super(e,t)}INVERSE(){return this.getToken(l.INVERSE,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}OF(){return this.getToken(l.OF,0)}relationshipBody(){return this.getRuleContext(0,Xt)}INVERTING(){return this.getToken(l.INVERTING,0)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_featureInverting}enterRule(e){e.enterFeatureInverting&&e.enterFeatureInverting(this)}exitRule(e){e.exitFeatureInverting&&e.exitFeatureInverting(this)}accept(e){return e.visitFeatureInverting?e.visitFeatureInverting(this):e.visitChildren(this)}},k3=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_ownedFeatureInverting}enterRule(e){e.enterOwnedFeatureInverting&&e.enterOwnedFeatureInverting(this)}exitRule(e){e.exitOwnedFeatureInverting&&e.exitOwnedFeatureInverting(this)}accept(e){return e.visitOwnedFeatureInverting?e.visitOwnedFeatureInverting(this):e.visitChildren(this)}},A3=class extends h{constructor(e,t){super(e,t)}FEATURING(){return this.getToken(l.FEATURING,0)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}BY(){return this.getToken(l.BY,0)}relationshipBody(){return this.getRuleContext(0,Xt)}OF(){return this.getToken(l.OF,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_typeFeaturing}enterRule(e){e.enterTypeFeaturing&&e.enterTypeFeaturing(this)}exitRule(e){e.exitTypeFeaturing&&e.exitTypeFeaturing(this)}accept(e){return e.visitTypeFeaturing?e.visitTypeFeaturing(this):e.visitChildren(this)}},K1=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_ownedTypeFeaturing}enterRule(e){e.enterOwnedTypeFeaturing&&e.enterOwnedTypeFeaturing(this)}exitRule(e){e.exitOwnedTypeFeaturing&&e.exitOwnedTypeFeaturing(this)}accept(e){return e.visitOwnedTypeFeaturing?e.visitOwnedTypeFeaturing(this):e.visitChildren(this)}},M3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}DATATYPE(){return this.getToken(l.DATATYPE,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_dataType}enterRule(e){e.enterDataType&&e.enterDataType(this)}exitRule(e){e.exitDataType&&e.exitDataType(this)}accept(e){return e.visitDataType?e.visitDataType(this):e.visitChildren(this)}},_3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}CLASS(){return this.getToken(l.CLASS,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_class}enterRule(e){e.enterClass&&e.enterClass(this)}exitRule(e){e.exitClass&&e.exitClass(this)}accept(e){return e.visitClass?e.visitClass(this):e.visitChildren(this)}},N3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}STRUCT(){return this.getToken(l.STRUCT,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_structure}enterRule(e){e.enterStructure&&e.enterStructure(this)}exitRule(e){e.exitStructure&&e.exitStructure(this)}accept(e){return e.visitStructure?e.visitStructure(this):e.visitChildren(this)}},I3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}ASSOC(){return this.getToken(l.ASSOC,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_association}enterRule(e){e.enterAssociation&&e.enterAssociation(this)}exitRule(e){e.exitAssociation&&e.exitAssociation(this)}accept(e){return e.visitAssociation?e.visitAssociation(this):e.visitChildren(this)}},U3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}ASSOC(){return this.getToken(l.ASSOC,0)}STRUCT(){return this.getToken(l.STRUCT,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_associationStructure}enterRule(e){e.enterAssociationStructure&&e.enterAssociationStructure(this)}exitRule(e){e.exitAssociationStructure&&e.exitAssociationStructure(this)}accept(e){return e.visitAssociationStructure?e.visitAssociationStructure(this):e.visitChildren(this)}},O3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}CONNECTOR(){return this.getToken(l.CONNECTOR,0)}typeBody(){return this.getRuleContext(0,Ut)}connectorDeclaration(){return this.getRuleContext(0,D3)}featureDeclaration(){return this.getRuleContext(0,Er)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_connector}enterRule(e){e.enterConnector&&e.enterConnector(this)}exitRule(e){e.exitConnector&&e.exitConnector(this)}accept(e){return e.visitConnector?e.visitConnector(this):e.visitChildren(this)}},D3=class extends h{constructor(e,t){super(e,t)}binaryConnectorDeclaration(){return this.getRuleContext(0,$3)}naryConnectorDeclaration(){return this.getRuleContext(0,F3)}get ruleIndex(){return l.RULE_connectorDeclaration}enterRule(e){e.enterConnectorDeclaration&&e.enterConnectorDeclaration(this)}exitRule(e){e.exitConnectorDeclaration&&e.exitConnectorDeclaration(this)}accept(e){return e.visitConnectorDeclaration?e.visitConnectorDeclaration(this):e.visitChildren(this)}},$3=class extends h{constructor(e,t){super(e,t)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}TO(){return this.getToken(l.TO,0)}FROM(){return this.getToken(l.FROM,0)}ALL(){return this.getToken(l.ALL,0)}featureDeclaration(){return this.getRuleContext(0,Er)}get ruleIndex(){return l.RULE_binaryConnectorDeclaration}enterRule(e){e.enterBinaryConnectorDeclaration&&e.enterBinaryConnectorDeclaration(this)}exitRule(e){e.exitBinaryConnectorDeclaration&&e.exitBinaryConnectorDeclaration(this)}accept(e){return e.visitBinaryConnectorDeclaration?e.visitBinaryConnectorDeclaration(this):e.visitChildren(this)}},F3=class extends h{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(l.LPAREN,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}RPAREN(){return this.getToken(l.RPAREN,0)}featureDeclaration(){return this.getRuleContext(0,Er)}get ruleIndex(){return l.RULE_naryConnectorDeclaration}enterRule(e){e.enterNaryConnectorDeclaration&&e.enterNaryConnectorDeclaration(this)}exitRule(e){e.exitNaryConnectorDeclaration&&e.exitNaryConnectorDeclaration(this)}accept(e){return e.visitNaryConnectorDeclaration?e.visitNaryConnectorDeclaration(this):e.visitChildren(this)}},Ft=class extends h{constructor(e,t){super(e,t)}connectorEnd(){return this.getRuleContext(0,H3)}get ruleIndex(){return l.RULE_connectorEndMember}enterRule(e){e.enterConnectorEndMember&&e.enterConnectorEndMember(this)}exitRule(e){e.exitConnectorEndMember&&e.exitConnectorEndMember(this)}accept(e){return e.visitConnectorEndMember?e.visitConnectorEndMember(this):e.visitChildren(this)}},H3=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}ownedCrossMultiplicityMember(){return this.getRuleContext(0,J1)}name(){return this.getRuleContext(0,Or)}COLON_COLON_GT(){return this.getToken(l.COLON_COLON_GT,0)}REFERENCES(){return this.getToken(l.REFERENCES,0)}get ruleIndex(){return l.RULE_connectorEnd}enterRule(e){e.enterConnectorEnd&&e.enterConnectorEnd(this)}exitRule(e){e.exitConnectorEnd&&e.exitConnectorEnd(this)}accept(e){return e.visitConnectorEnd?e.visitConnectorEnd(this):e.visitChildren(this)}},J1=class extends h{constructor(e,t){super(e,t)}ownedCrossMultiplicity(){return this.getRuleContext(0,z3)}get ruleIndex(){return l.RULE_ownedCrossMultiplicityMember}enterRule(e){e.enterOwnedCrossMultiplicityMember&&e.enterOwnedCrossMultiplicityMember(this)}exitRule(e){e.exitOwnedCrossMultiplicityMember&&e.exitOwnedCrossMultiplicityMember(this)}accept(e){return e.visitOwnedCrossMultiplicityMember?e.visitOwnedCrossMultiplicityMember(this):e.visitChildren(this)}},z3=class extends h{constructor(e,t){super(e,t)}ownedMultiplicity(){return this.getRuleContext(0,os)}get ruleIndex(){return l.RULE_ownedCrossMultiplicity}enterRule(e){e.enterOwnedCrossMultiplicity&&e.enterOwnedCrossMultiplicity(this)}exitRule(e){e.exitOwnedCrossMultiplicity&&e.exitOwnedCrossMultiplicity(this)}accept(e){return e.visitOwnedCrossMultiplicity?e.visitOwnedCrossMultiplicity(this):e.visitChildren(this)}},B3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}BINDING(){return this.getToken(l.BINDING,0)}bindingConnectorDeclaration(){return this.getRuleContext(0,j3)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_bindingConnector}enterRule(e){e.enterBindingConnector&&e.enterBindingConnector(this)}exitRule(e){e.exitBindingConnector&&e.exitBindingConnector(this)}accept(e){return e.visitBindingConnector?e.visitBindingConnector(this):e.visitChildren(this)}},j3=class extends h{constructor(e,t){super(e,t)}featureDeclaration(){return this.getRuleContext(0,Er)}OF(){return this.getToken(l.OF,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}EQ(){return this.getToken(l.EQ,0)}ALL(){return this.getToken(l.ALL,0)}get ruleIndex(){return l.RULE_bindingConnectorDeclaration}enterRule(e){e.enterBindingConnectorDeclaration&&e.enterBindingConnectorDeclaration(this)}exitRule(e){e.exitBindingConnectorDeclaration&&e.exitBindingConnectorDeclaration(this)}accept(e){return e.visitBindingConnectorDeclaration?e.visitBindingConnectorDeclaration(this):e.visitChildren(this)}},q3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}SUCCESSION(){return this.getToken(l.SUCCESSION,0)}successionDeclaration(){return this.getRuleContext(0,V3)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_succession}enterRule(e){e.enterSuccession&&e.enterSuccession(this)}exitRule(e){e.exitSuccession&&e.exitSuccession(this)}accept(e){return e.visitSuccession?e.visitSuccession(this):e.visitChildren(this)}},V3=class extends h{constructor(e,t){super(e,t)}featureDeclaration(){return this.getRuleContext(0,Er)}FIRST(){return this.getToken(l.FIRST,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}THEN(){return this.getToken(l.THEN,0)}ALL(){return this.getToken(l.ALL,0)}get ruleIndex(){return l.RULE_successionDeclaration}enterRule(e){e.enterSuccessionDeclaration&&e.enterSuccessionDeclaration(this)}exitRule(e){e.exitSuccessionDeclaration&&e.exitSuccessionDeclaration(this)}accept(e){return e.visitSuccessionDeclaration?e.visitSuccessionDeclaration(this):e.visitChildren(this)}},Z3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}BEHAVIOR(){return this.getToken(l.BEHAVIOR,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_behavior}enterRule(e){e.enterBehavior&&e.enterBehavior(this)}exitRule(e){e.exitBehavior&&e.exitBehavior(this)}accept(e){return e.visitBehavior?e.visitBehavior(this):e.visitChildren(this)}},G3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}STEP(){return this.getToken(l.STEP,0)}featureDeclaration(){return this.getRuleContext(0,Er)}typeBody(){return this.getRuleContext(0,Ut)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_step}enterRule(e){e.enterStep&&e.enterStep(this)}exitRule(e){e.exitStep&&e.exitStep(this)}accept(e){return e.visitStep?e.visitStep(this):e.visitChildren(this)}},W3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}FUNCTION(){return this.getToken(l.FUNCTION,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}functionBody(){return this.getRuleContext(0,to)}get ruleIndex(){return l.RULE_function}enterRule(e){e.enterFunction&&e.enterFunction(this)}exitRule(e){e.exitFunction&&e.exitFunction(this)}accept(e){return e.visitFunction?e.visitFunction(this):e.visitChildren(this)}},to=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}functionBodyPart(){return this.getRuleContext(0,vu)}RBRACE(){return this.getToken(l.RBRACE,0)}get ruleIndex(){return l.RULE_functionBody}enterRule(e){e.enterFunctionBody&&e.enterFunctionBody(this)}exitRule(e){e.exitFunctionBody&&e.exitFunctionBody(this)}accept(e){return e.visitFunctionBody?e.visitFunctionBody(this):e.visitChildren(this)}},vu=class extends h{constructor(e,t){super(e,t)}typeBodyElement(e){return e===void 0?this.getRuleContexts(ua):this.getRuleContext(e,ua)}returnFeatureMember(e){return e===void 0?this.getRuleContexts(Q1):this.getRuleContext(e,Q1)}resultExpressionMember(){return this.getRuleContext(0,Ru)}get ruleIndex(){return l.RULE_functionBodyPart}enterRule(e){e.enterFunctionBodyPart&&e.enterFunctionBodyPart(this)}exitRule(e){e.exitFunctionBodyPart&&e.exitFunctionBodyPart(this)}accept(e){return e.visitFunctionBodyPart?e.visitFunctionBodyPart(this):e.visitChildren(this)}},Q1=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}RETURN(){return this.getToken(l.RETURN,0)}featureElement(){return this.getRuleContext(0,Qs)}get ruleIndex(){return l.RULE_returnFeatureMember}enterRule(e){e.enterReturnFeatureMember&&e.enterReturnFeatureMember(this)}exitRule(e){e.exitReturnFeatureMember&&e.exitReturnFeatureMember(this)}accept(e){return e.visitReturnFeatureMember?e.visitReturnFeatureMember(this):e.visitChildren(this)}},Ru=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_resultExpressionMember}enterRule(e){e.enterResultExpressionMember&&e.enterResultExpressionMember(this)}exitRule(e){e.exitResultExpressionMember&&e.exitResultExpressionMember(this)}accept(e){return e.visitResultExpressionMember?e.visitResultExpressionMember(this):e.visitChildren(this)}},K3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}EXPR(){return this.getToken(l.EXPR,0)}featureDeclaration(){return this.getRuleContext(0,Er)}functionBody(){return this.getRuleContext(0,to)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_expression}enterRule(e){e.enterExpression&&e.enterExpression(this)}exitRule(e){e.exitExpression&&e.exitExpression(this)}accept(e){return e.visitExpression?e.visitExpression(this):e.visitChildren(this)}},J3=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}PREDICATE(){return this.getToken(l.PREDICATE,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}functionBody(){return this.getRuleContext(0,to)}get ruleIndex(){return l.RULE_predicate}enterRule(e){e.enterPredicate&&e.enterPredicate(this)}exitRule(e){e.exitPredicate&&e.exitPredicate(this)}accept(e){return e.visitPredicate?e.visitPredicate(this):e.visitChildren(this)}},Q3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}BOOL(){return this.getToken(l.BOOL,0)}featureDeclaration(){return this.getRuleContext(0,Er)}functionBody(){return this.getRuleContext(0,to)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_booleanExpression}enterRule(e){e.enterBooleanExpression&&e.enterBooleanExpression(this)}exitRule(e){e.exitBooleanExpression&&e.exitBooleanExpression(this)}accept(e){return e.visitBooleanExpression?e.visitBooleanExpression(this):e.visitChildren(this)}},Y3=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}INV(){return this.getToken(l.INV,0)}featureDeclaration(){return this.getRuleContext(0,Er)}functionBody(){return this.getRuleContext(0,to)}valuePart(){return this.getRuleContext(0,St)}TRUE(){return this.getToken(l.TRUE,0)}FALSE(){return this.getToken(l.FALSE,0)}get ruleIndex(){return l.RULE_invariant}enterRule(e){e.enterInvariant&&e.enterInvariant(this)}exitRule(e){e.exitInvariant&&e.exitInvariant(this)}accept(e){return e.visitInvariant?e.visitInvariant(this):e.visitChildren(this)}},X3=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_ownedExpressionMember}enterRule(e){e.enterOwnedExpressionMember&&e.enterOwnedExpressionMember(this)}exitRule(e){e.exitOwnedExpressionMember&&e.exitOwnedExpressionMember(this)}accept(e){return e.visitOwnedExpressionMember?e.visitOwnedExpressionMember(this):e.visitChildren(this)}},j9=class extends h{constructor(e,t){super(e,t)}elementReferenceMember(){return this.getRuleContext(0,cx)}get ruleIndex(){return l.RULE_metadataReference}enterRule(e){e.enterMetadataReference&&e.enterMetadataReference(this)}exitRule(e){e.exitMetadataReference&&e.exitMetadataReference(this)}accept(e){return e.visitMetadataReference?e.visitMetadataReference(this):e.visitChildren(this)}},q9=class extends h{constructor(e,t){super(e,t)}typeReference(){return this.getRuleContext(0,cu)}get ruleIndex(){return l.RULE_typeReferenceMember}enterRule(e){e.enterTypeReferenceMember&&e.enterTypeReferenceMember(this)}exitRule(e){e.exitTypeReferenceMember&&e.exitTypeReferenceMember(this)}accept(e){return e.visitTypeReferenceMember?e.visitTypeReferenceMember(this):e.visitChildren(this)}},V9=class extends h{constructor(e,t){super(e,t)}typeReference(){return this.getRuleContext(0,cu)}get ruleIndex(){return l.RULE_typeResultMember}enterRule(e){e.enterTypeResultMember&&e.enterTypeResultMember(this)}exitRule(e){e.exitTypeResultMember&&e.exitTypeResultMember(this)}accept(e){return e.visitTypeResultMember?e.visitTypeResultMember(this):e.visitChildren(this)}},ex=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_referenceTyping}enterRule(e){e.enterReferenceTyping&&e.enterReferenceTyping(this)}exitRule(e){e.exitReferenceTyping&&e.exitReferenceTyping(this)}accept(e){return e.visitReferenceTyping?e.visitReferenceTyping(this):e.visitChildren(this)}},Z9=class extends h{constructor(e,t){super(e,t)}emptyFeature_(){return this.getRuleContext(0,ch)}get ruleIndex(){return l.RULE_emptyResultMember}enterRule(e){e.enterEmptyResultMember&&e.enterEmptyResultMember(this)}exitRule(e){e.exitEmptyResultMember&&e.exitEmptyResultMember(this)}accept(e){return e.visitEmptyResultMember?e.visitEmptyResultMember(this):e.visitChildren(this)}},G9=class extends h{constructor(e,t){super(e,t)}ownedExpressionMember(){return this.getRuleContext(0,X3)}COMMA(){return this.getToken(l.COMMA,0)}sequenceExpressionListMember(){return this.getRuleContext(0,tx)}get ruleIndex(){return l.RULE_sequenceOperatorExpression}enterRule(e){e.enterSequenceOperatorExpression&&e.enterSequenceOperatorExpression(this)}exitRule(e){e.exitSequenceOperatorExpression&&e.exitSequenceOperatorExpression(this)}accept(e){return e.visitSequenceOperatorExpression?e.visitSequenceOperatorExpression(this):e.visitChildren(this)}},tx=class extends h{constructor(e,t){super(e,t)}sequenceExpressionList(){return this.getRuleContext(0,du)}get ruleIndex(){return l.RULE_sequenceExpressionListMember}enterRule(e){e.enterSequenceExpressionListMember&&e.enterSequenceExpressionListMember(this)}exitRule(e){e.exitSequenceExpressionListMember&&e.exitSequenceExpressionListMember(this)}accept(e){return e.visitSequenceExpressionListMember?e.visitSequenceExpressionListMember(this):e.visitChildren(this)}},W9=class extends h{constructor(e,t){super(e,t)}bodyArgument(){return this.getRuleContext(0,rx)}get ruleIndex(){return l.RULE_bodyArgumentMember}enterRule(e){e.enterBodyArgumentMember&&e.enterBodyArgumentMember(this)}exitRule(e){e.exitBodyArgumentMember&&e.exitBodyArgumentMember(this)}accept(e){return e.visitBodyArgumentMember?e.visitBodyArgumentMember(this):e.visitChildren(this)}},rx=class extends h{constructor(e,t){super(e,t)}bodyArgumentValue(){return this.getRuleContext(0,ix)}get ruleIndex(){return l.RULE_bodyArgument}enterRule(e){e.enterBodyArgument&&e.enterBodyArgument(this)}exitRule(e){e.exitBodyArgument&&e.exitBodyArgument(this)}accept(e){return e.visitBodyArgument?e.visitBodyArgument(this):e.visitChildren(this)}},ix=class extends h{constructor(e,t){super(e,t)}bodyExpression(){return this.getRuleContext(0,hu)}get ruleIndex(){return l.RULE_bodyArgumentValue}enterRule(e){e.enterBodyArgumentValue&&e.enterBodyArgumentValue(this)}exitRule(e){e.exitBodyArgumentValue&&e.exitBodyArgumentValue(this)}accept(e){return e.visitBodyArgumentValue?e.visitBodyArgumentValue(this):e.visitChildren(this)}},K9=class extends h{constructor(e,t){super(e,t)}functionReferenceArgument(){return this.getRuleContext(0,nx)}get ruleIndex(){return l.RULE_functionReferenceArgumentMember}enterRule(e){e.enterFunctionReferenceArgumentMember&&e.enterFunctionReferenceArgumentMember(this)}exitRule(e){e.exitFunctionReferenceArgumentMember&&e.exitFunctionReferenceArgumentMember(this)}accept(e){return e.visitFunctionReferenceArgumentMember?e.visitFunctionReferenceArgumentMember(this):e.visitChildren(this)}},nx=class extends h{constructor(e,t){super(e,t)}functionReferenceArgumentValue(){return this.getRuleContext(0,sx)}get ruleIndex(){return l.RULE_functionReferenceArgument}enterRule(e){e.enterFunctionReferenceArgument&&e.enterFunctionReferenceArgument(this)}exitRule(e){e.exitFunctionReferenceArgument&&e.exitFunctionReferenceArgument(this)}accept(e){return e.visitFunctionReferenceArgument?e.visitFunctionReferenceArgument(this):e.visitChildren(this)}},sx=class extends h{constructor(e,t){super(e,t)}functionReferenceExpression(){return this.getRuleContext(0,ox)}get ruleIndex(){return l.RULE_functionReferenceArgumentValue}enterRule(e){e.enterFunctionReferenceArgumentValue&&e.enterFunctionReferenceArgumentValue(this)}exitRule(e){e.exitFunctionReferenceArgumentValue&&e.exitFunctionReferenceArgumentValue(this)}accept(e){return e.visitFunctionReferenceArgumentValue?e.visitFunctionReferenceArgumentValue(this):e.visitChildren(this)}},ox=class extends h{constructor(e,t){super(e,t)}functionReferenceMember(){return this.getRuleContext(0,ax)}get ruleIndex(){return l.RULE_functionReferenceExpression}enterRule(e){e.enterFunctionReferenceExpression&&e.enterFunctionReferenceExpression(this)}exitRule(e){e.exitFunctionReferenceExpression&&e.exitFunctionReferenceExpression(this)}accept(e){return e.visitFunctionReferenceExpression?e.visitFunctionReferenceExpression(this):e.visitChildren(this)}},ax=class extends h{constructor(e,t){super(e,t)}functionReference(){return this.getRuleContext(0,lx)}get ruleIndex(){return l.RULE_functionReferenceMember}enterRule(e){e.enterFunctionReferenceMember&&e.enterFunctionReferenceMember(this)}exitRule(e){e.exitFunctionReferenceMember&&e.exitFunctionReferenceMember(this)}accept(e){return e.visitFunctionReferenceMember?e.visitFunctionReferenceMember(this):e.visitChildren(this)}},lx=class extends h{constructor(e,t){super(e,t)}referenceTyping(){return this.getRuleContext(0,ex)}get ruleIndex(){return l.RULE_functionReference}enterRule(e){e.enterFunctionReference&&e.enterFunctionReference(this)}exitRule(e){e.exitFunctionReference&&e.exitFunctionReference(this)}accept(e){return e.visitFunctionReference?e.visitFunctionReference(this):e.visitChildren(this)}},ha=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_featureChainMember}enterRule(e){e.enterFeatureChainMember&&e.enterFeatureChainMember(this)}exitRule(e){e.exitFeatureChainMember&&e.exitFeatureChainMember(this)}accept(e){return e.visitFeatureChainMember?e.visitFeatureChainMember(this):e.visitChildren(this)}},J9=class extends h{constructor(e,t){super(e,t)}featureChain(){return this.getRuleContext(0,W1)}ownedFeatureChain(){return this.getRuleContext(0,T3)}get ruleIndex(){return l.RULE_ownedFeatureChainMember}enterRule(e){e.enterOwnedFeatureChainMember&&e.enterOwnedFeatureChainMember(this)}exitRule(e){e.exitOwnedFeatureChainMember&&e.exitOwnedFeatureChainMember(this)}accept(e){return e.visitOwnedFeatureChainMember?e.visitOwnedFeatureChainMember(this):e.visitChildren(this)}},Q9=class extends h{constructor(e,t){super(e,t)}featureReference(){return this.getRuleContext(0,ux)}get ruleIndex(){return l.RULE_featureReferenceMember}enterRule(e){e.enterFeatureReferenceMember&&e.enterFeatureReferenceMember(this)}exitRule(e){e.exitFeatureReferenceMember&&e.exitFeatureReferenceMember(this)}accept(e){return e.visitFeatureReferenceMember?e.visitFeatureReferenceMember(this):e.visitChildren(this)}},ux=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_featureReference}enterRule(e){e.enterFeatureReference&&e.enterFeatureReference(this)}exitRule(e){e.exitFeatureReference&&e.exitFeatureReference(this)}accept(e){return e.visitFeatureReference?e.visitFeatureReference(this):e.visitChildren(this)}},cx=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_elementReferenceMember}enterRule(e){e.enterElementReferenceMember&&e.enterElementReferenceMember(this)}exitRule(e){e.exitElementReferenceMember&&e.exitElementReferenceMember(this)}accept(e){return e.visitElementReferenceMember?e.visitElementReferenceMember(this):e.visitChildren(this)}},Y9=class extends h{constructor(e,t){super(e,t)}constructorResult(){return this.getRuleContext(0,dx)}get ruleIndex(){return l.RULE_constructorResultMember}enterRule(e){e.enterConstructorResultMember&&e.enterConstructorResultMember(this)}exitRule(e){e.exitConstructorResultMember&&e.exitConstructorResultMember(this)}accept(e){return e.visitConstructorResultMember?e.visitConstructorResultMember(this):e.visitChildren(this)}},dx=class extends h{constructor(e,t){super(e,t)}argumentList(){return this.getRuleContext(0,Js)}get ruleIndex(){return l.RULE_constructorResult}enterRule(e){e.enterConstructorResult&&e.enterConstructorResult(this)}exitRule(e){e.exitConstructorResult&&e.exitConstructorResult(this)}accept(e){return e.visitConstructorResult?e.visitConstructorResult(this):e.visitChildren(this)}},X9=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_instantiatedTypeMember}enterRule(e){e.enterInstantiatedTypeMember&&e.enterInstantiatedTypeMember(this)}exitRule(e){e.exitInstantiatedTypeMember&&e.exitInstantiatedTypeMember(this)}accept(e){return e.visitInstantiatedTypeMember?e.visitInstantiatedTypeMember(this):e.visitChildren(this)}},eC=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_instantiatedTypeReference}enterRule(e){e.enterInstantiatedTypeReference&&e.enterInstantiatedTypeReference(this)}exitRule(e){e.exitInstantiatedTypeReference&&e.exitInstantiatedTypeReference(this)}accept(e){return e.visitInstantiatedTypeReference?e.visitInstantiatedTypeReference(this):e.visitChildren(this)}},tC=class extends h{constructor(e,t){super(e,t)}namedArgument(){return this.getRuleContext(0,pu)}get ruleIndex(){return l.RULE_namedArgumentMember}enterRule(e){e.enterNamedArgumentMember&&e.enterNamedArgumentMember(this)}exitRule(e){e.exitNamedArgumentMember&&e.exitNamedArgumentMember(this)}accept(e){return e.visitNamedArgumentMember?e.visitNamedArgumentMember(this):e.visitChildren(this)}},rC=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_parameterRedefinition}enterRule(e){e.enterParameterRedefinition&&e.enterParameterRedefinition(this)}exitRule(e){e.exitParameterRedefinition&&e.exitParameterRedefinition(this)}accept(e){return e.visitParameterRedefinition?e.visitParameterRedefinition(this):e.visitChildren(this)}},iC=class extends h{constructor(e,t){super(e,t)}expressionBody(){return this.getRuleContext(0,hx)}get ruleIndex(){return l.RULE_expressionBodyMember}enterRule(e){e.enterExpressionBodyMember&&e.enterExpressionBodyMember(this)}exitRule(e){e.exitExpressionBodyMember&&e.exitExpressionBodyMember(this)}accept(e){return e.visitExpressionBodyMember?e.visitExpressionBodyMember(this):e.visitChildren(this)}},hx=class extends h{constructor(e,t){super(e,t)}LBRACE(){return this.getToken(l.LBRACE,0)}functionBodyPart(){return this.getRuleContext(0,vu)}RBRACE(){return this.getToken(l.RBRACE,0)}get ruleIndex(){return l.RULE_expressionBody}enterRule(e){e.enterExpressionBody&&e.enterExpressionBody(this)}exitRule(e){e.exitExpressionBody&&e.exitExpressionBody(this)}accept(e){return e.visitExpressionBody?e.visitExpressionBody(this):e.visitChildren(this)}},nC=class extends h{constructor(e,t){super(e,t)}TRUE(){return this.getToken(l.TRUE,0)}FALSE(){return this.getToken(l.FALSE,0)}get ruleIndex(){return l.RULE_booleanValue}enterRule(e){e.enterBooleanValue&&e.enterBooleanValue(this)}exitRule(e){e.exitBooleanValue&&e.exitBooleanValue(this)}accept(e){return e.visitBooleanValue?e.visitBooleanValue(this):e.visitChildren(this)}},sC=class extends h{constructor(e,t){super(e,t)}DOT(){return this.getToken(l.DOT,0)}INTEGER(e){return e===void 0?this.getTokens(l.INTEGER):this.getToken(l.INTEGER,e)}REAL(){return this.getToken(l.REAL,0)}get ruleIndex(){return l.RULE_realValue}enterRule(e){e.enterRealValue&&e.enterRealValue(this)}exitRule(e){e.exitRealValue&&e.exitRealValue(this)}accept(e){return e.visitRealValue?e.visitRealValue(this):e.visitChildren(this)}},px=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}INTERACTION(){return this.getToken(l.INTERACTION,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_interaction}enterRule(e){e.enterInteraction&&e.enterInteraction(this)}exitRule(e){e.exitInteraction&&e.exitInteraction(this)}accept(e){return e.visitInteraction?e.visitInteraction(this):e.visitChildren(this)}},fx=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}FLOW(){return this.getToken(l.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,pa)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_flow}enterRule(e){e.enterFlow&&e.enterFlow(this)}exitRule(e){e.exitFlow&&e.exitFlow(this)}accept(e){return e.visitFlow?e.visitFlow(this):e.visitChildren(this)}},mx=class extends h{constructor(e,t){super(e,t)}featurePrefix(){return this.getRuleContext(0,ci)}SUCCESSION(){return this.getToken(l.SUCCESSION,0)}FLOW(){return this.getToken(l.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,pa)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_successionFlow}enterRule(e){e.enterSuccessionFlow&&e.enterSuccessionFlow(this)}exitRule(e){e.exitSuccessionFlow&&e.exitSuccessionFlow(this)}accept(e){return e.visitSuccessionFlow?e.visitSuccessionFlow(this):e.visitChildren(this)}},pa=class extends h{constructor(e,t){super(e,t)}featureDeclaration(){return this.getRuleContext(0,Er)}valuePart(){return this.getRuleContext(0,St)}OF(){return this.getToken(l.OF,0)}payloadFeatureMember(){return this.getRuleContext(0,gx)}FROM(){return this.getToken(l.FROM,0)}flowEndMember(e){return e===void 0?this.getRuleContexts(X1):this.getRuleContext(e,X1)}TO(){return this.getToken(l.TO,0)}ALL(){return this.getToken(l.ALL,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}flowPayloadFeatureMember(){return this.getRuleContext(0,Dd)}get ruleIndex(){return l.RULE_flowDeclaration}enterRule(e){e.enterFlowDeclaration&&e.enterFlowDeclaration(this)}exitRule(e){e.exitFlowDeclaration&&e.exitFlowDeclaration(this)}accept(e){return e.visitFlowDeclaration?e.visitFlowDeclaration(this):e.visitChildren(this)}},gx=class extends h{constructor(e,t){super(e,t)}payloadFeature(){return this.getRuleContext(0,Cu)}get ruleIndex(){return l.RULE_payloadFeatureMember}enterRule(e){e.enterPayloadFeatureMember&&e.enterPayloadFeatureMember(this)}exitRule(e){e.exitPayloadFeatureMember&&e.exitPayloadFeatureMember(this)}accept(e){return e.visitPayloadFeatureMember?e.visitPayloadFeatureMember(this):e.visitChildren(this)}},Cu=class extends h{constructor(e,t){super(e,t)}valuePart(){return this.getRuleContext(0,St)}identification(){return this.getRuleContext(0,ot)}payloadFeatureSpecializationPart(){return this.getRuleContext(0,Y1)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}ownedMultiplicity(){return this.getRuleContext(0,os)}get ruleIndex(){return l.RULE_payloadFeature}enterRule(e){e.enterPayloadFeature&&e.enterPayloadFeature(this)}exitRule(e){e.exitPayloadFeature&&e.exitPayloadFeature(this)}accept(e){return e.visitPayloadFeature?e.visitPayloadFeature(this):e.visitChildren(this)}},Y1=class extends h{constructor(e,t){super(e,t)}featureSpecialization(e){return e===void 0?this.getRuleContexts(on):this.getRuleContext(e,on)}multiplicityPart(){return this.getRuleContext(0,Z1)}get ruleIndex(){return l.RULE_payloadFeatureSpecializationPart}enterRule(e){e.enterPayloadFeatureSpecializationPart&&e.enterPayloadFeatureSpecializationPart(this)}exitRule(e){e.exitPayloadFeatureSpecializationPart&&e.exitPayloadFeatureSpecializationPart(this)}accept(e){return e.visitPayloadFeatureSpecializationPart?e.visitPayloadFeatureSpecializationPart(this):e.visitChildren(this)}},X1=class extends h{constructor(e,t){super(e,t)}flowEnd(){return this.getRuleContext(0,xx)}get ruleIndex(){return l.RULE_flowEndMember}enterRule(e){e.enterFlowEndMember&&e.enterFlowEndMember(this)}exitRule(e){e.exitFlowEndMember&&e.exitFlowEndMember(this)}accept(e){return e.visitFlowEndMember?e.visitFlowEndMember(this):e.visitChildren(this)}},xx=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_flowEnd}enterRule(e){e.enterFlowEnd&&e.enterFlowEnd(this)}exitRule(e){e.exitFlowEnd&&e.exitFlowEnd(this)}accept(e){return e.visitFlowEnd?e.visitFlowEnd(this):e.visitChildren(this)}},oC=class extends h{constructor(e,t){super(e,t)}flowFeature(){return this.getRuleContext(0,bx)}get ruleIndex(){return l.RULE_flowFeatureMember}enterRule(e){e.enterFlowFeatureMember&&e.enterFlowFeatureMember(this)}exitRule(e){e.exitFlowFeatureMember&&e.exitFlowFeatureMember(this)}accept(e){return e.visitFlowFeatureMember?e.visitFlowFeatureMember(this):e.visitChildren(this)}},bx=class extends h{constructor(e,t){super(e,t)}flowFeatureRedefinition(){return this.getRuleContext(0,yx)}get ruleIndex(){return l.RULE_flowFeature}enterRule(e){e.enterFlowFeature&&e.enterFlowFeature(this)}exitRule(e){e.exitFlowFeature&&e.exitFlowFeature(this)}accept(e){return e.visitFlowFeature?e.visitFlowFeature(this):e.visitChildren(this)}},yx=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_flowFeatureRedefinition}enterRule(e){e.enterFlowFeatureRedefinition&&e.enterFlowFeatureRedefinition(this)}exitRule(e){e.exitFlowFeatureRedefinition&&e.exitFlowFeatureRedefinition(this)}accept(e){return e.visitFlowFeatureRedefinition?e.visitFlowFeatureRedefinition(this):e.visitChildren(this)}},St=class extends h{constructor(e,t){super(e,t)}featureValue(){return this.getRuleContext(0,vx)}get ruleIndex(){return l.RULE_valuePart}enterRule(e){e.enterValuePart&&e.enterValuePart(this)}exitRule(e){e.exitValuePart&&e.exitValuePart(this)}accept(e){return e.visitValuePart?e.visitValuePart(this):e.visitChildren(this)}},vx=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}EQ(){return this.getToken(l.EQ,0)}COLON_EQ(){return this.getToken(l.COLON_EQ,0)}DEFAULT(){return this.getToken(l.DEFAULT,0)}get ruleIndex(){return l.RULE_featureValue}enterRule(e){e.enterFeatureValue&&e.enterFeatureValue(this)}exitRule(e){e.exitFeatureValue&&e.exitFeatureValue(this)}accept(e){return e.visitFeatureValue?e.visitFeatureValue(this):e.visitChildren(this)}},Rx=class extends h{constructor(e,t){super(e,t)}multiplicitySubset(){return this.getRuleContext(0,Cx)}multiplicityRange(){return this.getRuleContext(0,Ex)}get ruleIndex(){return l.RULE_multiplicity}enterRule(e){e.enterMultiplicity&&e.enterMultiplicity(this)}exitRule(e){e.exitMultiplicity&&e.exitMultiplicity(this)}accept(e){return e.visitMultiplicity?e.visitMultiplicity(this):e.visitChildren(this)}},Cx=class extends h{constructor(e,t){super(e,t)}MULTIPLICITY(){return this.getToken(l.MULTIPLICITY,0)}subsets(){return this.getRuleContext(0,G1)}typeBody(){return this.getRuleContext(0,Ut)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_multiplicitySubset}enterRule(e){e.enterMultiplicitySubset&&e.enterMultiplicitySubset(this)}exitRule(e){e.exitMultiplicitySubset&&e.exitMultiplicitySubset(this)}accept(e){return e.visitMultiplicitySubset?e.visitMultiplicitySubset(this):e.visitChildren(this)}},Ex=class extends h{constructor(e,t){super(e,t)}MULTIPLICITY(){return this.getToken(l.MULTIPLICITY,0)}multiplicityBounds(){return this.getRuleContext(0,ed)}typeBody(){return this.getRuleContext(0,Ut)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_multiplicityRange}enterRule(e){e.enterMultiplicityRange&&e.enterMultiplicityRange(this)}exitRule(e){e.exitMultiplicityRange&&e.exitMultiplicityRange(this)}accept(e){return e.visitMultiplicityRange?e.visitMultiplicityRange(this):e.visitChildren(this)}},os=class extends h{constructor(e,t){super(e,t)}ownedMultiplicityRange(){return this.getRuleContext(0,Sx)}get ruleIndex(){return l.RULE_ownedMultiplicity}enterRule(e){e.enterOwnedMultiplicity&&e.enterOwnedMultiplicity(this)}exitRule(e){e.exitOwnedMultiplicity&&e.exitOwnedMultiplicity(this)}accept(e){return e.visitOwnedMultiplicity?e.visitOwnedMultiplicity(this):e.visitChildren(this)}},Sx=class extends h{constructor(e,t){super(e,t)}multiplicityBounds(){return this.getRuleContext(0,ed)}get ruleIndex(){return l.RULE_ownedMultiplicityRange}enterRule(e){e.enterOwnedMultiplicityRange&&e.enterOwnedMultiplicityRange(this)}exitRule(e){e.exitOwnedMultiplicityRange&&e.exitOwnedMultiplicityRange(this)}accept(e){return e.visitOwnedMultiplicityRange?e.visitOwnedMultiplicityRange(this):e.visitChildren(this)}},ed=class extends h{constructor(e,t){super(e,t)}LBRACK(){return this.getToken(l.LBRACK,0)}multiplicityExpressionMember(e){return e===void 0?this.getRuleContexts(td):this.getRuleContext(e,td)}RBRACK(){return this.getToken(l.RBRACK,0)}DOT_DOT(){return this.getToken(l.DOT_DOT,0)}get ruleIndex(){return l.RULE_multiplicityBounds}enterRule(e){e.enterMultiplicityBounds&&e.enterMultiplicityBounds(this)}exitRule(e){e.exitMultiplicityBounds&&e.exitMultiplicityBounds(this)}accept(e){return e.visitMultiplicityBounds?e.visitMultiplicityBounds(this):e.visitChildren(this)}},td=class extends h{constructor(e,t){super(e,t)}literalExpression(){return this.getRuleContext(0,w1)}featureReferenceExpression(){return this.getRuleContext(0,Lg)}get ruleIndex(){return l.RULE_multiplicityExpressionMember}enterRule(e){e.enterMultiplicityExpressionMember&&e.enterMultiplicityExpressionMember(this)}exitRule(e){e.exitMultiplicityExpressionMember&&e.exitMultiplicityExpressionMember(this)}accept(e){return e.visitMultiplicityExpressionMember?e.visitMultiplicityExpressionMember(this):e.visitChildren(this)}},Px=class extends h{constructor(e,t){super(e,t)}typePrefix(){return this.getRuleContext(0,Dr)}METACLASS(){return this.getToken(l.METACLASS,0)}classifierDeclaration(){return this.getRuleContext(0,Qr)}typeBody(){return this.getRuleContext(0,Ut)}get ruleIndex(){return l.RULE_metaclass}enterRule(e){e.enterMetaclass&&e.enterMetaclass(this)}exitRule(e){e.exitMetaclass&&e.exitMetaclass(this)}accept(e){return e.visitMetaclass?e.visitMetaclass(this):e.visitChildren(this)}},rd=class extends h{constructor(e,t){super(e,t)}HASH(){return this.getToken(l.HASH,0)}prefixMetadataFeature(){return this.getRuleContext(0,id)}prefixMetadataUsage(){return this.getRuleContext(0,ah)}get ruleIndex(){return l.RULE_prefixMetadataAnnotation}enterRule(e){e.enterPrefixMetadataAnnotation&&e.enterPrefixMetadataAnnotation(this)}exitRule(e){e.exitPrefixMetadataAnnotation&&e.exitPrefixMetadataAnnotation(this)}accept(e){return e.visitPrefixMetadataAnnotation?e.visitPrefixMetadataAnnotation(this):e.visitChildren(this)}},tr=class extends h{constructor(e,t){super(e,t)}HASH(){return this.getToken(l.HASH,0)}prefixMetadataFeature(){return this.getRuleContext(0,id)}prefixMetadataUsage(){return this.getRuleContext(0,ah)}get ruleIndex(){return l.RULE_prefixMetadataMember}enterRule(e){e.enterPrefixMetadataMember&&e.enterPrefixMetadataMember(this)}exitRule(e){e.exitPrefixMetadataMember&&e.exitPrefixMetadataMember(this)}accept(e){return e.visitPrefixMetadataMember?e.visitPrefixMetadataMember(this):e.visitChildren(this)}},id=class extends h{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}get ruleIndex(){return l.RULE_prefixMetadataFeature}enterRule(e){e.enterPrefixMetadataFeature&&e.enterPrefixMetadataFeature(this)}exitRule(e){e.exitPrefixMetadataFeature&&e.exitPrefixMetadataFeature(this)}accept(e){return e.visitPrefixMetadataFeature?e.visitPrefixMetadataFeature(this):e.visitChildren(this)}},Lx=class extends h{constructor(e,t){super(e,t)}metadataFeatureDeclaration(){return this.getRuleContext(0,Tx)}metadataBody(){return this.getRuleContext(0,fa)}AT_SIGN(){return this.getToken(l.AT_SIGN,0)}METADATA(){return this.getToken(l.METADATA,0)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}ABOUT(){return this.getToken(l.ABOUT,0)}annotation(e){return e===void 0?this.getRuleContexts(is):this.getRuleContext(e,is)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_metadataFeature}enterRule(e){e.enterMetadataFeature&&e.enterMetadataFeature(this)}exitRule(e){e.exitMetadataFeature&&e.exitMetadataFeature(this)}accept(e){return e.visitMetadataFeature?e.visitMetadataFeature(this):e.visitChildren(this)}},Tx=class extends h{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}COLON(){return this.getToken(l.COLON,0)}TYPED(){return this.getToken(l.TYPED,0)}BY(){return this.getToken(l.BY,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_metadataFeatureDeclaration}enterRule(e){e.enterMetadataFeatureDeclaration&&e.enterMetadataFeatureDeclaration(this)}exitRule(e){e.exitMetadataFeatureDeclaration&&e.exitMetadataFeatureDeclaration(this)}accept(e){return e.visitMetadataFeatureDeclaration?e.visitMetadataFeatureDeclaration(this):e.visitChildren(this)}},fa=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}metadataBodyElement(e){return e===void 0?this.getRuleContexts(nd):this.getRuleContext(e,nd)}definitionMember(e){return e===void 0?this.getRuleContexts(xa):this.getRuleContext(e,xa)}metadataBodyUsageMember(e){return e===void 0?this.getRuleContexts(lh):this.getRuleContext(e,lh)}aliasMember(e){return e===void 0?this.getRuleContexts(sn):this.getRuleContext(e,sn)}importRule(e){return e===void 0?this.getRuleContexts(wi):this.getRuleContext(e,wi)}get ruleIndex(){return l.RULE_metadataBody}enterRule(e){e.enterMetadataBody&&e.enterMetadataBody(this)}exitRule(e){e.exitMetadataBody&&e.exitMetadataBody(this)}accept(e){return e.visitMetadataBody?e.visitMetadataBody(this):e.visitChildren(this)}},nd=class extends h{constructor(e,t){super(e,t)}nonFeatureMember(){return this.getRuleContext(0,mu)}metadataBodyFeatureMember(){return this.getRuleContext(0,wx)}aliasMember(){return this.getRuleContext(0,sn)}importRule(){return this.getRuleContext(0,wi)}get ruleIndex(){return l.RULE_metadataBodyElement}enterRule(e){e.enterMetadataBodyElement&&e.enterMetadataBodyElement(this)}exitRule(e){e.exitMetadataBodyElement&&e.exitMetadataBodyElement(this)}accept(e){return e.visitMetadataBodyElement?e.visitMetadataBodyElement(this):e.visitChildren(this)}},wx=class extends h{constructor(e,t){super(e,t)}metadataBodyFeature(){return this.getRuleContext(0,kx)}get ruleIndex(){return l.RULE_metadataBodyFeatureMember}enterRule(e){e.enterMetadataBodyFeatureMember&&e.enterMetadataBodyFeatureMember(this)}exitRule(e){e.exitMetadataBodyFeatureMember&&e.exitMetadataBodyFeatureMember(this)}accept(e){return e.visitMetadataBodyFeatureMember?e.visitMetadataBodyFeatureMember(this):e.visitChildren(this)}},kx=class extends h{constructor(e,t){super(e,t)}ownedRedefinition(){return this.getRuleContext(0,eo)}metadataBody(){return this.getRuleContext(0,fa)}FEATURE(){return this.getToken(l.FEATURE,0)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}valuePart(){return this.getRuleContext(0,St)}COLON_GT_GT(){return this.getToken(l.COLON_GT_GT,0)}REDEFINES(){return this.getToken(l.REDEFINES,0)}get ruleIndex(){return l.RULE_metadataBodyFeature}enterRule(e){e.enterMetadataBodyFeature&&e.enterMetadataBodyFeature(this)}exitRule(e){e.exitMetadataBodyFeature&&e.exitMetadataBodyFeature(this)}accept(e){return e.visitMetadataBodyFeature?e.visitMetadataBodyFeature(this):e.visitChildren(this)}},sd=class extends h{constructor(e,t){super(e,t)}packageDeclaration(){return this.getRuleContext(0,ad)}packageBody(){return this.getRuleContext(0,ld)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}get ruleIndex(){return l.RULE_package}enterRule(e){e.enterPackage&&e.enterPackage(this)}exitRule(e){e.exitPackage&&e.exitPackage(this)}accept(e){return e.visitPackage?e.visitPackage(this):e.visitChildren(this)}},od=class extends h{constructor(e,t){super(e,t)}LIBRARY(){return this.getToken(l.LIBRARY,0)}packageDeclaration(){return this.getRuleContext(0,ad)}packageBody(){return this.getRuleContext(0,ld)}STANDARD(){return this.getToken(l.STANDARD,0)}prefixMetadataMember(e){return e===void 0?this.getRuleContexts(tr):this.getRuleContext(e,tr)}get ruleIndex(){return l.RULE_libraryPackage}enterRule(e){e.enterLibraryPackage&&e.enterLibraryPackage(this)}exitRule(e){e.exitLibraryPackage&&e.exitLibraryPackage(this)}accept(e){return e.visitLibraryPackage?e.visitLibraryPackage(this):e.visitChildren(this)}},ad=class extends h{constructor(e,t){super(e,t)}PACKAGE(){return this.getToken(l.PACKAGE,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_packageDeclaration}enterRule(e){e.enterPackageDeclaration&&e.enterPackageDeclaration(this)}exitRule(e){e.exitPackageDeclaration&&e.exitPackageDeclaration(this)}accept(e){return e.visitPackageDeclaration?e.visitPackageDeclaration(this):e.visitChildren(this)}},ld=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}packageBodyElement(e){return e===void 0?this.getRuleContexts(ma):this.getRuleContext(e,ma)}get ruleIndex(){return l.RULE_packageBody}enterRule(e){e.enterPackageBody&&e.enterPackageBody(this)}exitRule(e){e.exitPackageBody&&e.exitPackageBody(this)}accept(e){return e.visitPackageBody?e.visitPackageBody(this):e.visitChildren(this)}},Eu=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}FILTER(){return this.getToken(l.FILTER,0)}ownedExpression(){return this.getRuleContext(0,Me)}SEMI(){return this.getToken(l.SEMI,0)}get ruleIndex(){return l.RULE_elementFilterMember}enterRule(e){e.enterElementFilterMember&&e.enterElementFilterMember(this)}exitRule(e){e.exitElementFilterMember&&e.exitElementFilterMember(this)}accept(e){return e.visitElementFilterMember?e.visitElementFilterMember(this):e.visitChildren(this)}},Ax=class extends h{constructor(e,t){super(e,t)}qualifiedName(e){return e===void 0?this.getRuleContexts(Y):this.getRuleContext(e,Y)}TO(){return this.getToken(l.TO,0)}FROM(){return this.getToken(l.FROM,0)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_dependencyDeclaration}enterRule(e){e.enterDependencyDeclaration&&e.enterDependencyDeclaration(this)}exitRule(e){e.exitDependencyDeclaration&&e.exitDependencyDeclaration(this)}accept(e){return e.visitDependencyDeclaration?e.visitDependencyDeclaration(this):e.visitChildren(this)}},ud=class extends h{constructor(e,t){super(e,t)}annotatingElement(){return this.getRuleContext(0,aa)}get ruleIndex(){return l.RULE_annotatingMember}enterRule(e){e.enterAnnotatingMember&&e.enterAnnotatingMember(this)}exitRule(e){e.exitAnnotatingMember&&e.exitAnnotatingMember(this)}accept(e){return e.visitAnnotatingMember?e.visitAnnotatingMember(this):e.visitChildren(this)}},ma=class extends h{constructor(e,t){super(e,t)}packageMember(){return this.getRuleContext(0,Mx)}elementFilterMember(){return this.getRuleContext(0,Eu)}aliasMember(){return this.getRuleContext(0,sn)}importRule(){return this.getRuleContext(0,wi)}get ruleIndex(){return l.RULE_packageBodyElement}enterRule(e){e.enterPackageBodyElement&&e.enterPackageBodyElement(this)}exitRule(e){e.exitPackageBodyElement&&e.exitPackageBodyElement(this)}accept(e){return e.visitPackageBodyElement?e.visitPackageBodyElement(this):e.visitChildren(this)}},Mx=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}definitionElement(){return this.getRuleContext(0,Su)}usageElement(){return this.getRuleContext(0,cd)}get ruleIndex(){return l.RULE_packageMember}enterRule(e){e.enterPackageMember&&e.enterPackageMember(this)}exitRule(e){e.exitPackageMember&&e.exitPackageMember(this)}accept(e){return e.visitPackageMember?e.visitPackageMember(this):e.visitChildren(this)}},Su=class extends h{constructor(e,t){super(e,t)}package(){return this.getRuleContext(0,sd)}libraryPackage(){return this.getRuleContext(0,od)}annotatingElement(){return this.getRuleContext(0,aa)}dependency(){return this.getRuleContext(0,A1)}attributeDefinition(){return this.getRuleContext(0,Fx)}enumerationDefinition(){return this.getRuleContext(0,Hx)}occurrenceDefinition(){return this.getRuleContext(0,jx)}individualDefinition(){return this.getRuleContext(0,qx)}itemDefinition(){return this.getRuleContext(0,Gx)}partDefinition(){return this.getRuleContext(0,Wx)}connectionDefinition(){return this.getRuleContext(0,Xx)}flowDefinition(){return this.getRuleContext(0,mb)}interfaceDefinition(){return this.getRuleContext(0,rb)}portDefinition(){return this.getRuleContext(0,Kx)}actionDefinition(){return this.getRuleContext(0,vb)}calculationDefinition(){return this.getRuleContext(0,S4)}stateDefinition(){return this.getRuleContext(0,r4)}constraintDefinition(){return this.getRuleContext(0,T4)}requirementDefinition(){return this.getRuleContext(0,A4)}concernDefinition(){return this.getRuleContext(0,Z4)}caseDefinition(){return this.getRuleContext(0,W4)}analysisCaseDefinition(){return this.getRuleContext(0,Y4)}verificationCaseDefinition(){return this.getRuleContext(0,ey)}useCaseDefinition(){return this.getRuleContext(0,ny)}viewDefinition(){return this.getRuleContext(0,ay)}viewpointDefinition(){return this.getRuleContext(0,fy)}renderingDefinition(){return this.getRuleContext(0,gy)}metadataDefinition(){return this.getRuleContext(0,xy)}allocationDefinition(){return this.getRuleContext(0,pb)}extendedDefinition(){return this.getRuleContext(0,vy)}get ruleIndex(){return l.RULE_definitionElement}enterRule(e){e.enterDefinitionElement&&e.enterDefinitionElement(this)}exitRule(e){e.exitDefinitionElement&&e.exitDefinitionElement(this)}accept(e){return e.visitDefinitionElement?e.visitDefinitionElement(this):e.visitChildren(this)}},cd=class extends h{constructor(e,t){super(e,t)}nonOccurrenceUsageElement(){return this.getRuleContext(0,wu)}occurrenceUsageElement(){return this.getRuleContext(0,ku)}get ruleIndex(){return l.RULE_usageElement}enterRule(e){e.enterUsageElement&&e.enterUsageElement(this)}exitRule(e){e.exitUsageElement&&e.exitUsageElement(this)}accept(e){return e.visitUsageElement?e.visitUsageElement(this):e.visitChildren(this)}},ga=class extends h{constructor(e,t){super(e,t)}ABSTRACT(){return this.getToken(l.ABSTRACT,0)}VARIATION(){return this.getToken(l.VARIATION,0)}get ruleIndex(){return l.RULE_basicDefinitionPrefix}enterRule(e){e.enterBasicDefinitionPrefix&&e.enterBasicDefinitionPrefix(this)}exitRule(e){e.exitBasicDefinitionPrefix&&e.exitBasicDefinitionPrefix(this)}accept(e){return e.visitBasicDefinitionPrefix?e.visitBasicDefinitionPrefix(this):e.visitChildren(this)}},$r=class extends h{constructor(e,t){super(e,t)}prefixMetadataMember(){return this.getRuleContext(0,tr)}get ruleIndex(){return l.RULE_definitionExtensionKeyword}enterRule(e){e.enterDefinitionExtensionKeyword&&e.enterDefinitionExtensionKeyword(this)}exitRule(e){e.exitDefinitionExtensionKeyword&&e.exitDefinitionExtensionKeyword(this)}accept(e){return e.visitDefinitionExtensionKeyword?e.visitDefinitionExtensionKeyword(this):e.visitChildren(this)}},dd=class extends h{constructor(e,t){super(e,t)}basicDefinitionPrefix(){return this.getRuleContext(0,ga)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_definitionPrefix}enterRule(e){e.enterDefinitionPrefix&&e.enterDefinitionPrefix(this)}exitRule(e){e.exitDefinitionPrefix&&e.exitDefinitionPrefix(this)}accept(e){return e.visitDefinitionPrefix?e.visitDefinitionPrefix(this):e.visitChildren(this)}},Fr=class extends h{constructor(e,t){super(e,t)}definitionDeclaration(){return this.getRuleContext(0,rr)}definitionBody(){return this.getRuleContext(0,ro)}get ruleIndex(){return l.RULE_definition}enterRule(e){e.enterDefinition&&e.enterDefinition(this)}exitRule(e){e.exitDefinition&&e.exitDefinition(this)}accept(e){return e.visitDefinition?e.visitDefinition(this):e.visitChildren(this)}},rr=class extends h{constructor(e,t){super(e,t)}identification(){return this.getRuleContext(0,ot)}subclassificationPart(){return this.getRuleContext(0,$x)}get ruleIndex(){return l.RULE_definitionDeclaration}enterRule(e){e.enterDefinitionDeclaration&&e.enterDefinitionDeclaration(this)}exitRule(e){e.exitDefinitionDeclaration&&e.exitDefinitionDeclaration(this)}accept(e){return e.visitDefinitionDeclaration?e.visitDefinitionDeclaration(this):e.visitChildren(this)}},ro=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}definitionBodyItem(e){return e===void 0?this.getRuleContexts(io):this.getRuleContext(e,io)}get ruleIndex(){return l.RULE_definitionBody}enterRule(e){e.enterDefinitionBody&&e.enterDefinitionBody(this)}exitRule(e){e.exitDefinitionBody&&e.exitDefinitionBody(this)}accept(e){return e.visitDefinitionBody?e.visitDefinitionBody(this):e.visitChildren(this)}},io=class extends h{constructor(e,t){super(e,t)}importRule(){return this.getRuleContext(0,wi)}memberPrefix(){return this.getRuleContext(0,_e)}definitionBodyItemContent(){return this.getRuleContext(0,_x)}occurrenceUsageElement(){return this.getRuleContext(0,ku)}sourceSuccessionMember(){return this.getRuleContext(0,so)}get ruleIndex(){return l.RULE_definitionBodyItem}enterRule(e){e.enterDefinitionBodyItem&&e.enterDefinitionBodyItem(this)}exitRule(e){e.exitDefinitionBodyItem&&e.exitDefinitionBodyItem(this)}accept(e){return e.visitDefinitionBodyItem?e.visitDefinitionBodyItem(this):e.visitChildren(this)}},_x=class extends h{constructor(e,t){super(e,t)}ALIAS(){return this.getToken(l.ALIAS,0)}FOR(){return this.getToken(l.FOR,0)}qualifiedName(){return this.getRuleContext(0,Y)}relationshipBody(){return this.getRuleContext(0,Xt)}LT(){return this.getToken(l.LT,0)}name(e){return e===void 0?this.getRuleContexts(Or):this.getRuleContext(e,Or)}GT(){return this.getToken(l.GT,0)}VARIANT(){return this.getToken(l.VARIANT,0)}variantUsageElement(){return this.getRuleContext(0,md)}definitionElement(){return this.getRuleContext(0,Su)}nonOccurrenceUsageElement(){return this.getRuleContext(0,wu)}get ruleIndex(){return l.RULE_definitionBodyItemContent}enterRule(e){e.enterDefinitionBodyItemContent&&e.enterDefinitionBodyItemContent(this)}exitRule(e){e.exitDefinitionBodyItemContent&&e.exitDefinitionBodyItemContent(this)}accept(e){return e.visitDefinitionBodyItemContent?e.visitDefinitionBodyItemContent(this):e.visitChildren(this)}},xa=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}definitionElement(){return this.getRuleContext(0,Su)}get ruleIndex(){return l.RULE_definitionMember}enterRule(e){e.enterDefinitionMember&&e.enterDefinitionMember(this)}exitRule(e){e.exitDefinitionMember&&e.exitDefinitionMember(this)}accept(e){return e.visitDefinitionMember?e.visitDefinitionMember(this):e.visitChildren(this)}},hd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}VARIANT(){return this.getToken(l.VARIANT,0)}variantUsageElement(){return this.getRuleContext(0,md)}get ruleIndex(){return l.RULE_variantUsageMember}enterRule(e){e.enterVariantUsageMember&&e.enterVariantUsageMember(this)}exitRule(e){e.exitVariantUsageMember&&e.exitVariantUsageMember(this)}accept(e){return e.visitVariantUsageMember?e.visitVariantUsageMember(this):e.visitChildren(this)}},Nx=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}nonOccurrenceUsageElement(){return this.getRuleContext(0,wu)}get ruleIndex(){return l.RULE_nonOccurrenceUsageMember}enterRule(e){e.enterNonOccurrenceUsageMember&&e.enterNonOccurrenceUsageMember(this)}exitRule(e){e.exitNonOccurrenceUsageMember&&e.exitNonOccurrenceUsageMember(this)}accept(e){return e.visitNonOccurrenceUsageMember?e.visitNonOccurrenceUsageMember(this):e.visitChildren(this)}},aC=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}occurrenceUsageElement(){return this.getRuleContext(0,ku)}get ruleIndex(){return l.RULE_occurrenceUsageMember}enterRule(e){e.enterOccurrenceUsageMember&&e.enterOccurrenceUsageMember(this)}exitRule(e){e.exitOccurrenceUsageMember&&e.exitOccurrenceUsageMember(this)}accept(e){return e.visitOccurrenceUsageMember?e.visitOccurrenceUsageMember(this):e.visitChildren(this)}},Ix=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}structureUsageElement(){return this.getRuleContext(0,Au)}get ruleIndex(){return l.RULE_structureUsageMember}enterRule(e){e.enterStructureUsageMember&&e.enterStructureUsageMember(this)}exitRule(e){e.exitStructureUsageMember&&e.exitStructureUsageMember(this)}accept(e){return e.visitStructureUsageMember?e.visitStructureUsageMember(this):e.visitChildren(this)}},pd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}behaviorUsageElement(){return this.getRuleContext(0,va)}get ruleIndex(){return l.RULE_behaviorUsageMember}enterRule(e){e.enterBehaviorUsageMember&&e.enterBehaviorUsageMember(this)}exitRule(e){e.exitBehaviorUsageMember&&e.exitBehaviorUsageMember(this)}accept(e){return e.visitBehaviorUsageMember?e.visitBehaviorUsageMember(this):e.visitChildren(this)}},ba=class extends h{constructor(e,t){super(e,t)}featureDirection(){return this.getRuleContext(0,q1)}DERIVED(){return this.getToken(l.DERIVED,0)}CONSTANT(){return this.getToken(l.CONSTANT,0)}ABSTRACT(){return this.getToken(l.ABSTRACT,0)}VARIATION(){return this.getToken(l.VARIATION,0)}get ruleIndex(){return l.RULE_refPrefix}enterRule(e){e.enterRefPrefix&&e.enterRefPrefix(this)}exitRule(e){e.exitRefPrefix&&e.exitRefPrefix(this)}accept(e){return e.visitRefPrefix?e.visitRefPrefix(this):e.visitChildren(this)}},no=class extends h{constructor(e,t){super(e,t)}refPrefix(){return this.getRuleContext(0,ba)}REF(){return this.getToken(l.REF,0)}get ruleIndex(){return l.RULE_basicUsagePrefix}enterRule(e){e.enterBasicUsagePrefix&&e.enterBasicUsagePrefix(this)}exitRule(e){e.exitBasicUsagePrefix&&e.exitBasicUsagePrefix(this)}accept(e){return e.visitBasicUsagePrefix?e.visitBasicUsagePrefix(this):e.visitChildren(this)}},Pu=class extends h{constructor(e,t){super(e,t)}END(){return this.getToken(l.END,0)}ownedCrossFeatureMember(){return this.getRuleContext(0,j1)}get ruleIndex(){return l.RULE_endUsagePrefix}enterRule(e){e.enterEndUsagePrefix&&e.enterEndUsagePrefix(this)}exitRule(e){e.exitEndUsagePrefix&&e.exitEndUsagePrefix(this)}accept(e){return e.visitEndUsagePrefix?e.visitEndUsagePrefix(this):e.visitChildren(this)}},Ke=class extends h{constructor(e,t){super(e,t)}prefixMetadataMember(){return this.getRuleContext(0,tr)}get ruleIndex(){return l.RULE_usageExtensionKeyword}enterRule(e){e.enterUsageExtensionKeyword&&e.enterUsageExtensionKeyword(this)}exitRule(e){e.exitUsageExtensionKeyword&&e.exitUsageExtensionKeyword(this)}accept(e){return e.visitUsageExtensionKeyword?e.visitUsageExtensionKeyword(this):e.visitChildren(this)}},fd=class extends h{constructor(e,t){super(e,t)}endUsagePrefix(){return this.getRuleContext(0,Pu)}basicUsagePrefix(){return this.getRuleContext(0,no)}get ruleIndex(){return l.RULE_unextendedUsagePrefix}enterRule(e){e.enterUnextendedUsagePrefix&&e.enterUnextendedUsagePrefix(this)}exitRule(e){e.exitUnextendedUsagePrefix&&e.exitUnextendedUsagePrefix(this)}accept(e){return e.visitUnextendedUsagePrefix?e.visitUnextendedUsagePrefix(this):e.visitChildren(this)}},ya=class extends h{constructor(e,t){super(e,t)}unextendedUsagePrefix(){return this.getRuleContext(0,fd)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_usagePrefix}enterRule(e){e.enterUsagePrefix&&e.enterUsagePrefix(this)}exitRule(e){e.exitUsagePrefix&&e.exitUsagePrefix(this)}accept(e){return e.visitUsagePrefix?e.visitUsagePrefix(this):e.visitChildren(this)}},Ht=class extends h{constructor(e,t){super(e,t)}usageCompletion(){return this.getRuleContext(0,Lu)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_usage}enterRule(e){e.enterUsage&&e.enterUsage(this)}exitRule(e){e.exitUsage&&e.exitUsage(this)}accept(e){return e.visitUsage?e.visitUsage(this):e.visitChildren(this)}},Xe=class extends h{constructor(e,t){super(e,t)}identification(){return this.getRuleContext(0,ot)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}get ruleIndex(){return l.RULE_usageDeclaration}enterRule(e){e.enterUsageDeclaration&&e.enterUsageDeclaration(this)}exitRule(e){e.exitUsageDeclaration&&e.exitUsageDeclaration(this)}accept(e){return e.visitUsageDeclaration?e.visitUsageDeclaration(this):e.visitChildren(this)}},Lu=class extends h{constructor(e,t){super(e,t)}usageBody(){return this.getRuleContext(0,ki)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_usageCompletion}enterRule(e){e.enterUsageCompletion&&e.enterUsageCompletion(this)}exitRule(e){e.exitUsageCompletion&&e.exitUsageCompletion(this)}accept(e){return e.visitUsageCompletion?e.visitUsageCompletion(this):e.visitChildren(this)}},ki=class extends h{constructor(e,t){super(e,t)}definitionBody(){return this.getRuleContext(0,ro)}get ruleIndex(){return l.RULE_usageBody}enterRule(e){e.enterUsageBody&&e.enterUsageBody(this)}exitRule(e){e.exitUsageBody&&e.exitUsageBody(this)}accept(e){return e.visitUsageBody?e.visitUsageBody(this):e.visitChildren(this)}},Ux=class extends h{constructor(e,t){super(e,t)}refPrefix(){return this.getRuleContext(0,ba)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_defaultReferenceUsage}enterRule(e){e.enterDefaultReferenceUsage&&e.enterDefaultReferenceUsage(this)}exitRule(e){e.exitDefaultReferenceUsage&&e.exitDefaultReferenceUsage(this)}accept(e){return e.visitDefaultReferenceUsage?e.visitDefaultReferenceUsage(this):e.visitChildren(this)}},Tu=class extends h{constructor(e,t){super(e,t)}REF(){return this.getToken(l.REF,0)}usage(){return this.getRuleContext(0,Ht)}endUsagePrefix(){return this.getRuleContext(0,Pu)}refPrefix(){return this.getRuleContext(0,ba)}get ruleIndex(){return l.RULE_referenceUsage}enterRule(e){e.enterReferenceUsage&&e.enterReferenceUsage(this)}exitRule(e){e.exitReferenceUsage&&e.exitReferenceUsage(this)}accept(e){return e.visitReferenceUsage?e.visitReferenceUsage(this):e.visitChildren(this)}},Ox=class extends h{constructor(e,t){super(e,t)}endUsagePrefix(){return this.getRuleContext(0,Pu)}featureDeclaration(){return this.getRuleContext(0,Er)}usageCompletion(){return this.getRuleContext(0,Lu)}get ruleIndex(){return l.RULE_endFeatureUsage}enterRule(e){e.enterEndFeatureUsage&&e.enterEndFeatureUsage(this)}exitRule(e){e.exitEndFeatureUsage&&e.exitEndFeatureUsage(this)}accept(e){return e.visitEndFeatureUsage?e.visitEndFeatureUsage(this):e.visitChildren(this)}},Dx=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}usageBody(){return this.getRuleContext(0,ki)}featureSpecialization(e){return e===void 0?this.getRuleContexts(on):this.getRuleContext(e,on)}get ruleIndex(){return l.RULE_variantReference}enterRule(e){e.enterVariantReference&&e.enterVariantReference(this)}exitRule(e){e.exitVariantReference&&e.exitVariantReference(this)}accept(e){return e.visitVariantReference?e.visitVariantReference(this):e.visitChildren(this)}},wu=class extends h{constructor(e,t){super(e,t)}referenceUsage(){return this.getRuleContext(0,Tu)}endFeatureUsage(){return this.getRuleContext(0,Ox)}attributeUsage(){return this.getRuleContext(0,Mu)}enumerationUsage(){return this.getRuleContext(0,xd)}bindingConnectorAsUsage(){return this.getRuleContext(0,Nu)}successionAsUsage(){return this.getRuleContext(0,Iu)}extendedUsage(){return this.getRuleContext(0,Ry)}defaultReferenceUsage(){return this.getRuleContext(0,Ux)}get ruleIndex(){return l.RULE_nonOccurrenceUsageElement}enterRule(e){e.enterNonOccurrenceUsageElement&&e.enterNonOccurrenceUsageElement(this)}exitRule(e){e.exitNonOccurrenceUsageElement&&e.exitNonOccurrenceUsageElement(this)}accept(e){return e.visitNonOccurrenceUsageElement?e.visitNonOccurrenceUsageElement(this):e.visitChildren(this)}},ku=class extends h{constructor(e,t){super(e,t)}structureUsageElement(){return this.getRuleContext(0,Au)}behaviorUsageElement(){return this.getRuleContext(0,va)}get ruleIndex(){return l.RULE_occurrenceUsageElement}enterRule(e){e.enterOccurrenceUsageElement&&e.enterOccurrenceUsageElement(this)}exitRule(e){e.exitOccurrenceUsageElement&&e.exitOccurrenceUsageElement(this)}accept(e){return e.visitOccurrenceUsageElement?e.visitOccurrenceUsageElement(this):e.visitChildren(this)}},Au=class extends h{constructor(e,t){super(e,t)}occurrenceUsage(){return this.getRuleContext(0,yd)}individualUsage(){return this.getRuleContext(0,vd)}portionUsage(){return this.getRuleContext(0,Rd)}eventOccurrenceUsage(){return this.getRuleContext(0,Cd)}itemUsage(){return this.getRuleContext(0,Sd)}partUsage(){return this.getRuleContext(0,Pd)}viewUsage(){return this.getRuleContext(0,nh)}renderingUsage(){return this.getRuleContext(0,oh)}portUsage(){return this.getRuleContext(0,Ld)}connectionUsage(){return this.getRuleContext(0,Td)}interfaceUsage(){return this.getRuleContext(0,Md)}allocationUsage(){return this.getRuleContext(0,_d)}message(){return this.getRuleContext(0,Nd)}flowUsage(){return this.getRuleContext(0,Ud)}successionFlowUsage(){return this.getRuleContext(0,Od)}get ruleIndex(){return l.RULE_structureUsageElement}enterRule(e){e.enterStructureUsageElement&&e.enterStructureUsageElement(this)}exitRule(e){e.exitStructureUsageElement&&e.exitStructureUsageElement(this)}accept(e){return e.visitStructureUsageElement?e.visitStructureUsageElement(this):e.visitChildren(this)}},va=class extends h{constructor(e,t){super(e,t)}actionUsage(){return this.getRuleContext(0,Pb)}calculationUsage(){return this.getRuleContext(0,P4)}stateUsage(){return this.getRuleContext(0,h4)}constraintUsage(){return this.getRuleContext(0,w4)}requirementUsage(){return this.getRuleContext(0,H4)}concernUsage(){return this.getRuleContext(0,G4)}caseUsage(){return this.getRuleContext(0,K4)}analysisCaseUsage(){return this.getRuleContext(0,X4)}verificationCaseUsage(){return this.getRuleContext(0,ty)}useCaseUsage(){return this.getRuleContext(0,sy)}viewpointUsage(){return this.getRuleContext(0,my)}performActionUsage(){return this.getRuleContext(0,Lb)}exhibitStateUsage(){return this.getRuleContext(0,p4)}includeUseCaseUsage(){return this.getRuleContext(0,oy)}assertConstraintUsage(){return this.getRuleContext(0,k4)}satisfyRequirementUsage(){return this.getRuleContext(0,z4)}get ruleIndex(){return l.RULE_behaviorUsageElement}enterRule(e){e.enterBehaviorUsageElement&&e.enterBehaviorUsageElement(this)}exitRule(e){e.exitBehaviorUsageElement&&e.exitBehaviorUsageElement(this)}accept(e){return e.visitBehaviorUsageElement?e.visitBehaviorUsageElement(this):e.visitChildren(this)}},md=class extends h{constructor(e,t){super(e,t)}variantReference(){return this.getRuleContext(0,Dx)}referenceUsage(){return this.getRuleContext(0,Tu)}attributeUsage(){return this.getRuleContext(0,Mu)}bindingConnectorAsUsage(){return this.getRuleContext(0,Nu)}successionAsUsage(){return this.getRuleContext(0,Iu)}occurrenceUsage(){return this.getRuleContext(0,yd)}individualUsage(){return this.getRuleContext(0,vd)}portionUsage(){return this.getRuleContext(0,Rd)}eventOccurrenceUsage(){return this.getRuleContext(0,Cd)}itemUsage(){return this.getRuleContext(0,Sd)}partUsage(){return this.getRuleContext(0,Pd)}viewUsage(){return this.getRuleContext(0,nh)}renderingUsage(){return this.getRuleContext(0,oh)}portUsage(){return this.getRuleContext(0,Ld)}connectionUsage(){return this.getRuleContext(0,Td)}interfaceUsage(){return this.getRuleContext(0,Md)}allocationUsage(){return this.getRuleContext(0,_d)}message(){return this.getRuleContext(0,Nd)}flowUsage(){return this.getRuleContext(0,Ud)}successionFlowUsage(){return this.getRuleContext(0,Od)}behaviorUsageElement(){return this.getRuleContext(0,va)}get ruleIndex(){return l.RULE_variantUsageElement}enterRule(e){e.enterVariantUsageElement&&e.enterVariantUsageElement(this)}exitRule(e){e.exitVariantUsageElement&&e.exitVariantUsageElement(this)}accept(e){return e.visitVariantUsageElement?e.visitVariantUsageElement(this):e.visitChildren(this)}},$x=class extends h{constructor(e,t){super(e,t)}ownedSubclassification(e){return e===void 0?this.getRuleContexts(ca):this.getRuleContext(e,ca)}COLON_GT(){return this.getToken(l.COLON_GT,0)}SPECIALIZES(){return this.getToken(l.SPECIALIZES,0)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_subclassificationPart}enterRule(e){e.enterSubclassificationPart&&e.enterSubclassificationPart(this)}exitRule(e){e.exitSubclassificationPart&&e.exitSubclassificationPart(this)}accept(e){return e.visitSubclassificationPart?e.visitSubclassificationPart(this):e.visitChildren(this)}},Fx=class extends h{constructor(e,t){super(e,t)}definitionPrefix(){return this.getRuleContext(0,dd)}ATTRIBUTE(){return this.getToken(l.ATTRIBUTE,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_attributeDefinition}enterRule(e){e.enterAttributeDefinition&&e.enterAttributeDefinition(this)}exitRule(e){e.exitAttributeDefinition&&e.exitAttributeDefinition(this)}accept(e){return e.visitAttributeDefinition?e.visitAttributeDefinition(this):e.visitChildren(this)}},Mu=class extends h{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,ya)}ATTRIBUTE(){return this.getToken(l.ATTRIBUTE,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_attributeUsage}enterRule(e){e.enterAttributeUsage&&e.enterAttributeUsage(this)}exitRule(e){e.exitAttributeUsage&&e.exitAttributeUsage(this)}accept(e){return e.visitAttributeUsage?e.visitAttributeUsage(this):e.visitChildren(this)}},Hx=class extends h{constructor(e,t){super(e,t)}ENUM(){return this.getToken(l.ENUM,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}enumerationBody(){return this.getRuleContext(0,zx)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_enumerationDefinition}enterRule(e){e.enterEnumerationDefinition&&e.enterEnumerationDefinition(this)}exitRule(e){e.exitEnumerationDefinition&&e.exitEnumerationDefinition(this)}accept(e){return e.visitEnumerationDefinition?e.visitEnumerationDefinition(this):e.visitChildren(this)}},zx=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}annotatingMember(e){return e===void 0?this.getRuleContexts(ud):this.getRuleContext(e,ud)}enumerationUsageMember(e){return e===void 0?this.getRuleContexts(gd):this.getRuleContext(e,gd)}get ruleIndex(){return l.RULE_enumerationBody}enterRule(e){e.enterEnumerationBody&&e.enterEnumerationBody(this)}exitRule(e){e.exitEnumerationBody&&e.exitEnumerationBody(this)}accept(e){return e.visitEnumerationBody?e.visitEnumerationBody(this):e.visitChildren(this)}},gd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}enumeratedValue(){return this.getRuleContext(0,Bx)}get ruleIndex(){return l.RULE_enumerationUsageMember}enterRule(e){e.enterEnumerationUsageMember&&e.enterEnumerationUsageMember(this)}exitRule(e){e.exitEnumerationUsageMember&&e.exitEnumerationUsageMember(this)}accept(e){return e.visitEnumerationUsageMember?e.visitEnumerationUsageMember(this):e.visitChildren(this)}},Bx=class extends h{constructor(e,t){super(e,t)}usage(){return this.getRuleContext(0,Ht)}ENUM(){return this.getToken(l.ENUM,0)}get ruleIndex(){return l.RULE_enumeratedValue}enterRule(e){e.enterEnumeratedValue&&e.enterEnumeratedValue(this)}exitRule(e){e.exitEnumeratedValue&&e.exitEnumeratedValue(this)}accept(e){return e.visitEnumeratedValue?e.visitEnumeratedValue(this):e.visitChildren(this)}},xd=class extends h{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,ya)}ENUM(){return this.getToken(l.ENUM,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_enumerationUsage}enterRule(e){e.enterEnumerationUsage&&e.enterEnumerationUsage(this)}exitRule(e){e.exitEnumerationUsage&&e.exitEnumerationUsage(this)}accept(e){return e.visitEnumerationUsage?e.visitEnumerationUsage(this):e.visitChildren(this)}},Mt=class extends h{constructor(e,t){super(e,t)}basicDefinitionPrefix(){return this.getRuleContext(0,ga)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}emptyMultiplicityMember(){return this.getRuleContext(0,bd)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_occurrenceDefinitionPrefix}enterRule(e){e.enterOccurrenceDefinitionPrefix&&e.enterOccurrenceDefinitionPrefix(this)}exitRule(e){e.exitOccurrenceDefinitionPrefix&&e.exitOccurrenceDefinitionPrefix(this)}accept(e){return e.visitOccurrenceDefinitionPrefix?e.visitOccurrenceDefinitionPrefix(this):e.visitChildren(this)}},jx=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}OCCURRENCE(){return this.getToken(l.OCCURRENCE,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_occurrenceDefinition}enterRule(e){e.enterOccurrenceDefinition&&e.enterOccurrenceDefinition(this)}exitRule(e){e.exitOccurrenceDefinition&&e.exitOccurrenceDefinition(this)}accept(e){return e.visitOccurrenceDefinition?e.visitOccurrenceDefinition(this):e.visitChildren(this)}},qx=class extends h{constructor(e,t){super(e,t)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}emptyMultiplicityMember(){return this.getRuleContext(0,bd)}basicDefinitionPrefix(){return this.getRuleContext(0,ga)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_individualDefinition}enterRule(e){e.enterIndividualDefinition&&e.enterIndividualDefinition(this)}exitRule(e){e.exitIndividualDefinition&&e.exitIndividualDefinition(this)}accept(e){return e.visitIndividualDefinition?e.visitIndividualDefinition(this):e.visitChildren(this)}},bd=class extends h{constructor(e,t){super(e,t)}emptyMultiplicity_(){return this.getRuleContext(0,Py)}get ruleIndex(){return l.RULE_emptyMultiplicityMember}enterRule(e){e.enterEmptyMultiplicityMember&&e.enterEmptyMultiplicityMember(this)}exitRule(e){e.exitEmptyMultiplicityMember&&e.exitEmptyMultiplicityMember(this)}accept(e){return e.visitEmptyMultiplicityMember?e.visitEmptyMultiplicityMember(this):e.visitChildren(this)}},Fe=class extends h{constructor(e,t){super(e,t)}basicUsagePrefix(){return this.getRuleContext(0,no)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}portionKind(){return this.getRuleContext(0,_u)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_occurrenceUsagePrefix}enterRule(e){e.enterOccurrenceUsagePrefix&&e.enterOccurrenceUsagePrefix(this)}exitRule(e){e.exitOccurrenceUsagePrefix&&e.exitOccurrenceUsagePrefix(this)}accept(e){return e.visitOccurrenceUsagePrefix?e.visitOccurrenceUsagePrefix(this):e.visitChildren(this)}},yd=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}OCCURRENCE(){return this.getToken(l.OCCURRENCE,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_occurrenceUsage}enterRule(e){e.enterOccurrenceUsage&&e.enterOccurrenceUsage(this)}exitRule(e){e.exitOccurrenceUsage&&e.exitOccurrenceUsage(this)}accept(e){return e.visitOccurrenceUsage?e.visitOccurrenceUsage(this):e.visitChildren(this)}},vd=class extends h{constructor(e,t){super(e,t)}basicUsagePrefix(){return this.getRuleContext(0,no)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}usage(){return this.getRuleContext(0,Ht)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_individualUsage}enterRule(e){e.enterIndividualUsage&&e.enterIndividualUsage(this)}exitRule(e){e.exitIndividualUsage&&e.exitIndividualUsage(this)}accept(e){return e.visitIndividualUsage?e.visitIndividualUsage(this):e.visitChildren(this)}},Rd=class extends h{constructor(e,t){super(e,t)}basicUsagePrefix(){return this.getRuleContext(0,no)}portionKind(){return this.getRuleContext(0,_u)}usage(){return this.getRuleContext(0,Ht)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_portionUsage}enterRule(e){e.enterPortionUsage&&e.enterPortionUsage(this)}exitRule(e){e.exitPortionUsage&&e.exitPortionUsage(this)}accept(e){return e.visitPortionUsage?e.visitPortionUsage(this):e.visitChildren(this)}},_u=class extends h{constructor(e,t){super(e,t)}SNAPSHOT(){return this.getToken(l.SNAPSHOT,0)}TIMESLICE(){return this.getToken(l.TIMESLICE,0)}get ruleIndex(){return l.RULE_portionKind}enterRule(e){e.enterPortionKind&&e.enterPortionKind(this)}exitRule(e){e.exitPortionKind&&e.exitPortionKind(this)}accept(e){return e.visitPortionKind?e.visitPortionKind(this):e.visitChildren(this)}},Cd=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}EVENT(){return this.getToken(l.EVENT,0)}usageCompletion(){return this.getRuleContext(0,Lu)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}OCCURRENCE(){return this.getToken(l.OCCURRENCE,0)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_eventOccurrenceUsage}enterRule(e){e.enterEventOccurrenceUsage&&e.enterEventOccurrenceUsage(this)}exitRule(e){e.exitEventOccurrenceUsage&&e.exitEventOccurrenceUsage(this)}accept(e){return e.visitEventOccurrenceUsage?e.visitEventOccurrenceUsage(this):e.visitChildren(this)}},so=class extends h{constructor(e,t){super(e,t)}THEN(){return this.getToken(l.THEN,0)}sourceSuccession(){return this.getRuleContext(0,Vx)}get ruleIndex(){return l.RULE_sourceSuccessionMember}enterRule(e){e.enterSourceSuccessionMember&&e.enterSourceSuccessionMember(this)}exitRule(e){e.exitSourceSuccessionMember&&e.exitSourceSuccessionMember(this)}accept(e){return e.visitSourceSuccessionMember?e.visitSourceSuccessionMember(this):e.visitChildren(this)}},Vx=class extends h{constructor(e,t){super(e,t)}sourceEndMember(){return this.getRuleContext(0,Ed)}get ruleIndex(){return l.RULE_sourceSuccession}enterRule(e){e.enterSourceSuccession&&e.enterSourceSuccession(this)}exitRule(e){e.exitSourceSuccession&&e.exitSourceSuccession(this)}accept(e){return e.visitSourceSuccession?e.visitSourceSuccession(this):e.visitChildren(this)}},Ed=class extends h{constructor(e,t){super(e,t)}sourceEnd(){return this.getRuleContext(0,Zx)}get ruleIndex(){return l.RULE_sourceEndMember}enterRule(e){e.enterSourceEndMember&&e.enterSourceEndMember(this)}exitRule(e){e.exitSourceEndMember&&e.exitSourceEndMember(this)}accept(e){return e.visitSourceEndMember?e.visitSourceEndMember(this):e.visitChildren(this)}},Zx=class extends h{constructor(e,t){super(e,t)}ownedMultiplicity(){return this.getRuleContext(0,os)}get ruleIndex(){return l.RULE_sourceEnd}enterRule(e){e.enterSourceEnd&&e.enterSourceEnd(this)}exitRule(e){e.exitSourceEnd&&e.exitSourceEnd(this)}accept(e){return e.visitSourceEnd?e.visitSourceEnd(this):e.visitChildren(this)}},Gx=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}ITEM(){return this.getToken(l.ITEM,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_itemDefinition}enterRule(e){e.enterItemDefinition&&e.enterItemDefinition(this)}exitRule(e){e.exitItemDefinition&&e.exitItemDefinition(this)}accept(e){return e.visitItemDefinition?e.visitItemDefinition(this):e.visitChildren(this)}},Sd=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}ITEM(){return this.getToken(l.ITEM,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_itemUsage}enterRule(e){e.enterItemUsage&&e.enterItemUsage(this)}exitRule(e){e.exitItemUsage&&e.exitItemUsage(this)}accept(e){return e.visitItemUsage?e.visitItemUsage(this):e.visitChildren(this)}},Wx=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}PART(){return this.getToken(l.PART,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_partDefinition}enterRule(e){e.enterPartDefinition&&e.enterPartDefinition(this)}exitRule(e){e.exitPartDefinition&&e.exitPartDefinition(this)}accept(e){return e.visitPartDefinition?e.visitPartDefinition(this):e.visitChildren(this)}},Pd=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}PART(){return this.getToken(l.PART,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_partUsage}enterRule(e){e.enterPartUsage&&e.enterPartUsage(this)}exitRule(e){e.exitPartUsage&&e.exitPartUsage(this)}accept(e){return e.visitPartUsage?e.visitPartUsage(this):e.visitChildren(this)}},Kx=class extends h{constructor(e,t){super(e,t)}definitionPrefix(){return this.getRuleContext(0,dd)}PORT(){return this.getToken(l.PORT,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}conjugatedPortDefinitionMember(){return this.getRuleContext(0,Jx)}get ruleIndex(){return l.RULE_portDefinition}enterRule(e){e.enterPortDefinition&&e.enterPortDefinition(this)}exitRule(e){e.exitPortDefinition&&e.exitPortDefinition(this)}accept(e){return e.visitPortDefinition?e.visitPortDefinition(this):e.visitChildren(this)}},Jx=class extends h{constructor(e,t){super(e,t)}conjugatedPortDefinition(){return this.getRuleContext(0,Qx)}get ruleIndex(){return l.RULE_conjugatedPortDefinitionMember}enterRule(e){e.enterConjugatedPortDefinitionMember&&e.enterConjugatedPortDefinitionMember(this)}exitRule(e){e.exitConjugatedPortDefinitionMember&&e.exitConjugatedPortDefinitionMember(this)}accept(e){return e.visitConjugatedPortDefinitionMember?e.visitConjugatedPortDefinitionMember(this):e.visitChildren(this)}},Qx=class extends h{constructor(e,t){super(e,t)}portConjugation(){return this.getRuleContext(0,ky)}get ruleIndex(){return l.RULE_conjugatedPortDefinition}enterRule(e){e.enterConjugatedPortDefinition&&e.enterConjugatedPortDefinition(this)}exitRule(e){e.exitConjugatedPortDefinition&&e.exitConjugatedPortDefinition(this)}accept(e){return e.visitConjugatedPortDefinition?e.visitConjugatedPortDefinition(this):e.visitChildren(this)}},Ld=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}PORT(){return this.getToken(l.PORT,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_portUsage}enterRule(e){e.enterPortUsage&&e.enterPortUsage(this)}exitRule(e){e.exitPortUsage&&e.exitPortUsage(this)}accept(e){return e.visitPortUsage?e.visitPortUsage(this):e.visitChildren(this)}},Yx=class extends h{constructor(e,t){super(e,t)}TILDE(){return this.getToken(l.TILDE,0)}qualifiedName(){return this.getRuleContext(0,Y)}get ruleIndex(){return l.RULE_conjugatedPortTyping}enterRule(e){e.enterConjugatedPortTyping&&e.enterConjugatedPortTyping(this)}exitRule(e){e.exitConjugatedPortTyping&&e.exitConjugatedPortTyping(this)}accept(e){return e.visitConjugatedPortTyping?e.visitConjugatedPortTyping(this):e.visitChildren(this)}},Xx=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}CONNECTION(){return this.getToken(l.CONNECTION,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_connectionDefinition}enterRule(e){e.enterConnectionDefinition&&e.enterConnectionDefinition(this)}exitRule(e){e.exitConnectionDefinition&&e.exitConnectionDefinition(this)}accept(e){return e.visitConnectionDefinition?e.visitConnectionDefinition(this):e.visitChildren(this)}},Td=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}usageBody(){return this.getRuleContext(0,ki)}CONNECTION(){return this.getToken(l.CONNECTION,0)}CONNECT(){return this.getToken(l.CONNECT,0)}connectorPart(){return this.getRuleContext(0,wd)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_connectionUsage}enterRule(e){e.enterConnectionUsage&&e.enterConnectionUsage(this)}exitRule(e){e.exitConnectionUsage&&e.exitConnectionUsage(this)}accept(e){return e.visitConnectionUsage?e.visitConnectionUsage(this):e.visitChildren(this)}},wd=class extends h{constructor(e,t){super(e,t)}binaryConnectorPart(){return this.getRuleContext(0,eb)}naryConnectorPart(){return this.getRuleContext(0,tb)}get ruleIndex(){return l.RULE_connectorPart}enterRule(e){e.enterConnectorPart&&e.enterConnectorPart(this)}exitRule(e){e.exitConnectorPart&&e.exitConnectorPart(this)}accept(e){return e.visitConnectorPart?e.visitConnectorPart(this):e.visitChildren(this)}},eb=class extends h{constructor(e,t){super(e,t)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}TO(){return this.getToken(l.TO,0)}get ruleIndex(){return l.RULE_binaryConnectorPart}enterRule(e){e.enterBinaryConnectorPart&&e.enterBinaryConnectorPart(this)}exitRule(e){e.exitBinaryConnectorPart&&e.exitBinaryConnectorPart(this)}accept(e){return e.visitBinaryConnectorPart?e.visitBinaryConnectorPart(this):e.visitChildren(this)}},tb=class extends h{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(l.LPAREN,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}RPAREN(){return this.getToken(l.RPAREN,0)}get ruleIndex(){return l.RULE_naryConnectorPart}enterRule(e){e.enterNaryConnectorPart&&e.enterNaryConnectorPart(this)}exitRule(e){e.exitNaryConnectorPart&&e.exitNaryConnectorPart(this)}accept(e){return e.visitNaryConnectorPart?e.visitNaryConnectorPart(this):e.visitChildren(this)}},Nu=class extends h{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,ya)}BIND(){return this.getToken(l.BIND,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}EQ(){return this.getToken(l.EQ,0)}usageBody(){return this.getRuleContext(0,ki)}BINDING(){return this.getToken(l.BINDING,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_bindingConnectorAsUsage}enterRule(e){e.enterBindingConnectorAsUsage&&e.enterBindingConnectorAsUsage(this)}exitRule(e){e.exitBindingConnectorAsUsage&&e.exitBindingConnectorAsUsage(this)}accept(e){return e.visitBindingConnectorAsUsage?e.visitBindingConnectorAsUsage(this):e.visitChildren(this)}},Iu=class extends h{constructor(e,t){super(e,t)}usagePrefix(){return this.getRuleContext(0,ya)}FIRST(){return this.getToken(l.FIRST,0)}connectorEndMember(e){return e===void 0?this.getRuleContexts(Ft):this.getRuleContext(e,Ft)}THEN(){return this.getToken(l.THEN,0)}usageBody(){return this.getRuleContext(0,ki)}SUCCESSION(){return this.getToken(l.SUCCESSION,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_successionAsUsage}enterRule(e){e.enterSuccessionAsUsage&&e.enterSuccessionAsUsage(this)}exitRule(e){e.exitSuccessionAsUsage&&e.exitSuccessionAsUsage(this)}accept(e){return e.visitSuccessionAsUsage?e.visitSuccessionAsUsage(this):e.visitChildren(this)}},rb=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}INTERFACE(){return this.getToken(l.INTERFACE,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}interfaceBody(){return this.getRuleContext(0,kd)}get ruleIndex(){return l.RULE_interfaceDefinition}enterRule(e){e.enterInterfaceDefinition&&e.enterInterfaceDefinition(this)}exitRule(e){e.exitInterfaceDefinition&&e.exitInterfaceDefinition(this)}accept(e){return e.visitInterfaceDefinition?e.visitInterfaceDefinition(this):e.visitChildren(this)}},kd=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}interfaceBodyItem(e){return e===void 0?this.getRuleContexts(Ad):this.getRuleContext(e,Ad)}get ruleIndex(){return l.RULE_interfaceBody}enterRule(e){e.enterInterfaceBody&&e.enterInterfaceBody(this)}exitRule(e){e.exitInterfaceBody&&e.exitInterfaceBody(this)}accept(e){return e.visitInterfaceBody?e.visitInterfaceBody(this):e.visitChildren(this)}},Ad=class extends h{constructor(e,t){super(e,t)}definitionMember(){return this.getRuleContext(0,xa)}variantUsageMember(){return this.getRuleContext(0,hd)}interfaceNonOccurrenceUsageMember(){return this.getRuleContext(0,ib)}interfaceOccurrenceUsageMember(){return this.getRuleContext(0,sb)}sourceSuccessionMember(){return this.getRuleContext(0,so)}aliasMember(){return this.getRuleContext(0,sn)}importRule(){return this.getRuleContext(0,wi)}get ruleIndex(){return l.RULE_interfaceBodyItem}enterRule(e){e.enterInterfaceBodyItem&&e.enterInterfaceBodyItem(this)}exitRule(e){e.exitInterfaceBodyItem&&e.exitInterfaceBodyItem(this)}accept(e){return e.visitInterfaceBodyItem?e.visitInterfaceBodyItem(this):e.visitChildren(this)}},ib=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}interfaceNonOccurrenceUsageElement(){return this.getRuleContext(0,nb)}get ruleIndex(){return l.RULE_interfaceNonOccurrenceUsageMember}enterRule(e){e.enterInterfaceNonOccurrenceUsageMember&&e.enterInterfaceNonOccurrenceUsageMember(this)}exitRule(e){e.exitInterfaceNonOccurrenceUsageMember&&e.exitInterfaceNonOccurrenceUsageMember(this)}accept(e){return e.visitInterfaceNonOccurrenceUsageMember?e.visitInterfaceNonOccurrenceUsageMember(this):e.visitChildren(this)}},nb=class extends h{constructor(e,t){super(e,t)}referenceUsage(){return this.getRuleContext(0,Tu)}attributeUsage(){return this.getRuleContext(0,Mu)}enumerationUsage(){return this.getRuleContext(0,xd)}bindingConnectorAsUsage(){return this.getRuleContext(0,Nu)}successionAsUsage(){return this.getRuleContext(0,Iu)}get ruleIndex(){return l.RULE_interfaceNonOccurrenceUsageElement}enterRule(e){e.enterInterfaceNonOccurrenceUsageElement&&e.enterInterfaceNonOccurrenceUsageElement(this)}exitRule(e){e.exitInterfaceNonOccurrenceUsageElement&&e.exitInterfaceNonOccurrenceUsageElement(this)}accept(e){return e.visitInterfaceNonOccurrenceUsageElement?e.visitInterfaceNonOccurrenceUsageElement(this):e.visitChildren(this)}},sb=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}interfaceOccurrenceUsageElement(){return this.getRuleContext(0,ob)}get ruleIndex(){return l.RULE_interfaceOccurrenceUsageMember}enterRule(e){e.enterInterfaceOccurrenceUsageMember&&e.enterInterfaceOccurrenceUsageMember(this)}exitRule(e){e.exitInterfaceOccurrenceUsageMember&&e.exitInterfaceOccurrenceUsageMember(this)}accept(e){return e.visitInterfaceOccurrenceUsageMember?e.visitInterfaceOccurrenceUsageMember(this):e.visitChildren(this)}},ob=class extends h{constructor(e,t){super(e,t)}defaultInterfaceEnd(){return this.getRuleContext(0,ab)}structureUsageElement(){return this.getRuleContext(0,Au)}behaviorUsageElement(){return this.getRuleContext(0,va)}get ruleIndex(){return l.RULE_interfaceOccurrenceUsageElement}enterRule(e){e.enterInterfaceOccurrenceUsageElement&&e.enterInterfaceOccurrenceUsageElement(this)}exitRule(e){e.exitInterfaceOccurrenceUsageElement&&e.exitInterfaceOccurrenceUsageElement(this)}accept(e){return e.visitInterfaceOccurrenceUsageElement?e.visitInterfaceOccurrenceUsageElement(this):e.visitChildren(this)}},ab=class extends h{constructor(e,t){super(e,t)}END(){return this.getToken(l.END,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_defaultInterfaceEnd}enterRule(e){e.enterDefaultInterfaceEnd&&e.enterDefaultInterfaceEnd(this)}exitRule(e){e.exitDefaultInterfaceEnd&&e.exitDefaultInterfaceEnd(this)}accept(e){return e.visitDefaultInterfaceEnd?e.visitDefaultInterfaceEnd(this):e.visitChildren(this)}},Md=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}INTERFACE(){return this.getToken(l.INTERFACE,0)}interfaceUsageDeclaration(){return this.getRuleContext(0,lb)}interfaceBody(){return this.getRuleContext(0,kd)}get ruleIndex(){return l.RULE_interfaceUsage}enterRule(e){e.enterInterfaceUsage&&e.enterInterfaceUsage(this)}exitRule(e){e.exitInterfaceUsage&&e.exitInterfaceUsage(this)}accept(e){return e.visitInterfaceUsage?e.visitInterfaceUsage(this):e.visitChildren(this)}},lb=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}CONNECT(){return this.getToken(l.CONNECT,0)}interfacePart(){return this.getRuleContext(0,ub)}get ruleIndex(){return l.RULE_interfaceUsageDeclaration}enterRule(e){e.enterInterfaceUsageDeclaration&&e.enterInterfaceUsageDeclaration(this)}exitRule(e){e.exitInterfaceUsageDeclaration&&e.exitInterfaceUsageDeclaration(this)}accept(e){return e.visitInterfaceUsageDeclaration?e.visitInterfaceUsageDeclaration(this):e.visitChildren(this)}},ub=class extends h{constructor(e,t){super(e,t)}binaryInterfacePart(){return this.getRuleContext(0,cb)}naryInterfacePart(){return this.getRuleContext(0,db)}get ruleIndex(){return l.RULE_interfacePart}enterRule(e){e.enterInterfacePart&&e.enterInterfacePart(this)}exitRule(e){e.exitInterfacePart&&e.exitInterfacePart(this)}accept(e){return e.visitInterfacePart?e.visitInterfacePart(this):e.visitChildren(this)}},cb=class extends h{constructor(e,t){super(e,t)}interfaceEndMember(e){return e===void 0?this.getRuleContexts(Ra):this.getRuleContext(e,Ra)}TO(){return this.getToken(l.TO,0)}get ruleIndex(){return l.RULE_binaryInterfacePart}enterRule(e){e.enterBinaryInterfacePart&&e.enterBinaryInterfacePart(this)}exitRule(e){e.exitBinaryInterfacePart&&e.exitBinaryInterfacePart(this)}accept(e){return e.visitBinaryInterfacePart?e.visitBinaryInterfacePart(this):e.visitChildren(this)}},db=class extends h{constructor(e,t){super(e,t)}LPAREN(){return this.getToken(l.LPAREN,0)}interfaceEndMember(e){return e===void 0?this.getRuleContexts(Ra):this.getRuleContext(e,Ra)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}RPAREN(){return this.getToken(l.RPAREN,0)}get ruleIndex(){return l.RULE_naryInterfacePart}enterRule(e){e.enterNaryInterfacePart&&e.enterNaryInterfacePart(this)}exitRule(e){e.exitNaryInterfacePart&&e.exitNaryInterfacePart(this)}accept(e){return e.visitNaryInterfacePart?e.visitNaryInterfacePart(this):e.visitChildren(this)}},Ra=class extends h{constructor(e,t){super(e,t)}interfaceEnd(){return this.getRuleContext(0,hb)}get ruleIndex(){return l.RULE_interfaceEndMember}enterRule(e){e.enterInterfaceEndMember&&e.enterInterfaceEndMember(this)}exitRule(e){e.exitInterfaceEndMember&&e.exitInterfaceEndMember(this)}accept(e){return e.visitInterfaceEndMember?e.visitInterfaceEndMember(this):e.visitChildren(this)}},hb=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}ownedCrossMultiplicityMember(){return this.getRuleContext(0,J1)}name(){return this.getRuleContext(0,Or)}COLON_COLON_GT(){return this.getToken(l.COLON_COLON_GT,0)}REFERENCES(){return this.getToken(l.REFERENCES,0)}get ruleIndex(){return l.RULE_interfaceEnd}enterRule(e){e.enterInterfaceEnd&&e.enterInterfaceEnd(this)}exitRule(e){e.exitInterfaceEnd&&e.exitInterfaceEnd(this)}accept(e){return e.visitInterfaceEnd?e.visitInterfaceEnd(this):e.visitChildren(this)}},pb=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}ALLOCATION(){return this.getToken(l.ALLOCATION,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_allocationDefinition}enterRule(e){e.enterAllocationDefinition&&e.enterAllocationDefinition(this)}exitRule(e){e.exitAllocationDefinition&&e.exitAllocationDefinition(this)}accept(e){return e.visitAllocationDefinition?e.visitAllocationDefinition(this):e.visitChildren(this)}},_d=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}allocationUsageDeclaration(){return this.getRuleContext(0,fb)}usageBody(){return this.getRuleContext(0,ki)}get ruleIndex(){return l.RULE_allocationUsage}enterRule(e){e.enterAllocationUsage&&e.enterAllocationUsage(this)}exitRule(e){e.exitAllocationUsage&&e.exitAllocationUsage(this)}accept(e){return e.visitAllocationUsage?e.visitAllocationUsage(this):e.visitChildren(this)}},fb=class extends h{constructor(e,t){super(e,t)}ALLOCATION(){return this.getToken(l.ALLOCATION,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}ALLOCATE(){return this.getToken(l.ALLOCATE,0)}connectorPart(){return this.getRuleContext(0,wd)}get ruleIndex(){return l.RULE_allocationUsageDeclaration}enterRule(e){e.enterAllocationUsageDeclaration&&e.enterAllocationUsageDeclaration(this)}exitRule(e){e.exitAllocationUsageDeclaration&&e.exitAllocationUsageDeclaration(this)}accept(e){return e.visitAllocationUsageDeclaration?e.visitAllocationUsageDeclaration(this):e.visitChildren(this)}},mb=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}FLOW(){return this.getToken(l.FLOW,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_flowDefinition}enterRule(e){e.enterFlowDefinition&&e.enterFlowDefinition(this)}exitRule(e){e.exitFlowDefinition&&e.exitFlowDefinition(this)}accept(e){return e.visitFlowDefinition?e.visitFlowDefinition(this):e.visitChildren(this)}},Nd=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}MESSAGE(){return this.getToken(l.MESSAGE,0)}messageDeclaration(){return this.getRuleContext(0,gb)}definitionBody(){return this.getRuleContext(0,ro)}get ruleIndex(){return l.RULE_message}enterRule(e){e.enterMessage&&e.enterMessage(this)}exitRule(e){e.exitMessage&&e.exitMessage(this)}accept(e){return e.visitMessage?e.visitMessage(this):e.visitChildren(this)}},gb=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}OF(){return this.getToken(l.OF,0)}flowPayloadFeatureMember(){return this.getRuleContext(0,Dd)}FROM(){return this.getToken(l.FROM,0)}messageEventMember(e){return e===void 0?this.getRuleContexts(Id):this.getRuleContext(e,Id)}TO(){return this.getToken(l.TO,0)}get ruleIndex(){return l.RULE_messageDeclaration}enterRule(e){e.enterMessageDeclaration&&e.enterMessageDeclaration(this)}exitRule(e){e.exitMessageDeclaration&&e.exitMessageDeclaration(this)}accept(e){return e.visitMessageDeclaration?e.visitMessageDeclaration(this):e.visitChildren(this)}},Id=class extends h{constructor(e,t){super(e,t)}messageEvent(){return this.getRuleContext(0,xb)}get ruleIndex(){return l.RULE_messageEventMember}enterRule(e){e.enterMessageEventMember&&e.enterMessageEventMember(this)}exitRule(e){e.exitMessageEventMember&&e.exitMessageEventMember(this)}accept(e){return e.visitMessageEventMember?e.visitMessageEventMember(this):e.visitChildren(this)}},xb=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}get ruleIndex(){return l.RULE_messageEvent}enterRule(e){e.enterMessageEvent&&e.enterMessageEvent(this)}exitRule(e){e.exitMessageEvent&&e.exitMessageEvent(this)}accept(e){return e.visitMessageEvent?e.visitMessageEvent(this):e.visitChildren(this)}},Ud=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}FLOW(){return this.getToken(l.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,pa)}definitionBody(){return this.getRuleContext(0,ro)}get ruleIndex(){return l.RULE_flowUsage}enterRule(e){e.enterFlowUsage&&e.enterFlowUsage(this)}exitRule(e){e.exitFlowUsage&&e.exitFlowUsage(this)}accept(e){return e.visitFlowUsage?e.visitFlowUsage(this):e.visitChildren(this)}},Od=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}SUCCESSION(){return this.getToken(l.SUCCESSION,0)}FLOW(){return this.getToken(l.FLOW,0)}flowDeclaration(){return this.getRuleContext(0,pa)}definitionBody(){return this.getRuleContext(0,ro)}get ruleIndex(){return l.RULE_successionFlowUsage}enterRule(e){e.enterSuccessionFlowUsage&&e.enterSuccessionFlowUsage(this)}exitRule(e){e.exitSuccessionFlowUsage&&e.exitSuccessionFlowUsage(this)}accept(e){return e.visitSuccessionFlowUsage?e.visitSuccessionFlowUsage(this):e.visitChildren(this)}},Dd=class extends h{constructor(e,t){super(e,t)}flowPayloadFeature(){return this.getRuleContext(0,bb)}get ruleIndex(){return l.RULE_flowPayloadFeatureMember}enterRule(e){e.enterFlowPayloadFeatureMember&&e.enterFlowPayloadFeatureMember(this)}exitRule(e){e.exitFlowPayloadFeatureMember&&e.exitFlowPayloadFeatureMember(this)}accept(e){return e.visitFlowPayloadFeatureMember?e.visitFlowPayloadFeatureMember(this):e.visitChildren(this)}},bb=class extends h{constructor(e,t){super(e,t)}payloadFeature(){return this.getRuleContext(0,Cu)}get ruleIndex(){return l.RULE_flowPayloadFeature}enterRule(e){e.enterFlowPayloadFeature&&e.enterFlowPayloadFeature(this)}exitRule(e){e.exitFlowPayloadFeature&&e.exitFlowPayloadFeature(this)}accept(e){return e.visitFlowPayloadFeature?e.visitFlowPayloadFeature(this):e.visitChildren(this)}},lC=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}featureChainPrefix(){return this.getRuleContext(0,yb)}get ruleIndex(){return l.RULE_flowEndSubsetting}enterRule(e){e.enterFlowEndSubsetting&&e.enterFlowEndSubsetting(this)}exitRule(e){e.exitFlowEndSubsetting&&e.exitFlowEndSubsetting(this)}accept(e){return e.visitFlowEndSubsetting?e.visitFlowEndSubsetting(this):e.visitChildren(this)}},yb=class extends h{constructor(e,t){super(e,t)}ownedFeatureChaining(e){return e===void 0?this.getRuleContexts(ss):this.getRuleContext(e,ss)}DOT(e){return e===void 0?this.getTokens(l.DOT):this.getToken(l.DOT,e)}get ruleIndex(){return l.RULE_featureChainPrefix}enterRule(e){e.enterFeatureChainPrefix&&e.enterFeatureChainPrefix(this)}exitRule(e){e.exitFeatureChainPrefix&&e.exitFeatureChainPrefix(this)}accept(e){return e.visitFeatureChainPrefix?e.visitFeatureChainPrefix(this):e.visitChildren(this)}},vb=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}ACTION(){return this.getToken(l.ACTION,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_actionDefinition}enterRule(e){e.enterActionDefinition&&e.enterActionDefinition(this)}exitRule(e){e.exitActionDefinition&&e.exitActionDefinition(this)}accept(e){return e.visitActionDefinition?e.visitActionDefinition(this):e.visitChildren(this)}},Bt=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}get ruleIndex(){return l.RULE_actionBody}enterRule(e){e.enterActionBody&&e.enterActionBody(this)}exitRule(e){e.exitActionBody&&e.exitActionBody(this)}accept(e){return e.visitActionBody?e.visitActionBody(this):e.visitChildren(this)}},fr=class extends h{constructor(e,t){super(e,t)}nonBehaviorBodyItem(){return this.getRuleContext(0,$d)}initialNodeMember(){return this.getRuleContext(0,Cb)}actionTargetSuccessionMember(e){return e===void 0?this.getRuleContexts(Fd):this.getRuleContext(e,Fd)}actionBehaviorMember(){return this.getRuleContext(0,Rb)}sourceSuccessionMember(){return this.getRuleContext(0,so)}guardedSuccessionMember(){return this.getRuleContext(0,Sb)}get ruleIndex(){return l.RULE_actionBodyItem}enterRule(e){e.enterActionBodyItem&&e.enterActionBodyItem(this)}exitRule(e){e.exitActionBodyItem&&e.exitActionBodyItem(this)}accept(e){return e.visitActionBodyItem?e.visitActionBodyItem(this):e.visitChildren(this)}},$d=class extends h{constructor(e,t){super(e,t)}importRule(){return this.getRuleContext(0,wi)}aliasMember(){return this.getRuleContext(0,sn)}definitionMember(){return this.getRuleContext(0,xa)}variantUsageMember(){return this.getRuleContext(0,hd)}nonOccurrenceUsageMember(){return this.getRuleContext(0,Nx)}structureUsageMember(){return this.getRuleContext(0,Ix)}sourceSuccessionMember(){return this.getRuleContext(0,so)}get ruleIndex(){return l.RULE_nonBehaviorBodyItem}enterRule(e){e.enterNonBehaviorBodyItem&&e.enterNonBehaviorBodyItem(this)}exitRule(e){e.exitNonBehaviorBodyItem&&e.exitNonBehaviorBodyItem(this)}accept(e){return e.visitNonBehaviorBodyItem?e.visitNonBehaviorBodyItem(this):e.visitChildren(this)}},Rb=class extends h{constructor(e,t){super(e,t)}behaviorUsageMember(){return this.getRuleContext(0,pd)}actionNodeMember(){return this.getRuleContext(0,Eb)}get ruleIndex(){return l.RULE_actionBehaviorMember}enterRule(e){e.enterActionBehaviorMember&&e.enterActionBehaviorMember(this)}exitRule(e){e.exitActionBehaviorMember&&e.exitActionBehaviorMember(this)}accept(e){return e.visitActionBehaviorMember?e.visitActionBehaviorMember(this):e.visitChildren(this)}},Cb=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}FIRST(){return this.getToken(l.FIRST,0)}qualifiedName(){return this.getRuleContext(0,Y)}relationshipBody(){return this.getRuleContext(0,Xt)}get ruleIndex(){return l.RULE_initialNodeMember}enterRule(e){e.enterInitialNodeMember&&e.enterInitialNodeMember(this)}exitRule(e){e.exitInitialNodeMember&&e.exitInitialNodeMember(this)}accept(e){return e.visitInitialNodeMember?e.visitInitialNodeMember(this):e.visitChildren(this)}},Eb=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}actionNode(){return this.getRuleContext(0,Tb)}get ruleIndex(){return l.RULE_actionNodeMember}enterRule(e){e.enterActionNodeMember&&e.enterActionNodeMember(this)}exitRule(e){e.exitActionNodeMember&&e.exitActionNodeMember(this)}accept(e){return e.visitActionNodeMember?e.visitActionNodeMember(this):e.visitChildren(this)}},Fd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}actionTargetSuccession(){return this.getRuleContext(0,Yb)}get ruleIndex(){return l.RULE_actionTargetSuccessionMember}enterRule(e){e.enterActionTargetSuccessionMember&&e.enterActionTargetSuccessionMember(this)}exitRule(e){e.exitActionTargetSuccessionMember&&e.exitActionTargetSuccessionMember(this)}accept(e){return e.visitActionTargetSuccessionMember?e.visitActionTargetSuccessionMember(this):e.visitChildren(this)}},Sb=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}guardedSuccession(){return this.getRuleContext(0,t4)}get ruleIndex(){return l.RULE_guardedSuccessionMember}enterRule(e){e.enterGuardedSuccessionMember&&e.enterGuardedSuccessionMember(this)}exitRule(e){e.exitGuardedSuccessionMember&&e.exitGuardedSuccessionMember(this)}accept(e){return e.visitGuardedSuccessionMember?e.visitGuardedSuccessionMember(this):e.visitChildren(this)}},Pb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}ACTION(){return this.getToken(l.ACTION,0)}actionUsageDeclaration(){return this.getRuleContext(0,Ca)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_actionUsage}enterRule(e){e.enterActionUsage&&e.enterActionUsage(this)}exitRule(e){e.exitActionUsage&&e.exitActionUsage(this)}accept(e){return e.visitActionUsage?e.visitActionUsage(this):e.visitChildren(this)}},Ca=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_actionUsageDeclaration}enterRule(e){e.enterActionUsageDeclaration&&e.enterActionUsageDeclaration(this)}exitRule(e){e.exitActionUsageDeclaration&&e.exitActionUsageDeclaration(this)}accept(e){return e.visitActionUsageDeclaration?e.visitActionUsageDeclaration(this):e.visitChildren(this)}},Lb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}PERFORM(){return this.getToken(l.PERFORM,0)}performActionUsageDeclaration(){return this.getRuleContext(0,Uu)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_performActionUsage}enterRule(e){e.enterPerformActionUsage&&e.enterPerformActionUsage(this)}exitRule(e){e.exitPerformActionUsage&&e.exitPerformActionUsage(this)}accept(e){return e.visitPerformActionUsage?e.visitPerformActionUsage(this):e.visitChildren(this)}},Uu=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}ACTION(){return this.getToken(l.ACTION,0)}valuePart(){return this.getRuleContext(0,St)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_performActionUsageDeclaration}enterRule(e){e.enterPerformActionUsageDeclaration&&e.enterPerformActionUsageDeclaration(this)}exitRule(e){e.exitPerformActionUsageDeclaration&&e.exitPerformActionUsageDeclaration(this)}accept(e){return e.visitPerformActionUsageDeclaration?e.visitPerformActionUsageDeclaration(this):e.visitChildren(this)}},Tb=class extends h{constructor(e,t){super(e,t)}controlNode(){return this.getRuleContext(0,wb)}sendNode(){return this.getRuleContext(0,Fb)}acceptNode(){return this.getRuleContext(0,Nb)}assignmentNode(){return this.getRuleContext(0,Bb)}terminateNode(){return this.getRuleContext(0,Zb)}ifNode(){return this.getRuleContext(0,jd)}whileLoopNode(){return this.getRuleContext(0,Kb)}forLoopNode(){return this.getRuleContext(0,Jb)}get ruleIndex(){return l.RULE_actionNode}enterRule(e){e.enterActionNode&&e.enterActionNode(this)}exitRule(e){e.exitActionNode&&e.exitActionNode(this)}accept(e){return e.visitActionNode?e.visitActionNode(this):e.visitChildren(this)}},as=class extends h{constructor(e,t){super(e,t)}ACTION(){return this.getToken(l.ACTION,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_actionNodeUsageDeclaration}enterRule(e){e.enterActionNodeUsageDeclaration&&e.enterActionNodeUsageDeclaration(this)}exitRule(e){e.exitActionNodeUsageDeclaration&&e.exitActionNodeUsageDeclaration(this)}accept(e){return e.visitActionNodeUsageDeclaration?e.visitActionNodeUsageDeclaration(this):e.visitChildren(this)}},Ou=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}get ruleIndex(){return l.RULE_actionNodePrefix}enterRule(e){e.enterActionNodePrefix&&e.enterActionNodePrefix(this)}exitRule(e){e.exitActionNodePrefix&&e.exitActionNodePrefix(this)}accept(e){return e.visitActionNodePrefix?e.visitActionNodePrefix(this):e.visitChildren(this)}},wb=class extends h{constructor(e,t){super(e,t)}mergeNode(){return this.getRuleContext(0,kb)}decisionNode(){return this.getRuleContext(0,Ab)}joinNode(){return this.getRuleContext(0,Mb)}forkNode(){return this.getRuleContext(0,_b)}get ruleIndex(){return l.RULE_controlNode}enterRule(e){e.enterControlNode&&e.enterControlNode(this)}exitRule(e){e.exitControlNode&&e.exitControlNode(this)}accept(e){return e.visitControlNode?e.visitControlNode(this):e.visitChildren(this)}},Ea=class extends h{constructor(e,t){super(e,t)}refPrefix(){return this.getRuleContext(0,ba)}INDIVIDUAL(){return this.getToken(l.INDIVIDUAL,0)}portionKind(){return this.getRuleContext(0,_u)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_controlNodePrefix}enterRule(e){e.enterControlNodePrefix&&e.enterControlNodePrefix(this)}exitRule(e){e.exitControlNodePrefix&&e.exitControlNodePrefix(this)}accept(e){return e.visitControlNodePrefix?e.visitControlNodePrefix(this):e.visitChildren(this)}},kb=class extends h{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ea)}MERGE(){return this.getToken(l.MERGE,0)}actionBody(){return this.getRuleContext(0,Bt)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_mergeNode}enterRule(e){e.enterMergeNode&&e.enterMergeNode(this)}exitRule(e){e.exitMergeNode&&e.exitMergeNode(this)}accept(e){return e.visitMergeNode?e.visitMergeNode(this):e.visitChildren(this)}},Ab=class extends h{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ea)}DECIDE(){return this.getToken(l.DECIDE,0)}actionBody(){return this.getRuleContext(0,Bt)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_decisionNode}enterRule(e){e.enterDecisionNode&&e.enterDecisionNode(this)}exitRule(e){e.exitDecisionNode&&e.exitDecisionNode(this)}accept(e){return e.visitDecisionNode?e.visitDecisionNode(this):e.visitChildren(this)}},Mb=class extends h{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ea)}JOIN(){return this.getToken(l.JOIN,0)}actionBody(){return this.getRuleContext(0,Bt)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_joinNode}enterRule(e){e.enterJoinNode&&e.enterJoinNode(this)}exitRule(e){e.exitJoinNode&&e.exitJoinNode(this)}accept(e){return e.visitJoinNode?e.visitJoinNode(this):e.visitChildren(this)}},_b=class extends h{constructor(e,t){super(e,t)}controlNodePrefix(){return this.getRuleContext(0,Ea)}FORK(){return this.getToken(l.FORK,0)}actionBody(){return this.getRuleContext(0,Bt)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_forkNode}enterRule(e){e.enterForkNode&&e.enterForkNode(this)}exitRule(e){e.exitForkNode&&e.exitForkNode(this)}accept(e){return e.visitForkNode?e.visitForkNode(this):e.visitChildren(this)}},Nb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}acceptNodeDeclaration(){return this.getRuleContext(0,Du)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_acceptNode}enterRule(e){e.enterAcceptNode&&e.enterAcceptNode(this)}exitRule(e){e.exitAcceptNode&&e.exitAcceptNode(this)}accept(e){return e.visitAcceptNode?e.visitAcceptNode(this):e.visitChildren(this)}},Du=class extends h{constructor(e,t){super(e,t)}ACCEPT(){return this.getToken(l.ACCEPT,0)}acceptParameterPart(){return this.getRuleContext(0,Hd)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}get ruleIndex(){return l.RULE_acceptNodeDeclaration}enterRule(e){e.enterAcceptNodeDeclaration&&e.enterAcceptNodeDeclaration(this)}exitRule(e){e.exitAcceptNodeDeclaration&&e.exitAcceptNodeDeclaration(this)}accept(e){return e.visitAcceptNodeDeclaration?e.visitAcceptNodeDeclaration(this):e.visitChildren(this)}},Hd=class extends h{constructor(e,t){super(e,t)}payloadParameterMember(){return this.getRuleContext(0,Ib)}VIA(){return this.getToken(l.VIA,0)}nodeParameterMember(){return this.getRuleContext(0,an)}get ruleIndex(){return l.RULE_acceptParameterPart}enterRule(e){e.enterAcceptParameterPart&&e.enterAcceptParameterPart(this)}exitRule(e){e.exitAcceptParameterPart&&e.exitAcceptParameterPart(this)}accept(e){return e.visitAcceptParameterPart?e.visitAcceptParameterPart(this):e.visitChildren(this)}},Ib=class extends h{constructor(e,t){super(e,t)}payloadParameter(){return this.getRuleContext(0,Ub)}get ruleIndex(){return l.RULE_payloadParameterMember}enterRule(e){e.enterPayloadParameterMember&&e.enterPayloadParameterMember(this)}exitRule(e){e.exitPayloadParameterMember&&e.exitPayloadParameterMember(this)}accept(e){return e.visitPayloadParameterMember?e.visitPayloadParameterMember(this):e.visitChildren(this)}},Ub=class extends h{constructor(e,t){super(e,t)}payloadFeature(){return this.getRuleContext(0,Cu)}triggerValuePart(){return this.getRuleContext(0,Ob)}identification(){return this.getRuleContext(0,ot)}payloadFeatureSpecializationPart(){return this.getRuleContext(0,Y1)}get ruleIndex(){return l.RULE_payloadParameter}enterRule(e){e.enterPayloadParameter&&e.enterPayloadParameter(this)}exitRule(e){e.exitPayloadParameter&&e.exitPayloadParameter(this)}accept(e){return e.visitPayloadParameter?e.visitPayloadParameter(this):e.visitChildren(this)}},Ob=class extends h{constructor(e,t){super(e,t)}triggerFeatureValue(){return this.getRuleContext(0,Db)}get ruleIndex(){return l.RULE_triggerValuePart}enterRule(e){e.enterTriggerValuePart&&e.enterTriggerValuePart(this)}exitRule(e){e.exitTriggerValuePart&&e.exitTriggerValuePart(this)}accept(e){return e.visitTriggerValuePart?e.visitTriggerValuePart(this):e.visitChildren(this)}},Db=class extends h{constructor(e,t){super(e,t)}triggerExpression(){return this.getRuleContext(0,$b)}get ruleIndex(){return l.RULE_triggerFeatureValue}enterRule(e){e.enterTriggerFeatureValue&&e.enterTriggerFeatureValue(this)}exitRule(e){e.exitTriggerFeatureValue&&e.exitTriggerFeatureValue(this)}accept(e){return e.visitTriggerFeatureValue?e.visitTriggerFeatureValue(this):e.visitChildren(this)}},$b=class extends h{constructor(e,t){super(e,t)}argumentMember(){return this.getRuleContext(0,Ug)}AT(){return this.getToken(l.AT,0)}AFTER(){return this.getToken(l.AFTER,0)}WHEN(){return this.getToken(l.WHEN,0)}argumentExpressionMember(){return this.getRuleContext(0,Og)}get ruleIndex(){return l.RULE_triggerExpression}enterRule(e){e.enterTriggerExpression&&e.enterTriggerExpression(this)}exitRule(e){e.exitTriggerExpression&&e.exitTriggerExpression(this)}accept(e){return e.visitTriggerExpression?e.visitTriggerExpression(this):e.visitChildren(this)}},Fb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}SEND(){return this.getToken(l.SEND,0)}actionBody(){return this.getRuleContext(0,Bt)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}actionUsageDeclaration(){return this.getRuleContext(0,Ca)}nodeParameterMember(){return this.getRuleContext(0,an)}emptyParameterMember(){return this.getRuleContext(0,kn)}senderReceiverPart(){return this.getRuleContext(0,Bd)}get ruleIndex(){return l.RULE_sendNode}enterRule(e){e.enterSendNode&&e.enterSendNode(this)}exitRule(e){e.exitSendNode&&e.exitSendNode(this)}accept(e){return e.visitSendNode?e.visitSendNode(this):e.visitChildren(this)}},zd=class extends h{constructor(e,t){super(e,t)}SEND(){return this.getToken(l.SEND,0)}nodeParameterMember(){return this.getRuleContext(0,an)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}senderReceiverPart(){return this.getRuleContext(0,Bd)}get ruleIndex(){return l.RULE_sendNodeDeclaration}enterRule(e){e.enterSendNodeDeclaration&&e.enterSendNodeDeclaration(this)}exitRule(e){e.exitSendNodeDeclaration&&e.exitSendNodeDeclaration(this)}accept(e){return e.visitSendNodeDeclaration?e.visitSendNodeDeclaration(this):e.visitChildren(this)}},Bd=class extends h{constructor(e,t){super(e,t)}VIA(){return this.getToken(l.VIA,0)}nodeParameterMember(e){return e===void 0?this.getRuleContexts(an):this.getRuleContext(e,an)}TO(){return this.getToken(l.TO,0)}emptyParameterMember(){return this.getRuleContext(0,kn)}get ruleIndex(){return l.RULE_senderReceiverPart}enterRule(e){e.enterSenderReceiverPart&&e.enterSenderReceiverPart(this)}exitRule(e){e.exitSenderReceiverPart&&e.exitSenderReceiverPart(this)}accept(e){return e.visitSenderReceiverPart?e.visitSenderReceiverPart(this):e.visitChildren(this)}},an=class extends h{constructor(e,t){super(e,t)}nodeParameter(){return this.getRuleContext(0,Hb)}get ruleIndex(){return l.RULE_nodeParameterMember}enterRule(e){e.enterNodeParameterMember&&e.enterNodeParameterMember(this)}exitRule(e){e.exitNodeParameterMember&&e.exitNodeParameterMember(this)}accept(e){return e.visitNodeParameterMember?e.visitNodeParameterMember(this):e.visitChildren(this)}},Hb=class extends h{constructor(e,t){super(e,t)}featureBinding(){return this.getRuleContext(0,zb)}get ruleIndex(){return l.RULE_nodeParameter}enterRule(e){e.enterNodeParameter&&e.enterNodeParameter(this)}exitRule(e){e.exitNodeParameter&&e.exitNodeParameter(this)}accept(e){return e.visitNodeParameter?e.visitNodeParameter(this):e.visitChildren(this)}},zb=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_featureBinding}enterRule(e){e.enterFeatureBinding&&e.enterFeatureBinding(this)}exitRule(e){e.exitFeatureBinding&&e.exitFeatureBinding(this)}accept(e){return e.visitFeatureBinding?e.visitFeatureBinding(this):e.visitChildren(this)}},kn=class extends h{constructor(e,t){super(e,t)}emptyUsage_(){return this.getRuleContext(0,Ly)}get ruleIndex(){return l.RULE_emptyParameterMember}enterRule(e){e.enterEmptyParameterMember&&e.enterEmptyParameterMember(this)}exitRule(e){e.exitEmptyParameterMember&&e.exitEmptyParameterMember(this)}accept(e){return e.visitEmptyParameterMember?e.visitEmptyParameterMember(this):e.visitChildren(this)}},Bb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}assignmentNodeDeclaration(){return this.getRuleContext(0,$u)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_assignmentNode}enterRule(e){e.enterAssignmentNode&&e.enterAssignmentNode(this)}exitRule(e){e.exitAssignmentNode&&e.exitAssignmentNode(this)}accept(e){return e.visitAssignmentNode?e.visitAssignmentNode(this):e.visitChildren(this)}},$u=class extends h{constructor(e,t){super(e,t)}ASSIGN(){return this.getToken(l.ASSIGN,0)}assignmentTargetMember(){return this.getRuleContext(0,jb)}featureChainMember(){return this.getRuleContext(0,ha)}COLON_EQ(){return this.getToken(l.COLON_EQ,0)}nodeParameterMember(){return this.getRuleContext(0,an)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}get ruleIndex(){return l.RULE_assignmentNodeDeclaration}enterRule(e){e.enterAssignmentNodeDeclaration&&e.enterAssignmentNodeDeclaration(this)}exitRule(e){e.exitAssignmentNodeDeclaration&&e.exitAssignmentNodeDeclaration(this)}accept(e){return e.visitAssignmentNodeDeclaration?e.visitAssignmentNodeDeclaration(this):e.visitChildren(this)}},jb=class extends h{constructor(e,t){super(e,t)}assignmentTargetParameter(){return this.getRuleContext(0,qb)}get ruleIndex(){return l.RULE_assignmentTargetMember}enterRule(e){e.enterAssignmentTargetMember&&e.enterAssignmentTargetMember(this)}exitRule(e){e.exitAssignmentTargetMember&&e.exitAssignmentTargetMember(this)}accept(e){return e.visitAssignmentTargetMember?e.visitAssignmentTargetMember(this):e.visitChildren(this)}},qb=class extends h{constructor(e,t){super(e,t)}assignmentTargetBinding(){return this.getRuleContext(0,Vb)}DOT(){return this.getToken(l.DOT,0)}get ruleIndex(){return l.RULE_assignmentTargetParameter}enterRule(e){e.enterAssignmentTargetParameter&&e.enterAssignmentTargetParameter(this)}exitRule(e){e.exitAssignmentTargetParameter&&e.exitAssignmentTargetParameter(this)}accept(e){return e.visitAssignmentTargetParameter?e.visitAssignmentTargetParameter(this):e.visitChildren(this)}},Vb=class extends h{constructor(e,t){super(e,t)}nonFeatureChainPrimaryExpression(){return this.getRuleContext(0,wy)}get ruleIndex(){return l.RULE_assignmentTargetBinding}enterRule(e){e.enterAssignmentTargetBinding&&e.enterAssignmentTargetBinding(this)}exitRule(e){e.exitAssignmentTargetBinding&&e.exitAssignmentTargetBinding(this)}accept(e){return e.visitAssignmentTargetBinding?e.visitAssignmentTargetBinding(this):e.visitChildren(this)}},Zb=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}TERMINATE(){return this.getToken(l.TERMINATE,0)}actionBody(){return this.getRuleContext(0,Bt)}actionNodeUsageDeclaration(){return this.getRuleContext(0,as)}nodeParameterMember(){return this.getRuleContext(0,an)}get ruleIndex(){return l.RULE_terminateNode}enterRule(e){e.enterTerminateNode&&e.enterTerminateNode(this)}exitRule(e){e.exitTerminateNode&&e.exitTerminateNode(this)}accept(e){return e.visitTerminateNode?e.visitTerminateNode(this):e.visitChildren(this)}},jd=class extends h{constructor(e,t){super(e,t)}actionNodePrefix(){return this.getRuleContext(0,Ou)}IF(){return this.getToken(l.IF,0)}expressionParameterMember(){return this.getRuleContext(0,Fu)}actionBodyParameterMember(e){return e===void 0?this.getRuleContexts(Sa):this.getRuleContext(e,Sa)}ELSE(){return this.getToken(l.ELSE,0)}ifNodeParameterMember(){return this.getRuleContext(0,Wb)}get ruleIndex(){return l.RULE_ifNode}enterRule(e){e.enterIfNode&&e.enterIfNode(this)}exitRule(e){e.exitIfNode&&e.exitIfNode(this)}accept(e){return e.visitIfNode?e.visitIfNode(this):e.visitChildren(this)}},Fu=class extends h{constructor(e,t){super(e,t)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_expressionParameterMember}enterRule(e){e.enterExpressionParameterMember&&e.enterExpressionParameterMember(this)}exitRule(e){e.exitExpressionParameterMember&&e.exitExpressionParameterMember(this)}accept(e){return e.visitExpressionParameterMember?e.visitExpressionParameterMember(this):e.visitChildren(this)}},Sa=class extends h{constructor(e,t){super(e,t)}actionBodyParameter(){return this.getRuleContext(0,Gb)}get ruleIndex(){return l.RULE_actionBodyParameterMember}enterRule(e){e.enterActionBodyParameterMember&&e.enterActionBodyParameterMember(this)}exitRule(e){e.exitActionBodyParameterMember&&e.exitActionBodyParameterMember(this)}accept(e){return e.visitActionBodyParameterMember?e.visitActionBodyParameterMember(this):e.visitChildren(this)}},Gb=class extends h{constructor(e,t){super(e,t)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}ACTION(){return this.getToken(l.ACTION,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_actionBodyParameter}enterRule(e){e.enterActionBodyParameter&&e.enterActionBodyParameter(this)}exitRule(e){e.exitActionBodyParameter&&e.exitActionBodyParameter(this)}accept(e){return e.visitActionBodyParameter?e.visitActionBodyParameter(this):e.visitChildren(this)}},Wb=class extends h{constructor(e,t){super(e,t)}ifNode(){return this.getRuleContext(0,jd)}get ruleIndex(){return l.RULE_ifNodeParameterMember}enterRule(e){e.enterIfNodeParameterMember&&e.enterIfNodeParameterMember(this)}exitRule(e){e.exitIfNodeParameterMember&&e.exitIfNodeParameterMember(this)}accept(e){return e.visitIfNodeParameterMember?e.visitIfNodeParameterMember(this):e.visitChildren(this)}},Kb=class extends h{constructor(e,t){super(e,t)}actionNodePrefix(){return this.getRuleContext(0,Ou)}actionBodyParameterMember(){return this.getRuleContext(0,Sa)}WHILE(){return this.getToken(l.WHILE,0)}expressionParameterMember(e){return e===void 0?this.getRuleContexts(Fu):this.getRuleContext(e,Fu)}LOOP(){return this.getToken(l.LOOP,0)}emptyParameterMember(){return this.getRuleContext(0,kn)}UNTIL(){return this.getToken(l.UNTIL,0)}SEMI(){return this.getToken(l.SEMI,0)}get ruleIndex(){return l.RULE_whileLoopNode}enterRule(e){e.enterWhileLoopNode&&e.enterWhileLoopNode(this)}exitRule(e){e.exitWhileLoopNode&&e.exitWhileLoopNode(this)}accept(e){return e.visitWhileLoopNode?e.visitWhileLoopNode(this):e.visitChildren(this)}},Jb=class extends h{constructor(e,t){super(e,t)}actionNodePrefix(){return this.getRuleContext(0,Ou)}FOR(){return this.getToken(l.FOR,0)}forVariableDeclarationMember(){return this.getRuleContext(0,Qb)}IN(){return this.getToken(l.IN,0)}nodeParameterMember(){return this.getRuleContext(0,an)}actionBodyParameterMember(){return this.getRuleContext(0,Sa)}get ruleIndex(){return l.RULE_forLoopNode}enterRule(e){e.enterForLoopNode&&e.enterForLoopNode(this)}exitRule(e){e.exitForLoopNode&&e.exitForLoopNode(this)}accept(e){return e.visitForLoopNode?e.visitForLoopNode(this):e.visitChildren(this)}},Qb=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_forVariableDeclarationMember}enterRule(e){e.enterForVariableDeclarationMember&&e.enterForVariableDeclarationMember(this)}exitRule(e){e.exitForVariableDeclarationMember&&e.exitForVariableDeclarationMember(this)}accept(e){return e.visitForVariableDeclarationMember?e.visitForVariableDeclarationMember(this):e.visitChildren(this)}},uC=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_forVariableDeclaration}enterRule(e){e.enterForVariableDeclaration&&e.enterForVariableDeclaration(this)}exitRule(e){e.exitForVariableDeclaration&&e.exitForVariableDeclaration(this)}accept(e){return e.visitForVariableDeclaration?e.visitForVariableDeclaration(this):e.visitChildren(this)}},Yb=class extends h{constructor(e,t){super(e,t)}usageBody(){return this.getRuleContext(0,ki)}targetSuccession(){return this.getRuleContext(0,Xb)}guardedTargetSuccession(){return this.getRuleContext(0,qd)}defaultTargetSuccession(){return this.getRuleContext(0,e4)}get ruleIndex(){return l.RULE_actionTargetSuccession}enterRule(e){e.enterActionTargetSuccession&&e.enterActionTargetSuccession(this)}exitRule(e){e.exitActionTargetSuccession&&e.exitActionTargetSuccession(this)}accept(e){return e.visitActionTargetSuccession?e.visitActionTargetSuccession(this):e.visitChildren(this)}},Xb=class extends h{constructor(e,t){super(e,t)}sourceEndMember(){return this.getRuleContext(0,Ed)}THEN(){return this.getToken(l.THEN,0)}connectorEndMember(){return this.getRuleContext(0,Ft)}get ruleIndex(){return l.RULE_targetSuccession}enterRule(e){e.enterTargetSuccession&&e.enterTargetSuccession(this)}exitRule(e){e.exitTargetSuccession&&e.exitTargetSuccession(this)}accept(e){return e.visitTargetSuccession?e.visitTargetSuccession(this):e.visitChildren(this)}},qd=class extends h{constructor(e,t){super(e,t)}guardExpressionMember(){return this.getRuleContext(0,La)}THEN(){return this.getToken(l.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}get ruleIndex(){return l.RULE_guardedTargetSuccession}enterRule(e){e.enterGuardedTargetSuccession&&e.enterGuardedTargetSuccession(this)}exitRule(e){e.exitGuardedTargetSuccession&&e.exitGuardedTargetSuccession(this)}accept(e){return e.visitGuardedTargetSuccession?e.visitGuardedTargetSuccession(this):e.visitChildren(this)}},e4=class extends h{constructor(e,t){super(e,t)}ELSE(){return this.getToken(l.ELSE,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}get ruleIndex(){return l.RULE_defaultTargetSuccession}enterRule(e){e.enterDefaultTargetSuccession&&e.enterDefaultTargetSuccession(this)}exitRule(e){e.exitDefaultTargetSuccession&&e.exitDefaultTargetSuccession(this)}accept(e){return e.visitDefaultTargetSuccession?e.visitDefaultTargetSuccession(this):e.visitChildren(this)}},t4=class extends h{constructor(e,t){super(e,t)}FIRST(){return this.getToken(l.FIRST,0)}featureChainMember(){return this.getRuleContext(0,ha)}guardExpressionMember(){return this.getRuleContext(0,La)}THEN(){return this.getToken(l.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}usageBody(){return this.getRuleContext(0,ki)}SUCCESSION(){return this.getToken(l.SUCCESSION,0)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_guardedSuccession}enterRule(e){e.enterGuardedSuccession&&e.enterGuardedSuccession(this)}exitRule(e){e.exitGuardedSuccession&&e.exitGuardedSuccession(this)}accept(e){return e.visitGuardedSuccession?e.visitGuardedSuccession(this):e.visitChildren(this)}},r4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}STATE(){return this.getToken(l.STATE,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}stateDefBody(){return this.getRuleContext(0,i4)}get ruleIndex(){return l.RULE_stateDefinition}enterRule(e){e.enterStateDefinition&&e.enterStateDefinition(this)}exitRule(e){e.exitStateDefinition&&e.exitStateDefinition(this)}accept(e){return e.visitStateDefinition?e.visitStateDefinition(this):e.visitChildren(this)}},i4=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}PARALLEL(){return this.getToken(l.PARALLEL,0)}stateBodyItem(e){return e===void 0?this.getRuleContexts(Pa):this.getRuleContext(e,Pa)}get ruleIndex(){return l.RULE_stateDefBody}enterRule(e){e.enterStateDefBody&&e.enterStateDefBody(this)}exitRule(e){e.exitStateDefBody&&e.exitStateDefBody(this)}accept(e){return e.visitStateDefBody?e.visitStateDefBody(this):e.visitChildren(this)}},Pa=class extends h{constructor(e,t){super(e,t)}nonBehaviorBodyItem(){return this.getRuleContext(0,$d)}behaviorUsageMember(){return this.getRuleContext(0,pd)}sourceSuccessionMember(){return this.getRuleContext(0,so)}targetTransitionUsageMember(e){return e===void 0?this.getRuleContexts(Zd):this.getRuleContext(e,Zd)}transitionUsageMember(){return this.getRuleContext(0,d4)}entryActionMember(){return this.getRuleContext(0,n4)}entryTransitionMember(e){return e===void 0?this.getRuleContexts(Vd):this.getRuleContext(e,Vd)}doActionMember(){return this.getRuleContext(0,s4)}exitActionMember(){return this.getRuleContext(0,o4)}get ruleIndex(){return l.RULE_stateBodyItem}enterRule(e){e.enterStateBodyItem&&e.enterStateBodyItem(this)}exitRule(e){e.exitStateBodyItem&&e.exitStateBodyItem(this)}accept(e){return e.visitStateBodyItem?e.visitStateBodyItem(this):e.visitChildren(this)}},n4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}ENTRY(){return this.getToken(l.ENTRY,0)}stateActionUsage(){return this.getRuleContext(0,Hu)}get ruleIndex(){return l.RULE_entryActionMember}enterRule(e){e.enterEntryActionMember&&e.enterEntryActionMember(this)}exitRule(e){e.exitEntryActionMember&&e.exitEntryActionMember(this)}accept(e){return e.visitEntryActionMember?e.visitEntryActionMember(this):e.visitChildren(this)}},s4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}DO(){return this.getToken(l.DO,0)}stateActionUsage(){return this.getRuleContext(0,Hu)}get ruleIndex(){return l.RULE_doActionMember}enterRule(e){e.enterDoActionMember&&e.enterDoActionMember(this)}exitRule(e){e.exitDoActionMember&&e.exitDoActionMember(this)}accept(e){return e.visitDoActionMember?e.visitDoActionMember(this):e.visitChildren(this)}},o4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}EXIT(){return this.getToken(l.EXIT,0)}stateActionUsage(){return this.getRuleContext(0,Hu)}get ruleIndex(){return l.RULE_exitActionMember}enterRule(e){e.enterExitActionMember&&e.enterExitActionMember(this)}exitRule(e){e.exitExitActionMember&&e.exitExitActionMember(this)}accept(e){return e.visitExitActionMember?e.visitExitActionMember(this):e.visitChildren(this)}},Vd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}SEMI(){return this.getToken(l.SEMI,0)}guardedTargetSuccession(){return this.getRuleContext(0,qd)}THEN(){return this.getToken(l.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}get ruleIndex(){return l.RULE_entryTransitionMember}enterRule(e){e.enterEntryTransitionMember&&e.enterEntryTransitionMember(this)}exitRule(e){e.exitEntryTransitionMember&&e.exitEntryTransitionMember(this)}accept(e){return e.visitEntryTransitionMember?e.visitEntryTransitionMember(this):e.visitChildren(this)}},Hu=class extends h{constructor(e,t){super(e,t)}emptyActionUsage_(){return this.getRuleContext(0,uh)}SEMI(){return this.getToken(l.SEMI,0)}statePerformActionUsage(){return this.getRuleContext(0,a4)}stateAcceptActionUsage(){return this.getRuleContext(0,l4)}stateSendActionUsage(){return this.getRuleContext(0,u4)}stateAssignmentActionUsage(){return this.getRuleContext(0,c4)}get ruleIndex(){return l.RULE_stateActionUsage}enterRule(e){e.enterStateActionUsage&&e.enterStateActionUsage(this)}exitRule(e){e.exitStateActionUsage&&e.exitStateActionUsage(this)}accept(e){return e.visitStateActionUsage?e.visitStateActionUsage(this):e.visitChildren(this)}},a4=class extends h{constructor(e,t){super(e,t)}performActionUsageDeclaration(){return this.getRuleContext(0,Uu)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_statePerformActionUsage}enterRule(e){e.enterStatePerformActionUsage&&e.enterStatePerformActionUsage(this)}exitRule(e){e.exitStatePerformActionUsage&&e.exitStatePerformActionUsage(this)}accept(e){return e.visitStatePerformActionUsage?e.visitStatePerformActionUsage(this):e.visitChildren(this)}},l4=class extends h{constructor(e,t){super(e,t)}acceptNodeDeclaration(){return this.getRuleContext(0,Du)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_stateAcceptActionUsage}enterRule(e){e.enterStateAcceptActionUsage&&e.enterStateAcceptActionUsage(this)}exitRule(e){e.exitStateAcceptActionUsage&&e.exitStateAcceptActionUsage(this)}accept(e){return e.visitStateAcceptActionUsage?e.visitStateAcceptActionUsage(this):e.visitChildren(this)}},u4=class extends h{constructor(e,t){super(e,t)}sendNodeDeclaration(){return this.getRuleContext(0,zd)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_stateSendActionUsage}enterRule(e){e.enterStateSendActionUsage&&e.enterStateSendActionUsage(this)}exitRule(e){e.exitStateSendActionUsage&&e.exitStateSendActionUsage(this)}accept(e){return e.visitStateSendActionUsage?e.visitStateSendActionUsage(this):e.visitChildren(this)}},c4=class extends h{constructor(e,t){super(e,t)}assignmentNodeDeclaration(){return this.getRuleContext(0,$u)}actionBody(){return this.getRuleContext(0,Bt)}get ruleIndex(){return l.RULE_stateAssignmentActionUsage}enterRule(e){e.enterStateAssignmentActionUsage&&e.enterStateAssignmentActionUsage(this)}exitRule(e){e.exitStateAssignmentActionUsage&&e.exitStateAssignmentActionUsage(this)}accept(e){return e.visitStateAssignmentActionUsage?e.visitStateAssignmentActionUsage(this):e.visitChildren(this)}},d4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}transitionUsage(){return this.getRuleContext(0,f4)}get ruleIndex(){return l.RULE_transitionUsageMember}enterRule(e){e.enterTransitionUsageMember&&e.enterTransitionUsageMember(this)}exitRule(e){e.exitTransitionUsageMember&&e.exitTransitionUsageMember(this)}accept(e){return e.visitTransitionUsageMember?e.visitTransitionUsageMember(this):e.visitChildren(this)}},Zd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}targetTransitionUsage(){return this.getRuleContext(0,m4)}get ruleIndex(){return l.RULE_targetTransitionUsageMember}enterRule(e){e.enterTargetTransitionUsageMember&&e.enterTargetTransitionUsageMember(this)}exitRule(e){e.exitTargetTransitionUsageMember&&e.exitTargetTransitionUsageMember(this)}accept(e){return e.visitTargetTransitionUsageMember?e.visitTargetTransitionUsageMember(this):e.visitChildren(this)}},h4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}STATE(){return this.getToken(l.STATE,0)}actionUsageDeclaration(){return this.getRuleContext(0,Ca)}stateUsageBody(){return this.getRuleContext(0,Gd)}get ruleIndex(){return l.RULE_stateUsage}enterRule(e){e.enterStateUsage&&e.enterStateUsage(this)}exitRule(e){e.exitStateUsage&&e.exitStateUsage(this)}accept(e){return e.visitStateUsage?e.visitStateUsage(this):e.visitChildren(this)}},Gd=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}PARALLEL(){return this.getToken(l.PARALLEL,0)}stateBodyItem(e){return e===void 0?this.getRuleContexts(Pa):this.getRuleContext(e,Pa)}get ruleIndex(){return l.RULE_stateUsageBody}enterRule(e){e.enterStateUsageBody&&e.enterStateUsageBody(this)}exitRule(e){e.exitStateUsageBody&&e.exitStateUsageBody(this)}accept(e){return e.visitStateUsageBody?e.visitStateUsageBody(this):e.visitChildren(this)}},p4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}EXHIBIT(){return this.getToken(l.EXHIBIT,0)}stateUsageBody(){return this.getRuleContext(0,Gd)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}STATE(){return this.getToken(l.STATE,0)}valuePart(){return this.getRuleContext(0,St)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_exhibitStateUsage}enterRule(e){e.enterExhibitStateUsage&&e.enterExhibitStateUsage(this)}exitRule(e){e.exitExhibitStateUsage&&e.exitExhibitStateUsage(this)}accept(e){return e.visitExhibitStateUsage?e.visitExhibitStateUsage(this):e.visitChildren(this)}},f4=class extends h{constructor(e,t){super(e,t)}TRANSITION(){return this.getToken(l.TRANSITION,0)}featureChainMember(){return this.getRuleContext(0,ha)}emptyParameterMember(e){return e===void 0?this.getRuleContexts(kn):this.getRuleContext(e,kn)}THEN(){return this.getToken(l.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}actionBody(){return this.getRuleContext(0,Bt)}FIRST(){return this.getToken(l.FIRST,0)}triggerActionMember(){return this.getRuleContext(0,Wd)}guardExpressionMember(){return this.getRuleContext(0,La)}effectBehaviorMember(){return this.getRuleContext(0,Kd)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_transitionUsage}enterRule(e){e.enterTransitionUsage&&e.enterTransitionUsage(this)}exitRule(e){e.exitTransitionUsage&&e.exitTransitionUsage(this)}accept(e){return e.visitTransitionUsage?e.visitTransitionUsage(this):e.visitChildren(this)}},m4=class extends h{constructor(e,t){super(e,t)}emptyParameterMember(e){return e===void 0?this.getRuleContexts(kn):this.getRuleContext(e,kn)}THEN(){return this.getToken(l.THEN,0)}transitionSuccessionMember(){return this.getRuleContext(0,ls)}actionBody(){return this.getRuleContext(0,Bt)}TRANSITION(){return this.getToken(l.TRANSITION,0)}triggerActionMember(){return this.getRuleContext(0,Wd)}guardExpressionMember(){return this.getRuleContext(0,La)}effectBehaviorMember(){return this.getRuleContext(0,Kd)}get ruleIndex(){return l.RULE_targetTransitionUsage}enterRule(e){e.enterTargetTransitionUsage&&e.enterTargetTransitionUsage(this)}exitRule(e){e.exitTargetTransitionUsage&&e.exitTargetTransitionUsage(this)}accept(e){return e.visitTargetTransitionUsage?e.visitTargetTransitionUsage(this):e.visitChildren(this)}},Wd=class extends h{constructor(e,t){super(e,t)}ACCEPT(){return this.getToken(l.ACCEPT,0)}triggerAction(){return this.getRuleContext(0,g4)}get ruleIndex(){return l.RULE_triggerActionMember}enterRule(e){e.enterTriggerActionMember&&e.enterTriggerActionMember(this)}exitRule(e){e.exitTriggerActionMember&&e.exitTriggerActionMember(this)}accept(e){return e.visitTriggerActionMember?e.visitTriggerActionMember(this):e.visitChildren(this)}},g4=class extends h{constructor(e,t){super(e,t)}acceptParameterPart(){return this.getRuleContext(0,Hd)}get ruleIndex(){return l.RULE_triggerAction}enterRule(e){e.enterTriggerAction&&e.enterTriggerAction(this)}exitRule(e){e.exitTriggerAction&&e.exitTriggerAction(this)}accept(e){return e.visitTriggerAction?e.visitTriggerAction(this):e.visitChildren(this)}},La=class extends h{constructor(e,t){super(e,t)}IF(){return this.getToken(l.IF,0)}ownedExpression(){return this.getRuleContext(0,Me)}get ruleIndex(){return l.RULE_guardExpressionMember}enterRule(e){e.enterGuardExpressionMember&&e.enterGuardExpressionMember(this)}exitRule(e){e.exitGuardExpressionMember&&e.exitGuardExpressionMember(this)}accept(e){return e.visitGuardExpressionMember?e.visitGuardExpressionMember(this):e.visitChildren(this)}},Kd=class extends h{constructor(e,t){super(e,t)}DO(){return this.getToken(l.DO,0)}effectBehaviorUsage(){return this.getRuleContext(0,x4)}get ruleIndex(){return l.RULE_effectBehaviorMember}enterRule(e){e.enterEffectBehaviorMember&&e.enterEffectBehaviorMember(this)}exitRule(e){e.exitEffectBehaviorMember&&e.exitEffectBehaviorMember(this)}accept(e){return e.visitEffectBehaviorMember?e.visitEffectBehaviorMember(this):e.visitChildren(this)}},x4=class extends h{constructor(e,t){super(e,t)}emptyActionUsage_(){return this.getRuleContext(0,uh)}transitionPerformActionUsage(){return this.getRuleContext(0,b4)}transitionAcceptActionUsage(){return this.getRuleContext(0,y4)}transitionSendActionUsage(){return this.getRuleContext(0,v4)}transitionAssignmentActionUsage(){return this.getRuleContext(0,R4)}get ruleIndex(){return l.RULE_effectBehaviorUsage}enterRule(e){e.enterEffectBehaviorUsage&&e.enterEffectBehaviorUsage(this)}exitRule(e){e.exitEffectBehaviorUsage&&e.exitEffectBehaviorUsage(this)}accept(e){return e.visitEffectBehaviorUsage?e.visitEffectBehaviorUsage(this):e.visitChildren(this)}},b4=class extends h{constructor(e,t){super(e,t)}performActionUsageDeclaration(){return this.getRuleContext(0,Uu)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}get ruleIndex(){return l.RULE_transitionPerformActionUsage}enterRule(e){e.enterTransitionPerformActionUsage&&e.enterTransitionPerformActionUsage(this)}exitRule(e){e.exitTransitionPerformActionUsage&&e.exitTransitionPerformActionUsage(this)}accept(e){return e.visitTransitionPerformActionUsage?e.visitTransitionPerformActionUsage(this):e.visitChildren(this)}},y4=class extends h{constructor(e,t){super(e,t)}acceptNodeDeclaration(){return this.getRuleContext(0,Du)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}get ruleIndex(){return l.RULE_transitionAcceptActionUsage}enterRule(e){e.enterTransitionAcceptActionUsage&&e.enterTransitionAcceptActionUsage(this)}exitRule(e){e.exitTransitionAcceptActionUsage&&e.exitTransitionAcceptActionUsage(this)}accept(e){return e.visitTransitionAcceptActionUsage?e.visitTransitionAcceptActionUsage(this):e.visitChildren(this)}},v4=class extends h{constructor(e,t){super(e,t)}sendNodeDeclaration(){return this.getRuleContext(0,zd)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}get ruleIndex(){return l.RULE_transitionSendActionUsage}enterRule(e){e.enterTransitionSendActionUsage&&e.enterTransitionSendActionUsage(this)}exitRule(e){e.exitTransitionSendActionUsage&&e.exitTransitionSendActionUsage(this)}accept(e){return e.visitTransitionSendActionUsage?e.visitTransitionSendActionUsage(this):e.visitChildren(this)}},R4=class extends h{constructor(e,t){super(e,t)}assignmentNodeDeclaration(){return this.getRuleContext(0,$u)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}actionBodyItem(e){return e===void 0?this.getRuleContexts(fr):this.getRuleContext(e,fr)}get ruleIndex(){return l.RULE_transitionAssignmentActionUsage}enterRule(e){e.enterTransitionAssignmentActionUsage&&e.enterTransitionAssignmentActionUsage(this)}exitRule(e){e.exitTransitionAssignmentActionUsage&&e.exitTransitionAssignmentActionUsage(this)}accept(e){return e.visitTransitionAssignmentActionUsage?e.visitTransitionAssignmentActionUsage(this):e.visitChildren(this)}},ls=class extends h{constructor(e,t){super(e,t)}transitionSuccession(){return this.getRuleContext(0,C4)}get ruleIndex(){return l.RULE_transitionSuccessionMember}enterRule(e){e.enterTransitionSuccessionMember&&e.enterTransitionSuccessionMember(this)}exitRule(e){e.exitTransitionSuccessionMember&&e.exitTransitionSuccessionMember(this)}accept(e){return e.visitTransitionSuccessionMember?e.visitTransitionSuccessionMember(this):e.visitChildren(this)}},C4=class extends h{constructor(e,t){super(e,t)}emptyEndMember(){return this.getRuleContext(0,E4)}connectorEndMember(){return this.getRuleContext(0,Ft)}get ruleIndex(){return l.RULE_transitionSuccession}enterRule(e){e.enterTransitionSuccession&&e.enterTransitionSuccession(this)}exitRule(e){e.exitTransitionSuccession&&e.exitTransitionSuccession(this)}accept(e){return e.visitTransitionSuccession?e.visitTransitionSuccession(this):e.visitChildren(this)}},E4=class extends h{constructor(e,t){super(e,t)}emptyFeature_(){return this.getRuleContext(0,ch)}get ruleIndex(){return l.RULE_emptyEndMember}enterRule(e){e.enterEmptyEndMember&&e.enterEmptyEndMember(this)}exitRule(e){e.exitEmptyEndMember&&e.exitEmptyEndMember(this)}accept(e){return e.visitEmptyEndMember?e.visitEmptyEndMember(this):e.visitChildren(this)}},S4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}CALC(){return this.getToken(l.CALC,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}calculationBody(){return this.getRuleContext(0,An)}get ruleIndex(){return l.RULE_calculationDefinition}enterRule(e){e.enterCalculationDefinition&&e.enterCalculationDefinition(this)}exitRule(e){e.exitCalculationDefinition&&e.exitCalculationDefinition(this)}accept(e){return e.visitCalculationDefinition?e.visitCalculationDefinition(this):e.visitChildren(this)}},P4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}CALC(){return this.getToken(l.CALC,0)}actionUsageDeclaration(){return this.getRuleContext(0,Ca)}calculationBody(){return this.getRuleContext(0,An)}get ruleIndex(){return l.RULE_calculationUsage}enterRule(e){e.enterCalculationUsage&&e.enterCalculationUsage(this)}exitRule(e){e.exitCalculationUsage&&e.exitCalculationUsage(this)}accept(e){return e.visitCalculationUsage?e.visitCalculationUsage(this):e.visitChildren(this)}},An=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}calculationBodyPart(){return this.getRuleContext(0,L4)}RBRACE(){return this.getToken(l.RBRACE,0)}get ruleIndex(){return l.RULE_calculationBody}enterRule(e){e.enterCalculationBody&&e.enterCalculationBody(this)}exitRule(e){e.exitCalculationBody&&e.exitCalculationBody(this)}accept(e){return e.visitCalculationBody?e.visitCalculationBody(this):e.visitChildren(this)}},L4=class extends h{constructor(e,t){super(e,t)}calculationBodyItem(e){return e===void 0?this.getRuleContexts(Jd):this.getRuleContext(e,Jd)}resultExpressionMember(){return this.getRuleContext(0,Ru)}get ruleIndex(){return l.RULE_calculationBodyPart}enterRule(e){e.enterCalculationBodyPart&&e.enterCalculationBodyPart(this)}exitRule(e){e.exitCalculationBodyPart&&e.exitCalculationBodyPart(this)}accept(e){return e.visitCalculationBodyPart?e.visitCalculationBodyPart(this):e.visitChildren(this)}},Jd=class extends h{constructor(e,t){super(e,t)}actionBodyItem(){return this.getRuleContext(0,fr)}returnParameterMember(){return this.getRuleContext(0,Qd)}get ruleIndex(){return l.RULE_calculationBodyItem}enterRule(e){e.enterCalculationBodyItem&&e.enterCalculationBodyItem(this)}exitRule(e){e.exitCalculationBodyItem&&e.exitCalculationBodyItem(this)}accept(e){return e.visitCalculationBodyItem?e.visitCalculationBodyItem(this):e.visitChildren(this)}},Qd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}RETURN(){return this.getToken(l.RETURN,0)}usageElement(){return this.getRuleContext(0,cd)}get ruleIndex(){return l.RULE_returnParameterMember}enterRule(e){e.enterReturnParameterMember&&e.enterReturnParameterMember(this)}exitRule(e){e.exitReturnParameterMember&&e.exitReturnParameterMember(this)}accept(e){return e.visitReturnParameterMember?e.visitReturnParameterMember(this):e.visitChildren(this)}},T4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}CONSTRAINT(){return this.getToken(l.CONSTRAINT,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}calculationBody(){return this.getRuleContext(0,An)}get ruleIndex(){return l.RULE_constraintDefinition}enterRule(e){e.enterConstraintDefinition&&e.enterConstraintDefinition(this)}exitRule(e){e.exitConstraintDefinition&&e.exitConstraintDefinition(this)}accept(e){return e.visitConstraintDefinition?e.visitConstraintDefinition(this):e.visitChildren(this)}},w4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}CONSTRAINT(){return this.getToken(l.CONSTRAINT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}calculationBody(){return this.getRuleContext(0,An)}get ruleIndex(){return l.RULE_constraintUsage}enterRule(e){e.enterConstraintUsage&&e.enterConstraintUsage(this)}exitRule(e){e.exitConstraintUsage&&e.exitConstraintUsage(this)}accept(e){return e.visitConstraintUsage?e.visitConstraintUsage(this):e.visitChildren(this)}},k4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}ASSERT(){return this.getToken(l.ASSERT,0)}calculationBody(){return this.getRuleContext(0,An)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}CONSTRAINT(){return this.getToken(l.CONSTRAINT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}NOT(){return this.getToken(l.NOT,0)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}get ruleIndex(){return l.RULE_assertConstraintUsage}enterRule(e){e.enterAssertConstraintUsage&&e.enterAssertConstraintUsage(this)}exitRule(e){e.exitAssertConstraintUsage&&e.exitAssertConstraintUsage(this)}accept(e){return e.visitAssertConstraintUsage?e.visitAssertConstraintUsage(this):e.visitChildren(this)}},Hr=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_constraintUsageDeclaration}enterRule(e){e.enterConstraintUsageDeclaration&&e.enterConstraintUsageDeclaration(this)}exitRule(e){e.exitConstraintUsageDeclaration&&e.exitConstraintUsageDeclaration(this)}accept(e){return e.visitConstraintUsageDeclaration?e.visitConstraintUsageDeclaration(this):e.visitChildren(this)}},A4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}REQUIREMENT(){return this.getToken(l.REQUIREMENT,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_requirementDefinition}enterRule(e){e.enterRequirementDefinition&&e.enterRequirementDefinition(this)}exitRule(e){e.exitRequirementDefinition&&e.exitRequirementDefinition(this)}accept(e){return e.visitRequirementDefinition?e.visitRequirementDefinition(this):e.visitChildren(this)}},di=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}requirementBodyItem(e){return e===void 0?this.getRuleContexts(Yd):this.getRuleContext(e,Yd)}get ruleIndex(){return l.RULE_requirementBody}enterRule(e){e.enterRequirementBody&&e.enterRequirementBody(this)}exitRule(e){e.exitRequirementBody&&e.exitRequirementBody(this)}accept(e){return e.visitRequirementBody?e.visitRequirementBody(this):e.visitChildren(this)}},Yd=class extends h{constructor(e,t){super(e,t)}definitionBodyItem(){return this.getRuleContext(0,io)}subjectMember(){return this.getRuleContext(0,Xd)}requirementConstraintMember(){return this.getRuleContext(0,_4)}framedConcernMember(){return this.getRuleContext(0,U4)}requirementVerificationMember(){return this.getRuleContext(0,ry)}actorMember(){return this.getRuleContext(0,eh)}stakeholderMember(){return this.getRuleContext(0,$4)}get ruleIndex(){return l.RULE_requirementBodyItem}enterRule(e){e.enterRequirementBodyItem&&e.enterRequirementBodyItem(this)}exitRule(e){e.exitRequirementBodyItem&&e.exitRequirementBodyItem(this)}accept(e){return e.visitRequirementBodyItem?e.visitRequirementBodyItem(this):e.visitChildren(this)}},Xd=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}subjectUsage(){return this.getRuleContext(0,M4)}get ruleIndex(){return l.RULE_subjectMember}enterRule(e){e.enterSubjectMember&&e.enterSubjectMember(this)}exitRule(e){e.exitSubjectMember&&e.exitSubjectMember(this)}accept(e){return e.visitSubjectMember?e.visitSubjectMember(this):e.visitChildren(this)}},M4=class extends h{constructor(e,t){super(e,t)}SUBJECT(){return this.getToken(l.SUBJECT,0)}usage(){return this.getRuleContext(0,Ht)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_subjectUsage}enterRule(e){e.enterSubjectUsage&&e.enterSubjectUsage(this)}exitRule(e){e.exitSubjectUsage&&e.exitSubjectUsage(this)}accept(e){return e.visitSubjectUsage?e.visitSubjectUsage(this):e.visitChildren(this)}},_4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}requirementKind(){return this.getRuleContext(0,N4)}requirementConstraintUsage(){return this.getRuleContext(0,I4)}get ruleIndex(){return l.RULE_requirementConstraintMember}enterRule(e){e.enterRequirementConstraintMember&&e.enterRequirementConstraintMember(this)}exitRule(e){e.exitRequirementConstraintMember&&e.exitRequirementConstraintMember(this)}accept(e){return e.visitRequirementConstraintMember?e.visitRequirementConstraintMember(this):e.visitChildren(this)}},N4=class extends h{constructor(e,t){super(e,t)}ASSUME(){return this.getToken(l.ASSUME,0)}REQUIRE(){return this.getToken(l.REQUIRE,0)}get ruleIndex(){return l.RULE_requirementKind}enterRule(e){e.enterRequirementKind&&e.enterRequirementKind(this)}exitRule(e){e.exitRequirementKind&&e.exitRequirementKind(this)}accept(e){return e.visitRequirementKind?e.visitRequirementKind(this):e.visitChildren(this)}},I4=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}requirementBody(){return this.getRuleContext(0,di)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}calculationBody(){return this.getRuleContext(0,An)}CONSTRAINT(){return this.getToken(l.CONSTRAINT,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_requirementConstraintUsage}enterRule(e){e.enterRequirementConstraintUsage&&e.enterRequirementConstraintUsage(this)}exitRule(e){e.exitRequirementConstraintUsage&&e.exitRequirementConstraintUsage(this)}accept(e){return e.visitRequirementConstraintUsage?e.visitRequirementConstraintUsage(this):e.visitChildren(this)}},U4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}FRAME(){return this.getToken(l.FRAME,0)}framedConcernUsage(){return this.getRuleContext(0,O4)}get ruleIndex(){return l.RULE_framedConcernMember}enterRule(e){e.enterFramedConcernMember&&e.enterFramedConcernMember(this)}exitRule(e){e.exitFramedConcernMember&&e.exitFramedConcernMember(this)}accept(e){return e.visitFramedConcernMember?e.visitFramedConcernMember(this):e.visitChildren(this)}},O4=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}calculationBody(){return this.getRuleContext(0,An)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}calculationUsageDeclaration(){return this.getRuleContext(0,Sy)}CONCERN(){return this.getToken(l.CONCERN,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_framedConcernUsage}enterRule(e){e.enterFramedConcernUsage&&e.enterFramedConcernUsage(this)}exitRule(e){e.exitFramedConcernUsage&&e.exitFramedConcernUsage(this)}accept(e){return e.visitFramedConcernUsage?e.visitFramedConcernUsage(this):e.visitChildren(this)}},eh=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}actorUsage(){return this.getRuleContext(0,D4)}get ruleIndex(){return l.RULE_actorMember}enterRule(e){e.enterActorMember&&e.enterActorMember(this)}exitRule(e){e.exitActorMember&&e.exitActorMember(this)}accept(e){return e.visitActorMember?e.visitActorMember(this):e.visitChildren(this)}},D4=class extends h{constructor(e,t){super(e,t)}ACTOR(){return this.getToken(l.ACTOR,0)}usage(){return this.getRuleContext(0,Ht)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_actorUsage}enterRule(e){e.enterActorUsage&&e.enterActorUsage(this)}exitRule(e){e.exitActorUsage&&e.exitActorUsage(this)}accept(e){return e.visitActorUsage?e.visitActorUsage(this):e.visitChildren(this)}},$4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}stakeholderUsage(){return this.getRuleContext(0,F4)}get ruleIndex(){return l.RULE_stakeholderMember}enterRule(e){e.enterStakeholderMember&&e.enterStakeholderMember(this)}exitRule(e){e.exitStakeholderMember&&e.exitStakeholderMember(this)}accept(e){return e.visitStakeholderMember?e.visitStakeholderMember(this):e.visitChildren(this)}},F4=class extends h{constructor(e,t){super(e,t)}STAKEHOLDER(){return this.getToken(l.STAKEHOLDER,0)}usage(){return this.getRuleContext(0,Ht)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_stakeholderUsage}enterRule(e){e.enterStakeholderUsage&&e.enterStakeholderUsage(this)}exitRule(e){e.exitStakeholderUsage&&e.exitStakeholderUsage(this)}accept(e){return e.visitStakeholderUsage?e.visitStakeholderUsage(this):e.visitChildren(this)}},H4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}REQUIREMENT(){return this.getToken(l.REQUIREMENT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_requirementUsage}enterRule(e){e.enterRequirementUsage&&e.enterRequirementUsage(this)}exitRule(e){e.exitRequirementUsage&&e.exitRequirementUsage(this)}accept(e){return e.visitRequirementUsage?e.visitRequirementUsage(this):e.visitChildren(this)}},z4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}SATISFY(){return this.getToken(l.SATISFY,0)}requirementBody(){return this.getRuleContext(0,di)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}REQUIREMENT(){return this.getToken(l.REQUIREMENT,0)}ASSERT(){return this.getToken(l.ASSERT,0)}valuePart(){return this.getRuleContext(0,St)}BY(){return this.getToken(l.BY,0)}satisfactionSubjectMember(){return this.getRuleContext(0,B4)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usageDeclaration(){return this.getRuleContext(0,Xe)}NOT(){return this.getToken(l.NOT,0)}get ruleIndex(){return l.RULE_satisfyRequirementUsage}enterRule(e){e.enterSatisfyRequirementUsage&&e.enterSatisfyRequirementUsage(this)}exitRule(e){e.exitSatisfyRequirementUsage&&e.exitSatisfyRequirementUsage(this)}accept(e){return e.visitSatisfyRequirementUsage?e.visitSatisfyRequirementUsage(this):e.visitChildren(this)}},B4=class extends h{constructor(e,t){super(e,t)}satisfactionParameter(){return this.getRuleContext(0,j4)}get ruleIndex(){return l.RULE_satisfactionSubjectMember}enterRule(e){e.enterSatisfactionSubjectMember&&e.enterSatisfactionSubjectMember(this)}exitRule(e){e.exitSatisfactionSubjectMember&&e.exitSatisfactionSubjectMember(this)}accept(e){return e.visitSatisfactionSubjectMember?e.visitSatisfactionSubjectMember(this):e.visitChildren(this)}},j4=class extends h{constructor(e,t){super(e,t)}satisfactionFeatureValue(){return this.getRuleContext(0,q4)}get ruleIndex(){return l.RULE_satisfactionParameter}enterRule(e){e.enterSatisfactionParameter&&e.enterSatisfactionParameter(this)}exitRule(e){e.exitSatisfactionParameter&&e.exitSatisfactionParameter(this)}accept(e){return e.visitSatisfactionParameter?e.visitSatisfactionParameter(this):e.visitChildren(this)}},q4=class extends h{constructor(e,t){super(e,t)}satisfactionReferenceExpression(){return this.getRuleContext(0,V4)}get ruleIndex(){return l.RULE_satisfactionFeatureValue}enterRule(e){e.enterSatisfactionFeatureValue&&e.enterSatisfactionFeatureValue(this)}exitRule(e){e.exitSatisfactionFeatureValue&&e.exitSatisfactionFeatureValue(this)}accept(e){return e.visitSatisfactionFeatureValue?e.visitSatisfactionFeatureValue(this):e.visitChildren(this)}},V4=class extends h{constructor(e,t){super(e,t)}featureChainMember(){return this.getRuleContext(0,ha)}get ruleIndex(){return l.RULE_satisfactionReferenceExpression}enterRule(e){e.enterSatisfactionReferenceExpression&&e.enterSatisfactionReferenceExpression(this)}exitRule(e){e.exitSatisfactionReferenceExpression&&e.exitSatisfactionReferenceExpression(this)}accept(e){return e.visitSatisfactionReferenceExpression?e.visitSatisfactionReferenceExpression(this):e.visitChildren(this)}},Z4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}CONCERN(){return this.getToken(l.CONCERN,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_concernDefinition}enterRule(e){e.enterConcernDefinition&&e.enterConcernDefinition(this)}exitRule(e){e.exitConcernDefinition&&e.exitConcernDefinition(this)}accept(e){return e.visitConcernDefinition?e.visitConcernDefinition(this):e.visitChildren(this)}},G4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}CONCERN(){return this.getToken(l.CONCERN,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_concernUsage}enterRule(e){e.enterConcernUsage&&e.enterConcernUsage(this)}exitRule(e){e.exitConcernUsage&&e.exitConcernUsage(this)}accept(e){return e.visitConcernUsage?e.visitConcernUsage(this):e.visitChildren(this)}},W4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}CASE(){return this.getToken(l.CASE,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_caseDefinition}enterRule(e){e.enterCaseDefinition&&e.enterCaseDefinition(this)}exitRule(e){e.exitCaseDefinition&&e.exitCaseDefinition(this)}accept(e){return e.visitCaseDefinition?e.visitCaseDefinition(this):e.visitChildren(this)}},K4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}CASE(){return this.getToken(l.CASE,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_caseUsage}enterRule(e){e.enterCaseUsage&&e.enterCaseUsage(this)}exitRule(e){e.exitCaseUsage&&e.exitCaseUsage(this)}accept(e){return e.visitCaseUsage?e.visitCaseUsage(this):e.visitChildren(this)}},Ai=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}caseBodyItem(e){return e===void 0?this.getRuleContexts(th):this.getRuleContext(e,th)}resultExpressionMember(){return this.getRuleContext(0,Ru)}get ruleIndex(){return l.RULE_caseBody}enterRule(e){e.enterCaseBody&&e.enterCaseBody(this)}exitRule(e){e.exitCaseBody&&e.exitCaseBody(this)}accept(e){return e.visitCaseBody?e.visitCaseBody(this):e.visitChildren(this)}},th=class extends h{constructor(e,t){super(e,t)}actionBodyItem(){return this.getRuleContext(0,fr)}returnParameterMember(){return this.getRuleContext(0,Qd)}subjectMember(){return this.getRuleContext(0,Xd)}actorMember(){return this.getRuleContext(0,eh)}objectiveMember(){return this.getRuleContext(0,J4)}get ruleIndex(){return l.RULE_caseBodyItem}enterRule(e){e.enterCaseBodyItem&&e.enterCaseBodyItem(this)}exitRule(e){e.exitCaseBodyItem&&e.exitCaseBodyItem(this)}accept(e){return e.visitCaseBodyItem?e.visitCaseBodyItem(this):e.visitChildren(this)}},J4=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}OBJECTIVE(){return this.getToken(l.OBJECTIVE,0)}objectiveRequirementUsage(){return this.getRuleContext(0,Q4)}get ruleIndex(){return l.RULE_objectiveMember}enterRule(e){e.enterObjectiveMember&&e.enterObjectiveMember(this)}exitRule(e){e.exitObjectiveMember&&e.exitObjectiveMember(this)}accept(e){return e.visitObjectiveMember?e.visitObjectiveMember(this):e.visitChildren(this)}},Q4=class extends h{constructor(e,t){super(e,t)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}requirementBody(){return this.getRuleContext(0,di)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_objectiveRequirementUsage}enterRule(e){e.enterObjectiveRequirementUsage&&e.enterObjectiveRequirementUsage(this)}exitRule(e){e.exitObjectiveRequirementUsage&&e.exitObjectiveRequirementUsage(this)}accept(e){return e.visitObjectiveRequirementUsage?e.visitObjectiveRequirementUsage(this):e.visitChildren(this)}},Y4=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}ANALYSIS(){return this.getToken(l.ANALYSIS,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_analysisCaseDefinition}enterRule(e){e.enterAnalysisCaseDefinition&&e.enterAnalysisCaseDefinition(this)}exitRule(e){e.exitAnalysisCaseDefinition&&e.exitAnalysisCaseDefinition(this)}accept(e){return e.visitAnalysisCaseDefinition?e.visitAnalysisCaseDefinition(this):e.visitChildren(this)}},X4=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}ANALYSIS(){return this.getToken(l.ANALYSIS,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_analysisCaseUsage}enterRule(e){e.enterAnalysisCaseUsage&&e.enterAnalysisCaseUsage(this)}exitRule(e){e.exitAnalysisCaseUsage&&e.exitAnalysisCaseUsage(this)}accept(e){return e.visitAnalysisCaseUsage?e.visitAnalysisCaseUsage(this):e.visitChildren(this)}},ey=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}VERIFICATION(){return this.getToken(l.VERIFICATION,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_verificationCaseDefinition}enterRule(e){e.enterVerificationCaseDefinition&&e.enterVerificationCaseDefinition(this)}exitRule(e){e.exitVerificationCaseDefinition&&e.exitVerificationCaseDefinition(this)}accept(e){return e.visitVerificationCaseDefinition?e.visitVerificationCaseDefinition(this):e.visitChildren(this)}},ty=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}VERIFICATION(){return this.getToken(l.VERIFICATION,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_verificationCaseUsage}enterRule(e){e.enterVerificationCaseUsage&&e.enterVerificationCaseUsage(this)}exitRule(e){e.exitVerificationCaseUsage&&e.exitVerificationCaseUsage(this)}accept(e){return e.visitVerificationCaseUsage?e.visitVerificationCaseUsage(this):e.visitChildren(this)}},ry=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}VERIFY(){return this.getToken(l.VERIFY,0)}requirementVerificationUsage(){return this.getRuleContext(0,iy)}get ruleIndex(){return l.RULE_requirementVerificationMember}enterRule(e){e.enterRequirementVerificationMember&&e.enterRequirementVerificationMember(this)}exitRule(e){e.exitRequirementVerificationMember&&e.exitRequirementVerificationMember(this)}accept(e){return e.visitRequirementVerificationMember?e.visitRequirementVerificationMember(this):e.visitChildren(this)}},iy=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}requirementBody(){return this.getRuleContext(0,di)}featureSpecialization(e){return e===void 0?this.getRuleContexts(on):this.getRuleContext(e,on)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}REQUIREMENT(){return this.getToken(l.REQUIREMENT,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_requirementVerificationUsage}enterRule(e){e.enterRequirementVerificationUsage&&e.enterRequirementVerificationUsage(this)}exitRule(e){e.exitRequirementVerificationUsage&&e.exitRequirementVerificationUsage(this)}accept(e){return e.visitRequirementVerificationUsage?e.visitRequirementVerificationUsage(this):e.visitChildren(this)}},ny=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}USE(){return this.getToken(l.USE,0)}CASE(){return this.getToken(l.CASE,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_useCaseDefinition}enterRule(e){e.enterUseCaseDefinition&&e.enterUseCaseDefinition(this)}exitRule(e){e.exitUseCaseDefinition&&e.exitUseCaseDefinition(this)}accept(e){return e.visitUseCaseDefinition?e.visitUseCaseDefinition(this):e.visitChildren(this)}},sy=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}USE(){return this.getToken(l.USE,0)}CASE(){return this.getToken(l.CASE,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}caseBody(){return this.getRuleContext(0,Ai)}get ruleIndex(){return l.RULE_useCaseUsage}enterRule(e){e.enterUseCaseUsage&&e.enterUseCaseUsage(this)}exitRule(e){e.exitUseCaseUsage&&e.exitUseCaseUsage(this)}accept(e){return e.visitUseCaseUsage?e.visitUseCaseUsage(this):e.visitChildren(this)}},oy=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}INCLUDE(){return this.getToken(l.INCLUDE,0)}caseBody(){return this.getRuleContext(0,Ai)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}USE(){return this.getToken(l.USE,0)}CASE(){return this.getToken(l.CASE,0)}valuePart(){return this.getRuleContext(0,St)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usageDeclaration(){return this.getRuleContext(0,Xe)}get ruleIndex(){return l.RULE_includeUseCaseUsage}enterRule(e){e.enterIncludeUseCaseUsage&&e.enterIncludeUseCaseUsage(this)}exitRule(e){e.exitIncludeUseCaseUsage&&e.exitIncludeUseCaseUsage(this)}accept(e){return e.visitIncludeUseCaseUsage?e.visitIncludeUseCaseUsage(this):e.visitChildren(this)}},ay=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}VIEW(){return this.getToken(l.VIEW,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}viewDefinitionBody(){return this.getRuleContext(0,ly)}get ruleIndex(){return l.RULE_viewDefinition}enterRule(e){e.enterViewDefinition&&e.enterViewDefinition(this)}exitRule(e){e.exitViewDefinition&&e.exitViewDefinition(this)}accept(e){return e.visitViewDefinition?e.visitViewDefinition(this):e.visitChildren(this)}},ly=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}viewDefinitionBodyItem(e){return e===void 0?this.getRuleContexts(rh):this.getRuleContext(e,rh)}get ruleIndex(){return l.RULE_viewDefinitionBody}enterRule(e){e.enterViewDefinitionBody&&e.enterViewDefinitionBody(this)}exitRule(e){e.exitViewDefinitionBody&&e.exitViewDefinitionBody(this)}accept(e){return e.visitViewDefinitionBody?e.visitViewDefinitionBody(this):e.visitChildren(this)}},rh=class extends h{constructor(e,t){super(e,t)}definitionBodyItem(){return this.getRuleContext(0,io)}elementFilterMember(){return this.getRuleContext(0,Eu)}viewRenderingMember(){return this.getRuleContext(0,ih)}get ruleIndex(){return l.RULE_viewDefinitionBodyItem}enterRule(e){e.enterViewDefinitionBodyItem&&e.enterViewDefinitionBodyItem(this)}exitRule(e){e.exitViewDefinitionBodyItem&&e.exitViewDefinitionBodyItem(this)}accept(e){return e.visitViewDefinitionBodyItem?e.visitViewDefinitionBodyItem(this):e.visitChildren(this)}},ih=class extends h{constructor(e,t){super(e,t)}memberPrefix(){return this.getRuleContext(0,_e)}RENDER(){return this.getToken(l.RENDER,0)}viewRenderingUsage(){return this.getRuleContext(0,uy)}get ruleIndex(){return l.RULE_viewRenderingMember}enterRule(e){e.enterViewRenderingMember&&e.enterViewRenderingMember(this)}exitRule(e){e.exitViewRenderingMember&&e.exitViewRenderingMember(this)}accept(e){return e.visitViewRenderingMember?e.visitViewRenderingMember(this):e.visitChildren(this)}},uy=class extends h{constructor(e,t){super(e,t)}ownedReferenceSubsetting(){return this.getRuleContext(0,er)}usageBody(){return this.getRuleContext(0,ki)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}usage(){return this.getRuleContext(0,Ht)}RENDERING(){return this.getToken(l.RENDERING,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_viewRenderingUsage}enterRule(e){e.enterViewRenderingUsage&&e.enterViewRenderingUsage(this)}exitRule(e){e.exitViewRenderingUsage&&e.exitViewRenderingUsage(this)}accept(e){return e.visitViewRenderingUsage?e.visitViewRenderingUsage(this):e.visitChildren(this)}},nh=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}VIEW(){return this.getToken(l.VIEW,0)}viewBody(){return this.getRuleContext(0,cy)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_viewUsage}enterRule(e){e.enterViewUsage&&e.enterViewUsage(this)}exitRule(e){e.exitViewUsage&&e.exitViewUsage(this)}accept(e){return e.visitViewUsage?e.visitViewUsage(this):e.visitChildren(this)}},cy=class extends h{constructor(e,t){super(e,t)}SEMI(){return this.getToken(l.SEMI,0)}LBRACE(){return this.getToken(l.LBRACE,0)}RBRACE(){return this.getToken(l.RBRACE,0)}viewBodyItem(e){return e===void 0?this.getRuleContexts(sh):this.getRuleContext(e,sh)}get ruleIndex(){return l.RULE_viewBody}enterRule(e){e.enterViewBody&&e.enterViewBody(this)}exitRule(e){e.exitViewBody&&e.exitViewBody(this)}accept(e){return e.visitViewBody?e.visitViewBody(this):e.visitChildren(this)}},sh=class extends h{constructor(e,t){super(e,t)}definitionBodyItem(){return this.getRuleContext(0,io)}elementFilterMember(){return this.getRuleContext(0,Eu)}viewRenderingMember(){return this.getRuleContext(0,ih)}expose(){return this.getRuleContext(0,dy)}get ruleIndex(){return l.RULE_viewBodyItem}enterRule(e){e.enterViewBodyItem&&e.enterViewBodyItem(this)}exitRule(e){e.exitViewBodyItem&&e.exitViewBodyItem(this)}accept(e){return e.visitViewBodyItem?e.visitViewBodyItem(this):e.visitChildren(this)}},dy=class extends h{constructor(e,t){super(e,t)}EXPOSE(){return this.getToken(l.EXPOSE,0)}relationshipBody(){return this.getRuleContext(0,Xt)}membershipExpose(){return this.getRuleContext(0,hy)}namespaceExpose(){return this.getRuleContext(0,py)}get ruleIndex(){return l.RULE_expose}enterRule(e){e.enterExpose&&e.enterExpose(this)}exitRule(e){e.exitExpose&&e.exitExpose(this)}accept(e){return e.visitExpose?e.visitExpose(this):e.visitChildren(this)}},hy=class extends h{constructor(e,t){super(e,t)}membershipImport(){return this.getRuleContext(0,gu)}get ruleIndex(){return l.RULE_membershipExpose}enterRule(e){e.enterMembershipExpose&&e.enterMembershipExpose(this)}exitRule(e){e.exitMembershipExpose&&e.exitMembershipExpose(this)}accept(e){return e.visitMembershipExpose?e.visitMembershipExpose(this):e.visitChildren(this)}},py=class extends h{constructor(e,t){super(e,t)}namespaceImport(){return this.getRuleContext(0,N1)}get ruleIndex(){return l.RULE_namespaceExpose}enterRule(e){e.enterNamespaceExpose&&e.enterNamespaceExpose(this)}exitRule(e){e.exitNamespaceExpose&&e.exitNamespaceExpose(this)}accept(e){return e.visitNamespaceExpose?e.visitNamespaceExpose(this):e.visitChildren(this)}},fy=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}VIEWPOINT(){return this.getToken(l.VIEWPOINT,0)}DEF(){return this.getToken(l.DEF,0)}definitionDeclaration(){return this.getRuleContext(0,rr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_viewpointDefinition}enterRule(e){e.enterViewpointDefinition&&e.enterViewpointDefinition(this)}exitRule(e){e.exitViewpointDefinition&&e.exitViewpointDefinition(this)}accept(e){return e.visitViewpointDefinition?e.visitViewpointDefinition(this):e.visitChildren(this)}},my=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}VIEWPOINT(){return this.getToken(l.VIEWPOINT,0)}constraintUsageDeclaration(){return this.getRuleContext(0,Hr)}requirementBody(){return this.getRuleContext(0,di)}get ruleIndex(){return l.RULE_viewpointUsage}enterRule(e){e.enterViewpointUsage&&e.enterViewpointUsage(this)}exitRule(e){e.exitViewpointUsage&&e.exitViewpointUsage(this)}accept(e){return e.visitViewpointUsage?e.visitViewpointUsage(this):e.visitChildren(this)}},gy=class extends h{constructor(e,t){super(e,t)}occurrenceDefinitionPrefix(){return this.getRuleContext(0,Mt)}RENDERING(){return this.getToken(l.RENDERING,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}get ruleIndex(){return l.RULE_renderingDefinition}enterRule(e){e.enterRenderingDefinition&&e.enterRenderingDefinition(this)}exitRule(e){e.exitRenderingDefinition&&e.exitRenderingDefinition(this)}accept(e){return e.visitRenderingDefinition?e.visitRenderingDefinition(this):e.visitChildren(this)}},oh=class extends h{constructor(e,t){super(e,t)}occurrenceUsagePrefix(){return this.getRuleContext(0,Fe)}RENDERING(){return this.getToken(l.RENDERING,0)}usage(){return this.getRuleContext(0,Ht)}get ruleIndex(){return l.RULE_renderingUsage}enterRule(e){e.enterRenderingUsage&&e.enterRenderingUsage(this)}exitRule(e){e.exitRenderingUsage&&e.exitRenderingUsage(this)}accept(e){return e.visitRenderingUsage?e.visitRenderingUsage(this):e.visitChildren(this)}},xy=class extends h{constructor(e,t){super(e,t)}METADATA(){return this.getToken(l.METADATA,0)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}ABSTRACT(){return this.getToken(l.ABSTRACT,0)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_metadataDefinition}enterRule(e){e.enterMetadataDefinition&&e.enterMetadataDefinition(this)}exitRule(e){e.exitMetadataDefinition&&e.exitMetadataDefinition(this)}accept(e){return e.visitMetadataDefinition?e.visitMetadataDefinition(this):e.visitChildren(this)}},ah=class extends h{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}get ruleIndex(){return l.RULE_prefixMetadataUsage}enterRule(e){e.enterPrefixMetadataUsage&&e.enterPrefixMetadataUsage(this)}exitRule(e){e.exitPrefixMetadataUsage&&e.exitPrefixMetadataUsage(this)}accept(e){return e.visitPrefixMetadataUsage?e.visitPrefixMetadataUsage(this):e.visitChildren(this)}},cC=class extends h{constructor(e,t){super(e,t)}metadataUsageDeclaration(){return this.getRuleContext(0,by)}metadataBody(){return this.getRuleContext(0,fa)}AT_SIGN(){return this.getToken(l.AT_SIGN,0)}METADATA(){return this.getToken(l.METADATA,0)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}ABOUT(){return this.getToken(l.ABOUT,0)}annotation(e){return e===void 0?this.getRuleContexts(is):this.getRuleContext(e,is)}COMMA(e){return e===void 0?this.getTokens(l.COMMA):this.getToken(l.COMMA,e)}get ruleIndex(){return l.RULE_metadataUsage}enterRule(e){e.enterMetadataUsage&&e.enterMetadataUsage(this)}exitRule(e){e.exitMetadataUsage&&e.exitMetadataUsage(this)}accept(e){return e.visitMetadataUsage?e.visitMetadataUsage(this):e.visitChildren(this)}},by=class extends h{constructor(e,t){super(e,t)}ownedFeatureTyping(){return this.getRuleContext(0,ns)}COLON(){return this.getToken(l.COLON,0)}TYPED(){return this.getToken(l.TYPED,0)}BY(){return this.getToken(l.BY,0)}identification(){return this.getRuleContext(0,ot)}get ruleIndex(){return l.RULE_metadataUsageDeclaration}enterRule(e){e.enterMetadataUsageDeclaration&&e.enterMetadataUsageDeclaration(this)}exitRule(e){e.exitMetadataUsageDeclaration&&e.exitMetadataUsageDeclaration(this)}accept(e){return e.visitMetadataUsageDeclaration?e.visitMetadataUsageDeclaration(this):e.visitChildren(this)}},lh=class extends h{constructor(e,t){super(e,t)}metadataBodyUsage(){return this.getRuleContext(0,yy)}get ruleIndex(){return l.RULE_metadataBodyUsageMember}enterRule(e){e.enterMetadataBodyUsageMember&&e.enterMetadataBodyUsageMember(this)}exitRule(e){e.exitMetadataBodyUsageMember&&e.exitMetadataBodyUsageMember(this)}accept(e){return e.visitMetadataBodyUsageMember?e.visitMetadataBodyUsageMember(this):e.visitChildren(this)}},yy=class extends h{constructor(e,t){super(e,t)}ownedRedefinition(){return this.getRuleContext(0,eo)}metadataBody(){return this.getRuleContext(0,fa)}REF(){return this.getToken(l.REF,0)}featureSpecializationPart(){return this.getRuleContext(0,Sr)}valuePart(){return this.getRuleContext(0,St)}COLON_GT_GT(){return this.getToken(l.COLON_GT_GT,0)}REDEFINES(){return this.getToken(l.REDEFINES,0)}get ruleIndex(){return l.RULE_metadataBodyUsage}enterRule(e){e.enterMetadataBodyUsage&&e.enterMetadataBodyUsage(this)}exitRule(e){e.exitMetadataBodyUsage&&e.exitMetadataBodyUsage(this)}accept(e){return e.visitMetadataBodyUsage?e.visitMetadataBodyUsage(this):e.visitChildren(this)}},vy=class extends h{constructor(e,t){super(e,t)}DEF(){return this.getToken(l.DEF,0)}definition(){return this.getRuleContext(0,Fr)}basicDefinitionPrefix(){return this.getRuleContext(0,ga)}definitionExtensionKeyword(e){return e===void 0?this.getRuleContexts($r):this.getRuleContext(e,$r)}get ruleIndex(){return l.RULE_extendedDefinition}enterRule(e){e.enterExtendedDefinition&&e.enterExtendedDefinition(this)}exitRule(e){e.exitExtendedDefinition&&e.exitExtendedDefinition(this)}accept(e){return e.visitExtendedDefinition?e.visitExtendedDefinition(this):e.visitChildren(this)}},Ry=class extends h{constructor(e,t){super(e,t)}unextendedUsagePrefix(){return this.getRuleContext(0,fd)}usage(){return this.getRuleContext(0,Ht)}usageExtensionKeyword(e){return e===void 0?this.getRuleContexts(Ke):this.getRuleContext(e,Ke)}get ruleIndex(){return l.RULE_extendedUsage}enterRule(e){e.enterExtendedUsage&&e.enterExtendedUsage(this)}exitRule(e){e.exitExtendedUsage&&e.exitExtendedUsage(this)}accept(e){return e.visitExtendedUsage?e.visitExtendedUsage(this):e.visitChildren(this)}},Cy=class extends h{constructor(e,t){super(e,t)}membershipImport(){return this.getRuleContext(0,gu)}namespaceImportDirect(){return this.getRuleContext(0,Ey)}get ruleIndex(){return l.RULE_filterPackageImportDeclaration}enterRule(e){e.enterFilterPackageImportDeclaration&&e.enterFilterPackageImportDeclaration(this)}exitRule(e){e.exitFilterPackageImportDeclaration&&e.exitFilterPackageImportDeclaration(this)}accept(e){return e.visitFilterPackageImportDeclaration?e.visitFilterPackageImportDeclaration(this):e.visitChildren(this)}},Ey=class extends h{constructor(e,t){super(e,t)}qualifiedName(){return this.getRuleContext(0,Y)}COLON_COLON(e){return e===void 0?this.getTokens(l.COLON_COLON):this.getToken(l.COLON_COLON,e)}STAR(){return this.getToken(l.STAR,0)}STAR_STAR(){return this.getToken(l.STAR_STAR,0)}get ruleIndex(){return l.RULE_namespaceImportDirect}enterRule(e){e.enterNamespaceImportDirect&&e.enterNamespaceImportDirect(this)}exitRule(e){e.exitNamespaceImportDirect&&e.exitNamespaceImportDirect(this)}accept(e){return e.visitNamespaceImportDirect?e.visitNamespaceImportDirect(this):e.visitChildren(this)}},Sy=class extends h{constructor(e,t){super(e,t)}usageDeclaration(){return this.getRuleContext(0,Xe)}valuePart(){return this.getRuleContext(0,St)}get ruleIndex(){return l.RULE_calculationUsageDeclaration}enterRule(e){e.enterCalculationUsageDeclaration&&e.enterCalculationUsageDeclaration(this)}exitRule(e){e.exitCalculationUsageDeclaration&&e.exitCalculationUsageDeclaration(this)}accept(e){return e.visitCalculationUsageDeclaration?e.visitCalculationUsageDeclaration(this):e.visitChildren(this)}},uh=class extends h{constructor(e,t){super(e,t)}get ruleIndex(){return l.RULE_emptyActionUsage_}enterRule(e){e.enterEmptyActionUsage_&&e.enterEmptyActionUsage_(this)}exitRule(e){e.exitEmptyActionUsage_&&e.exitEmptyActionUsage_(this)}accept(e){return e.visitEmptyActionUsage_?e.visitEmptyActionUsage_(this):e.visitChildren(this)}},ch=class extends h{constructor(e,t){super(e,t)}get ruleIndex(){return l.RULE_emptyFeature_}enterRule(e){e.enterEmptyFeature_&&e.enterEmptyFeature_(this)}exitRule(e){e.exitEmptyFeature_&&e.exitEmptyFeature_(this)}accept(e){return e.visitEmptyFeature_?e.visitEmptyFeature_(this):e.visitChildren(this)}},Py=class extends h{constructor(e,t){super(e,t)}get ruleIndex(){return l.RULE_emptyMultiplicity_}enterRule(e){e.enterEmptyMultiplicity_&&e.enterEmptyMultiplicity_(this)}exitRule(e){e.exitEmptyMultiplicity_&&e.exitEmptyMultiplicity_(this)}accept(e){return e.visitEmptyMultiplicity_?e.visitEmptyMultiplicity_(this):e.visitChildren(this)}},Ly=class extends h{constructor(e,t){super(e,t)}get ruleIndex(){return l.RULE_emptyUsage_}enterRule(e){e.enterEmptyUsage_&&e.enterEmptyUsage_(this)}exitRule(e){e.exitEmptyUsage_&&e.exitEmptyUsage_(this)}accept(e){return e.visitEmptyUsage_?e.visitEmptyUsage_(this):e.visitChildren(this)}},Ty=class extends h{constructor(e,t){super(e,t)}IDENTIFIER(){return this.getToken(l.IDENTIFIER,0)}get ruleIndex(){return l.RULE_filterPackageImport}enterRule(e){e.enterFilterPackageImport&&e.enterFilterPackageImport(this)}exitRule(e){e.exitFilterPackageImport&&e.exitFilterPackageImport(this)}accept(e){return e.visitFilterPackageImport?e.visitFilterPackageImport(this):e.visitChildren(this)}},wy=class extends h{constructor(e,t){super(e,t)}IDENTIFIER(){return this.getToken(l.IDENTIFIER,0)}get ruleIndex(){return l.RULE_nonFeatureChainPrimaryExpression}enterRule(e){e.enterNonFeatureChainPrimaryExpression&&e.enterNonFeatureChainPrimaryExpression(this)}exitRule(e){e.exitNonFeatureChainPrimaryExpression&&e.exitNonFeatureChainPrimaryExpression(this)}accept(e){return e.visitNonFeatureChainPrimaryExpression?e.visitNonFeatureChainPrimaryExpression(this):e.visitChildren(this)}},ky=class extends h{constructor(e,t){super(e,t)}get ruleIndex(){return l.RULE_portConjugation}enterRule(e){e.enterPortConjugation&&e.enterPortConjugation(this)}exitRule(e){e.exitPortConjugation&&e.exitPortConjugation(this)}accept(e){return e.visitPortConjugation?e.visitPortConjugation(this):e.visitChildren(this)}};var Ay=class extends lu{errors=[];syntaxError(e,t,i,n,s,o){let a=t,u=a?.text?.length??1;this.errors.push({line:i-1,column:n,message:s,offendingSymbol:a,length:u})}getErrors(){return this.errors}hasErrors(){return this.errors.length>0}};function dC(r){let e=au.fromString(r),t=new Eg(e),i=new Cg(t),n=Date.now();i.fill();let s=Date.now()-n,o=new l(i),a=new Ay;t.removeErrorListeners(),o.removeErrorListeners(),t.addErrorListener(a),o.addErrorListener(a);let u=null,c=Date.now();try{u=o.rootNamespace()}catch{}let d=Date.now()-c;return{tree:u,tokenStream:i,parser:o,lexer:t,errors:a.getErrors(),timing:{lexMs:s,parseMs:d}}}var dn=jh(ZO());var GO;function WO(){return GO?Array.from(GO.keys()):[]}function DQ(r){return{line:(r.line??1)-1,character:r.column??0}}function KO(r){let e=DQ(r),t=r.text?.length??1;return{start:e,end:{line:e.line,character:e.character+t}}}function JO(r){let e=r.start,t=r.stop??r.start;if(!e)return{start:{line:0,character:0},end:{line:0,character:0}};let i={line:(e.line??1)-1,character:e.column??0},n=t?{line:(t.line??1)-1,character:(t.column??0)+(t.text?.length??1)}:{line:i.line,character:i.character+1};return{start:i,end:n}}var Lh=class{constructor(e,t=null){this.id=e;this.parent=t}symbols=new Map;define(e){this.symbols.set(e.name,e)}lookupLocal(e){return this.symbols.get(e)}resolve(e){let t=this.symbols.get(e);return t||this.parent?.resolve(e)}resolveQualified(e){let t=e.split("::");if(t.length===1)return this.resolve(t[0]);let i=this.resolve(t[0]);if(i)return i}getLocalSymbols(){return Array.from(this.symbols.values())}getAllVisibleSymbols(){let e=new Map,t=this;for(;t;){for(let[i,n]of t.symbols)e.has(i)||e.set(i,n);t=t.parent}return Array.from(e.values())}};var Ua=class{symbols=new Map;symbolsByUri=new Map;globalScope;constructor(){this.globalScope=new Lh("__global__")}build(e,t){this.clearUri(e),t.tree&&this.walkTree(t.tree,e,this.globalScope,"")}getSymbol(e){return this.symbols.get(e)}findByName(e){let t=[];for(let i of this.symbols.values())i.name===e&&t.push(i);return t}getSymbolsForUri(e){return this.symbolsByUri.get(e)??[]}getAllSymbols(){return Array.from(this.symbols.values())}getGlobalScope(){return this.globalScope}findSymbolAtPosition(e,t,i){let n=this.getSymbolsForUri(e),s,o=1/0;for(let a of n){let u=a.selectionRange;if(t>=u.start.line&&t<=u.end.line&&(t>u.start.line||i>=u.start.character)&&(t<u.end.line||i<=u.end.character)){let c=(u.end.line-u.start.line)*1e4+(u.end.character-u.start.character);c<o&&(s=a,o=c)}}return s}findReferences(e){let t=[];for(let i of this.symbols.values())(i.name===e||i.typeNames.includes(e))&&t.push(i);return t}clearUri(e){let t=this.symbolsByUri.get(e);if(t)for(let i of t)this.symbols.delete(i.qualifiedName);this.symbolsByUri.set(e,[])}walkTree(e,t,i,n){let s=this.getRuleName(e),o=this.tryExtractSymbol(e,t,s,n),a=i;o&&(this.registerSymbol(o,t,i),a=new Lh(o.qualifiedName,i));for(let u=0;u<e.getChildCount();u++){let c=e.getChild(u);c instanceof h&&this.walkTree(c,t,a,o?.qualifiedName??n)}}registerSymbol(e,t,i){this.symbols.set(e.qualifiedName,e);let n=this.symbolsByUri.get(t)??[];n.push(e),this.symbolsByUri.set(t,n),i.define(e)}getRuleName(e){let t=e.ruleIndex;if(t>=0&&t<l.ruleNames.length)return l.ruleNames[t];let i=e.constructor.name;return i.endsWith("Context")?i.slice(0,-7):i}tryExtractSymbol(e,t,i,n){let s=this.inferKind(i,e);if(s===void 0)return;let o=this.extractName(e);if(!o)return;let a=n?`${n}::${o}`:o,u=JO(e),c=this.extractNameRange(e)??u,d=this.extractTypeNames(e),f=d[0],x=this.extractDocumentation(e),{multiplicity:y,multiplicityRange:E}=En(s)?this.extractMultiplicity(e):{};return{name:o,kind:s,qualifiedName:a,range:u,selectionRange:c,uri:t,typeName:f,typeNames:d,documentation:x,parentQualifiedName:n||void 0,children:[],multiplicity:y,multiplicityRange:E}}inferKind(e,t){let i=e.toLowerCase();if(i==="package"||i==="librarypackage")return"package";if(i==="partdefinition")return"part def";if(i==="attributedefinition")return"attribute def";if(i==="portdefinition")return"port def";if(i==="connectiondefinition")return"connection def";if(i==="interfacedefinition")return"interface def";if(i==="actiondefinition")return"action def";if(i==="statedefinition")return"state def";if(i==="requirementdefinition")return"requirement def";if(i==="constraintdefinition")return"constraint def";if(i==="itemdefinition")return"item def";if(i==="allocationdefinition")return"allocation def";if(i==="usecasedefinition")return"use case def";if(i==="enumerationdefinition")return"enum def";if(i==="calculationdefinition"||i==="calcdefinition")return"calc def";if(i==="viewdefinition")return"view def";if(i==="viewpointdefinition")return"viewpoint def";if(i==="metadatadefinition")return"metadata def";if(i==="partusage")return"part";if(i==="attributeusage")return"attribute";if(i==="portusage")return"port";if(i==="connectionusage")return"connection";if(i==="actionusage")return"action";if(i==="stateusage")return"state";if(i==="requirementusage")return"requirement";if(i==="constraintusage")return"constraint";if(i==="itemusage")return"item";if(i==="allocationusage")return"allocation";if(i==="usecaseusage")return"use case";if(i==="includeusecaseusage")return"include use case";if(i==="actorusage")return"actor";if(i==="subjectusage")return"subject";if(i==="referenceusage")return"ref";if(i==="interfaceusage")return"interface";if(i==="performactionusage")return"perform action";if(i==="exhibitstateusage")return"exhibit state";if(i==="transitionusage")return"transition";if(i==="occurrencedefinition")return"occurrence def";if(i==="occurrenceusage")return"occurrence";if(i==="renderingdefinition")return"rendering def";if(i==="viewusage")return"view";if(i==="viewpointusage")return"viewpoint";if(i==="aliasmember")return"alias"}extractName(e){for(let t=0;t<e.getChildCount();t++){let i=e.getChild(t);if(i instanceof Ur){let n=i.symbol;if(this.isIdentifierToken(n))return n.text??void 0}if(i instanceof h){let n=this.getRuleName(i);if(n.toLowerCase().includes("identification")||n.toLowerCase().includes("declarationname")||n.toLowerCase().includes("qualifiedname")||n.toLowerCase()==="name"){let s=this.extractTextFromSubtree(i);if(s)return s}}}for(let t=0;t<Math.min(e.getChildCount(),5);t++){let i=e.getChild(t);if(i instanceof h){let n=this.extractName(i);if(n)return n}}}extractNameRange(e){for(let t=0;t<e.getChildCount();t++){let i=e.getChild(t);if(i instanceof Ur&&this.isIdentifierToken(i.symbol))return KO(i.symbol);if(i instanceof h){let n=this.extractNameRange(i);if(n)return n}}}extractTypeNames(e){let t=[];if(this.collectTypeNamesFromTree(e,t,0),t.length>0)return t;let i=e.getText(),n=i.indexOf("{"),s=n>=0?i.substring(0,n):i;s=s.replace(/(connect|bind|first|then|flow|allocate|assign|accept|send|decide|merge|join|fork)\b.*/i,"");let o=s.match(/(?:specializes|:>|:>>)\s*([A-Za-z_][\w:]*(?:\s*,\s*[A-Za-z_][\w:]*)*)/);if(o){for(let c of o[1].split(",")){let d=c.trim().match(/^([A-Za-z_][\w:]*)/);d&&t.push(d[1])}return t}let a=s.match(/definedby\s*([A-Za-z_][\w:]*(?:\s*,\s*[A-Za-z_][\w:]*)*)/);if(a){for(let c of a[1].split(",")){let d=c.trim().match(/^([A-Za-z_][\w:]*)/);d&&t.push(d[1])}return t}let u=s.match(/:(?![:>])\s*([A-Za-z_][\w:]*(?:\s*,\s*[A-Za-z_][\w:]*)*)/);if(u){for(let c of u[1].split(",")){let d=c.trim().match(/^([A-Za-z_][\w:]*)/);d&&t.push(d[1])}return t}return t}collectTypeNamesFromTree(e,t,i){if(!(i>6))for(let n=0;n<e.getChildCount();n++){let s=e.getChild(n);if(!(s instanceof h))continue;let o=this.getRuleName(s).toLowerCase();if(o.includes("specialization")||o.includes("subclassification")||o.includes("typing")||o.includes("conjugation")||o.includes("disjoining")){let u=s.getText().replace(/^(specializes|:>|:>>|:\s|definedby|subsets|redefines|references|conjugates|disjoints)/i,"");for(let c of u.split(",")){let d=c.match(/([A-Za-z_][\w:]*)/);d&&t.push(d[1])}}else(o.includes("declaration")||o.includes("featurespecialization")||o.includes("typings")||o.includes("subsettings")||o.includes("redefinitions")||o.includes("usagecompletion")||o==="usage"||o==="definition")&&this.collectTypeNamesFromTree(s,t,i+1)}}extractDocumentation(e){for(let t=0;t<e.getChildCount();t++){let i=e.getChild(t);if(i instanceof h){let n=this.getRuleName(i).toLowerCase();if(n.includes("comment")||n.includes("doc")||n.includes("documentation")){let o=i.getText();if(o){let a=o;return a.startsWith("doc")&&(a=a.slice(3)),a.startsWith("comment")&&(a=a.slice(7)),a=a.replace(/^\/\*\s*/,"").replace(/\s*\*\/$/,""),a=a.replace(/^\/\/\s*/,""),a.trim()||o}return o??void 0}let s=this.extractDocumentation(i);if(s)return s}}}extractMultiplicity(e){let t=this.findMultiplicityBounds(e);if(!t)return{};let i=t.multiplicityExpressionMember();if(!i||i.length===0)return{};let n=[];for(let u of i){let c=u.getText()?.trim();c&&n.push(c)}if(n.length===0)return{};let s,o,a;if(n.length===1)if(a=n[0],n[0]==="*")s=0,o="*";else{let u=parseInt(n[0],10);if(isNaN(u))return{multiplicity:a};s=u,o=u}else{if(a=`${n[0]}..${n[1]}`,s=parseInt(n[0],10),isNaN(s))return{multiplicity:a};if(n[1]==="*")o="*";else if(o=parseInt(n[1],10),isNaN(o))return{multiplicity:a}}return{multiplicity:a,multiplicityRange:{lower:s,upper:o}}}findMultiplicityBounds(e){if(e.ruleIndex===l.RULE_multiplicityBounds)return e;for(let t=0;t<e.getChildCount();t++){let i=e.getChild(t);if(i instanceof h){let n=this.findMultiplicityBounds(i);if(n)return n}}}isIdentifierToken(e){let t=e.text;return t?/^[a-zA-Z_]/.test(t)&&!this.isKeyword(t):!1}isKeyword(e){return new Set(["about","abstract","accept","action","actor","after","alias","all","allocate","allocation","analysis","and","as","assert","assign","assume","attribute","bind","binding","bool","by","calc","case","comment","concern","connect","connection","constraint","decide","def","default","defined","dependency","derived","do","doc","else","end","entry","enum","event","exhibit","exit","expose","false","feature","filter","first","flow","for","fork","frame","from","hastype","if","implies","import","in","include","individual","inout","interface","istype","item","join","language","library","locale","merge","message","meta","metadata","multiplicity","namespace","nonunique","not","null","objective","occurrence","of","or","ordered","out","package","parallel","part","perform","port","private","protected","public","readonly","redefines","ref","references","render","rendering","rep","require","requirement","return","satisfy","send","snapshot","specializes","stakeholder","state","subject","subsets","succession","then","timeslice","to","transition","true","type","use","variant","variation","verification","verify","view","viewpoint","when","while","xor"]).has(e)}extractTextFromSubtree(e){let t=[];for(let i=0;i<e.getChildCount();i++){let n=e.getChild(i);if(n instanceof Ur){let s=n.symbol.text;s&&this.isIdentifierToken(n.symbol)&&t.push(s)}else if(n instanceof h){let s=this.extractTextFromSubtree(n);s&&t.push(s)}}return t.length>0?t.join("::"):void 0}};var QO=new Set(["Boolean","String","Integer","Real","Natural","Positive","Complex","Number","Rational","ScalarValues","DataFunctions","Anything","Nothing","Object","Occurrence","Base","Objects","Occurrences","Items","Parts","Ports","Actions","States","Connections","Interfaces","Allocations","Requirements","Constraints","Calculations","Cases","Flows","Transfers","Performances","TransitionPerformances","ISQ","SI","USCustomaryUnits","Quantities","MeasurementReferences","ScalarValues","LengthValue","MassValue","DurationValue","TimeValue","ElectricCurrentValue","ThermodynamicTemperatureValue","TemperatureValue","AmountOfSubstanceValue","LuminousIntensityValue","AreaValue","VolumeValue","SpeedValue","VelocityValue","AccelerationValue","ForceValue","EnergyValue","PowerValue","PressureValue","TorqueValue","MomentOfForceValue","AngularVelocityValue","FrequencyValue","DensityValue","MassFlowRateValue","VolumeFlowRateValue","LengthUnit","MassUnit","DurationUnit","TimeUnit"]),$Q=/^[A-Z][a-zA-Z]*Value$/,uc=class r{constructor(e){this.documentManager=e}validate(e){let t=this.documentManager.get(e);if(!t)return[];let i=new Ua;i.build(e,t);let n=this.documentManager.getText(e)??"",s=i.getSymbolsForUri(e),o=new Set(i.getAllSymbols().map(c=>c.name)),a=new Set(WO()),u=[];for(let c of s)u.push(...this.checkUnresolvedType(c,o,a),...this.checkInvalidMultiplicity(c),...this.checkEmptyEnum(c,s),...this.checkNamingConvention(c),...this.checkMissingDocumentation(c));return u.push(...this.checkDuplicateDefinitions(s)),u.push(...this.checkUnusedDefinitions(s)),u}checkUnresolvedType(e,t,i){if(!e.typeName)return[];let n=e.typeName.split("::")[0];if(t.has(e.typeName)||t.has(n)||QO.has(e.typeName)||QO.has(n)||i.has(n)||$Q.test(e.typeName))return[];let s=e.multiplicityRange&&e.multiplicityRange.lower>=1,o=s?dn.DiagnosticSeverity.Error:dn.DiagnosticSeverity.Warning,a=`Type '${e.typeName}' is not defined in the current document or standard library`;if(s){let u=e.multiplicity??"1";a+=` (feature '${e.name}' requires multiplicity [${u}])`}return[{severity:o,range:e.selectionRange,message:a,source:"sysml",code:"unresolved-type"}]}checkInvalidMultiplicity(e){if(!e.multiplicityRange||!e.multiplicity)return[];let{lower:t,upper:i}=e.multiplicityRange;return typeof i=="number"&&t>i?[{severity:dn.DiagnosticSeverity.Error,range:e.selectionRange,message:`Invalid multiplicity [${e.multiplicity}]: lower bound (${t}) exceeds upper bound (${i})`,source:"sysml",code:"invalid-multiplicity"}]:t<0?[{severity:dn.DiagnosticSeverity.Error,range:e.selectionRange,message:`Invalid multiplicity [${e.multiplicity}]: lower bound cannot be negative`,source:"sysml",code:"invalid-multiplicity"}]:[]}checkEmptyEnum(e,t){return e.kind!=="enum def"?[]:t.filter(s=>s.parentQualifiedName===e.qualifiedName).some(s=>s.kind==="enum"||s.kind==="attribute")?[]:[{severity:dn.DiagnosticSeverity.Information,range:e.selectionRange,message:`Enumeration '${e.name}' has no enum values defined`,source:"sysml",code:"empty-enum"}]}checkNamingConvention(e){if(!e.name)return[];if(e.kind==="package"||e.kind==="import"||e.kind==="comment"||e.kind==="doc"||e.kind==="alias"||e.kind==="unknown")return[];if(Qt(e.kind)){let t=e.name[0];if(t===t.toLowerCase()&&t!==t.toUpperCase())return[{severity:dn.DiagnosticSeverity.Hint,range:e.selectionRange,message:`Definition '${e.name}' should use PascalCase`,source:"sysml",code:"naming-convention"}]}else{let t=e.name[0];if(t===t.toUpperCase()&&t!==t.toLowerCase())return[{severity:dn.DiagnosticSeverity.Hint,range:e.selectionRange,message:`Usage '${e.name}' should use camelCase`,source:"sysml",code:"naming-convention"}]}return[]}checkMissingDocumentation(e){return Qt(e.kind)?e.documentation?[]:[{severity:dn.DiagnosticSeverity.Information,range:e.selectionRange,message:`Definition '${e.name}' has no documentation`,source:"sysml",code:"missing-doc"}]:[]}checkUnusedDefinitions(e){let t=e.filter(s=>Qt(s.kind)),i=new Set(e.filter(s=>!Qt(s.kind)&&s.kind!=="package").flatMap(s=>s.typeNames)),n=[];for(let s of t)i.has(s.name)||n.push({severity:dn.DiagnosticSeverity.Hint,range:s.selectionRange,message:`Definition '${s.name}' is not referenced by any usage in this document`,source:"sysml",code:"unused-definition"});return n}static validateSymbols(e,t){let i=[],n=Object.create(r.prototype);for(let s of e)i.push(...n.checkUnresolvedType(s,t,new Set),...n.checkInvalidMultiplicity(s),...n.checkEmptyEnum(s,e));return i.push(...n.checkDuplicateDefinitions(e)),i}checkDuplicateDefinitions(e){let t=[],i=new Map;for(let n of e){if(!Qt(n.kind))continue;let s=n.parentQualifiedName??"__root__",o=i.get(s);o||(o=new Map,i.set(s,o));let a=o.get(n.name);a||(a=[],o.set(n.name,a)),a.push(n)}for(let n of i.values())for(let[s,o]of n)if(o.length>1)for(let a of o)t.push({severity:dn.DiagnosticSeverity.Warning,range:a.selectionRange,message:`Duplicate definition: '${s}' is defined ${o.length} times in the same scope`,source:"sysml",code:"duplicate-definition"});return t}};var Gv=class{symbolTable=new Ua;loadedDocuments=new Map};function Wv(r){return{name:r.name,kind:r.kind,qualifiedName:r.qualifiedName,...r.typeNames.length>0?{type:r.typeNames.join(", ")}:{},...r.documentation?{documentation:r.documentation}:{},...r.parentQualifiedName?{parent:r.parentQualifiedName}:{},...r.children.length>0?{children:r.children}:{},location:{uri:r.uri,range:r.range}}}function cS(r){return{line:r.line+1,column:r.column+1,message:r.message,length:r.length}}function Kv(r,e,t){let i=dC(e);return r.symbolTable.build(t,i),r.loadedDocuments.set(t,e),{errors:i.errors,symbolCount:r.symbolTable.getSymbolsForUri(t).length,timingMs:{lex:i.timing.lexMs,parse:i.timing.parseMs}}}function XO(r,e,t){let i=t??"untitled.sysml",{errors:n,symbolCount:s,timingMs:o}=Kv(r,e,i),a={uri:i,symbolCount:s,errorCount:n.length,timing:o};n.length>0&&(a.errors=n.map(cS));let c=r.symbolTable.getSymbolsForUri(i).filter(d=>!d.parentQualifiedName).map(d=>`${d.kind} ${d.qualifiedName}`);return c.length>0&&(a.topLevelElements=c),a}function eD(r,e){let t=e.uri??"preview.sysml",{errors:i}=Kv(r,e.code,t),n=r.symbolTable.getSymbolsForUri(t),s=new Set(r.symbolTable.getAllSymbols().map(d=>d.name)),o=uc.validateSymbols(n,s),a=n;if(e.focus){let d=e.focus,f=new Set,x=new Map;for(let E of n)if(E.parentQualifiedName){let w=x.get(E.parentQualifiedName)??[];w.push(E),x.set(E.parentQualifiedName,w)}let y=n.filter(E=>E.name===d||E.qualifiedName===d||E.qualifiedName.endsWith(`::${d}`));for(let E of y){f.add(E.qualifiedName);let w=x.get(E.qualifiedName)??[];for(let A of w)f.add(A.qualifiedName);E.parentQualifiedName&&f.add(E.parentQualifiedName);let $=[...E.typeNames];for(let A of w)$.push(...A.typeNames);for(let A of $){let S=n.find(v=>v.name===A||v.qualifiedName===A);if(S){f.add(S.qualifiedName);for(let v of x.get(S.qualifiedName)??[])f.add(v.qualifiedName)}}}f.size>0&&(a=n.filter(E=>f.has(E.qualifiedName)))}let u=vM(a,n,e.diagramType),c={diagram:u.diagram,diagramType:u.diagramType,description:u.description,elementCount:u.elementCount,errors:i.map(cS)};if(e.originalCode){let d="preview-original.sysml",f=dC(e.originalCode),x=new Ua;x.build(d,f);let y=x.getSymbolsForUri(d),E=RM(y,n);c.diff={added:E.added.map(w=>`${w.kind} ${w.qualifiedName}`),changed:E.changed.map(w=>`${w.kind} ${w.qualifiedName}`),removed:E.removed,unchangedCount:E.unchanged.length}}return o.length>0&&(c.semanticIssues=o.map(d=>({line:d.range.start.line+1,column:d.range.start.character+1,message:d.message,severity:d.severity===1?"error":d.severity===2?"warning":"info"}))),c}function tD(r,e,t){let i=t??"untitled.sysml",{errors:n}=Kv(r,e,i),s=r.symbolTable.getSymbolsForUri(i),o=new Set(r.symbolTable.getAllSymbols().map(c=>c.name)),a=uc.validateSymbols(s,o),u=a.map(c=>({line:c.range.start.line+1,column:c.range.start.character+1,message:c.message,severity:c.severity===1?"error":c.severity===2?"warning":c.severity===3?"info":"hint",code:c.code}));return{valid:n.length===0&&a.filter(c=>c.severity===1).length===0,syntaxErrors:n.map(cS),semanticIssues:u,totalIssues:n.length+a.length}}function rD(r,e){let t=e??"untitled.sysml",i=r.symbolTable.getSymbolsForUri(t),n=new Set(r.symbolTable.getAllSymbols().map(a=>a.name)),s=uc.validateSymbols(i,n),o={};for(let a of s){let u=String(a.code??"unknown");o[u]=(o[u]??0)+1}return{uri:t,diagnostics:s.map(a=>({line:a.range.start.line+1,column:a.range.start.character+1,message:a.message,severity:a.severity===1?"error":a.severity===2?"warning":a.severity===3?"info":"hint",code:a.code})),summary:o}}function iD(r,e){let t=e.uri?r.symbolTable.getSymbolsForUri(e.uri):r.symbolTable.getAllSymbols();return e.kind&&(t=t.filter(i=>i.kind.toLowerCase()===e.kind.toLowerCase())),e.definitionsOnly&&(t=t.filter(i=>Qt(i.kind))),e.usagesOnly&&(t=t.filter(i=>En(i.kind))),{count:t.length,symbols:t.map(Wv)}}function nD(r,e){let t=r.symbolTable.getSymbol(e);if(t)return Wv(t);let i=r.symbolTable.findByName(e);return i.length===0?{found:!1,message:`No symbol found with name "${e}"`}:{found:!0,count:i.length,symbols:i.map(Wv)}}function sD(r,e){let t=r.symbolTable.findReferences(e);return{name:e,referenceCount:t.length,references:t.map(Wv)}}function oD(r,e){let i=r.symbolTable.getSymbol(e)??r.symbolTable.findByName(e)[0];if(!i)return{found:!1,message:`No symbol "${e}" found`};let n=[],s=i.parentQualifiedName;for(;s;){let a=r.symbolTable.getSymbol(s);if(!a)break;n.unshift({name:a.name,kind:a.kind,qualifiedName:a.qualifiedName}),s=a.parentQualifiedName}let o=i.children.map(a=>r.symbolTable.getSymbol(a)).filter(a=>a!==void 0).map(a=>({name:a.name,kind:a.kind,qualifiedName:a.qualifiedName,...a.typeNames.length>0?{type:a.typeNames.join(", ")}:{}}));return{element:{name:i.name,kind:i.kind,qualifiedName:i.qualifiedName,...i.typeNames.length>0?{type:i.typeNames.join(", ")}:{}},ancestors:n,children:o}}function aD(r){let e=r.symbolTable.getAllSymbols(),t={};for(let n of e)t[n.kind]=(t[n.kind]??0)+1;let i=Object.entries(t).sort(([,n],[,s])=>s-n);return{totalSymbols:e.length,loadedDocuments:Array.from(r.loadedDocuments.keys()),elementsByKind:Object.fromEntries(i),definitions:e.filter(n=>Qt(n.kind)).length,usages:e.filter(n=>En(n.kind)).length}}function lD(r,e){let t=e?r.symbolTable.getSymbolsForUri(e):r.symbolTable.getAllSymbols();return xM(t)}function FQ(){let r=Object.values(Yo);return{definitions:r.filter(e=>Qt(e)),usages:r.filter(e=>En(e)),other:r.filter(e=>!Qt(e)&&!En(e)),total:r.length}}var YO=["about","abstract","accept","action","actor","after","alias","all","allocate","allocation","analysis","and","as","assert","assign","assume","attribute","bind","binding","bool","by","calc","case","comment","concern","connect","connection","constraint","decide","def","default","defined","dependency","derived","do","doc","else","end","entry","enum","event","exhibit","exit","expose","false","feature","filter","first","flow","for","fork","frame","from","hastype","if","implies","import","in","include","individual","inout","interface","istype","item","join","language","library","locale","merge","message","meta","metadata","multiplicity","namespace","nonunique","not","null","objective","occurrence","of","or","ordered","out","package","parallel","part","perform","port","private","protected","public","readonly","redefines","ref","references","render","rendering","rep","require","requirement","return","satisfy","send","snapshot","specializes","stakeholder","state","subject","subsets","succession","then","timeslice","to","transition","true","type","use","variant","variation","verification","verify","view","viewpoint","when","while","xor"];function uD(){return FQ()}function cD(){return{keywords:YO,count:YO.length}}function dD(){return"# SysML v2 Grammar Overview\n\n## Element Categories\n\n### Definitions (Types)\nDefinitions declare reusable types:\n- `part def` \u2014 structural element type\n- `attribute def` \u2014 value type\n- `port def` \u2014 interface point type\n- `connection def` \u2014 connection type\n- `interface def` \u2014 interface type\n- `action def` \u2014 behavior type\n- `state def` \u2014 state machine type\n- `requirement def` \u2014 requirement type\n- `constraint def` \u2014 constraint type\n- `item def` \u2014 general item type\n- `enum def` \u2014 enumeration type\n- `calc def` \u2014 calculation type\n- `use case def` \u2014 use case type\n- `allocation def` \u2014 allocation type\n- `view def` / `viewpoint def` \u2014 viewpoint types\n\n### Usages (Instances)\nUsages create instances of definitions:\n- `part` \u2014 structural instance\n- `attribute` \u2014 value instance\n- `port` \u2014 port instance\n- `action` \u2014 action step\n- `state` \u2014 state instance\n- `requirement` \u2014 requirement instance\n- `item` \u2014 item instance\n\n## Specialisation Syntax\n- `part car : Vehicle` \u2014 `car` specialises `Vehicle`\n- `part car :> baseVehicle` \u2014 `car` subsets `baseVehicle`\n- `part car :>> specificVehicle` \u2014 `car` redefines `specificVehicle`\n\n## Packages & Namespaces\n```sysml\npackage VehicleModel {\n part def Vehicle { ... }\n part car : Vehicle;\n}\n```\n\n## Documentation\n```sysml\npart def Vehicle {\n doc /* A general vehicle definition */\n attribute mass : Real;\n}\n```\n\n## Unrestricted Names\nNames with spaces use single quotes: `part 'Main Assembly' : Assembly;`\n"}function hD(r,e){let{errors:t,symbolCount:i}=Kv(r,e,"review.sysml"),n=r.symbolTable.getSymbolsForUri("review.sysml"),s=n.filter(u=>Qt(u.kind)),o=n.filter(u=>En(u.kind)),a=[`Parsed: ${i} symbols, ${t.length} syntax errors`,`Definitions: ${s.map(u=>`${u.kind} ${u.name}`).join(", ")||"none"}`,`Usages: ${o.map(u=>`${u.kind} ${u.name}`).join(", ")||"none"}`];return t.length>0&&a.push(`Errors: ${t.map(u=>`line ${u.line+1}: ${u.message}`).join("; ")}`),[{role:"user",content:{type:"text",text:`Please review the following SysML v2 model for correctness, completeness, and best practices.
|
|
107
107
|
|
|
108
108
|
## Parse Results
|
|
109
109
|
${a.join(`
|