diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan.cf b/open-nars/src/com/googlecode/opennars/parser/loan/Loan.cf
index b42e51ec3a3034fd1c365662f9d4839e93180ada..83aa2b951582ca9c3dc531455d21d6ccfd0ec473 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan.cf
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan.cf
@@ -16,9 +16,13 @@ SentImport. Sentence ::= "@import" URILit "." ;							-- Imports a given URL
 SentDelay.	Sentence ::= "@delay" Integer "." ;							-- Waits for a given number of cycles before continuing
 SentOp.		Sentence ::= "@operator" URIRef "." ;						-- Declares URI to be an operator (currently unused)
 
-SentJudge.	Sentence ::= Stm TruthValue "." ;							-- A judgement with a given truth-value
-SentQuest.	Sentence ::= Stm "?" ;										-- A question
-SentGoal.	Sentence ::= Stm  TruthValue "!" ;							-- A goal with a given utility
+SentJudge.	Sentence ::= Stm TruthValue Budget "." ;					-- A judgement with a given truth-value
+SentQuest.	Sentence ::= Stm "?" Budget;								-- A question
+SentGoal.	Sentence ::= Stm  TruthValue Budget"!" ;					-- A goal with a given utility
+
+BudgetE.    Budget ::= ;
+BudgetP.    Budget ::= "@budget" "(" Double ")" ;
+BudgetPD.   Budget ::= "@budget" "(" Double ";" Double ")" ;
 
 StmImpl.	Stm  ::= Stm "==>" Stm1 ;									-- Implication
 StmEquiv.	Stm  ::= Stm "<=>" Stm1 ;									-- Equivalence
@@ -90,5 +94,5 @@ TruthE.		TruthValue ::= ;											-- The default truth value
 TruthF.		TruthValue ::= "%" Double "%" ;								-- Frequency only
 TruthFC.	TruthValue ::= "%" Double ";" Double "%" ;					-- A full truth value
 
-comment "/*" "*/" ;														-- Comments as in C++ or C#
-comment "//" ;
+comment "{---" "---}" ;														-- Comments similar to Haskell
+comment "---" ;
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan.pdf b/open-nars/src/com/googlecode/opennars/parser/loan/Loan.pdf
index 93f19f74d14507d552a80416c012ff8db1053220..81a11e0b5bf1dcbe502aed6f83e32b56d51e5222 100644
Binary files a/open-nars/src/com/googlecode/opennars/parser/loan/Loan.pdf and b/open-nars/src/com/googlecode/opennars/parser/loan/Loan.pdf differ
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/AbstractVisitor.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/AbstractVisitor.java
index 3c96a362b7fc3f5c20dcbd728865a9235e0ad1fe..2f38106782a146eb9d8779cd4c1dcb298e51ddf2 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/AbstractVisitor.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/AbstractVisitor.java
@@ -24,6 +24,13 @@ public class AbstractVisitor<R,A> implements AllVisitor<R,A> {
     public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence p, A arg) {
       throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
     }
+/* Budget */
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE p, A arg) { return visitDefault(p, arg); }
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP p, A arg) { return visitDefault(p, arg); }
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD p, A arg) { return visitDefault(p, arg); }
+    public R visitDefault(com.googlecode.opennars.parser.loan.Loan.Absyn.Budget p, A arg) {
+      throw new IllegalArgumentException(this.getClass().getName() + ": " + p);
+    }
 /* Stm */
     public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpl p, A arg) { return visitDefault(p, arg); }
     public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.StmEquiv p, A arg) { return visitDefault(p, arg); }
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/Budget.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/Budget.java
new file mode 100644
index 0000000000000000000000000000000000000000..2fae415b140288d5802199a885362f10fc7a0a88
--- /dev/null
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/Budget.java
@@ -0,0 +1,12 @@
+package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
+
+public abstract class Budget implements java.io.Serializable {
+  public abstract <R,A> R accept(Budget.Visitor<R,A> v, A arg);
+  public interface Visitor <R,A> {
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE p, A arg);
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP p, A arg);
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD p, A arg);
+
+  }
+
+}
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/BudgetE.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/BudgetE.java
new file mode 100644
index 0000000000000000000000000000000000000000..0ee824a62af59bb9538343e751e0bf8f299bb6eb
--- /dev/null
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/BudgetE.java
@@ -0,0 +1,22 @@
+package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
+
+public class BudgetE extends Budget {
+
+  public BudgetE() { }
+
+  public <R,A> R accept(com.googlecode.opennars.parser.loan.Loan.Absyn.Budget.Visitor<R,A> v, A arg) { return v.visit(this, arg); }
+
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE) {
+      return true;
+    }
+    return false;
+  }
+
+  public int hashCode() {
+    return 37;
+  }
+
+
+}
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/BudgetP.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/BudgetP.java
new file mode 100644
index 0000000000000000000000000000000000000000..6739602c9ae385ec0c09cdbb2bfce8e42c61f4c5
--- /dev/null
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/BudgetP.java
@@ -0,0 +1,24 @@
+package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
+
+public class BudgetP extends Budget {
+  public final Double double_;
+
+  public BudgetP(Double p1) { double_ = p1; }
+
+  public <R,A> R accept(com.googlecode.opennars.parser.loan.Loan.Absyn.Budget.Visitor<R,A> v, A arg) { return v.visit(this, arg); }
+
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP) {
+      com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP x = (com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP)o;
+      return this.double_.equals(x.double_);
+    }
+    return false;
+  }
+
+  public int hashCode() {
+    return this.double_.hashCode();
+  }
+
+
+}
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/BudgetPD.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/BudgetPD.java
new file mode 100644
index 0000000000000000000000000000000000000000..9e0234faf3574291b372a0a08efb03cccdc9c4b7
--- /dev/null
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/BudgetPD.java
@@ -0,0 +1,24 @@
+package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generated by the BNF Converter.
+
+public class BudgetPD extends Budget {
+  public final Double double_1, double_2;
+
+  public BudgetPD(Double p1, Double p2) { double_1 = p1; double_2 = p2; }
+
+  public <R,A> R accept(com.googlecode.opennars.parser.loan.Loan.Absyn.Budget.Visitor<R,A> v, A arg) { return v.visit(this, arg); }
+
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (o instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD) {
+      com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD x = (com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD)o;
+      return this.double_1.equals(x.double_1) && this.double_2.equals(x.double_2);
+    }
+    return false;
+  }
+
+  public int hashCode() {
+    return 37*(this.double_1.hashCode())+this.double_2.hashCode();
+  }
+
+
+}
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentGoal.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentGoal.java
index 5e0e24d02dd7b35bc3ee18dae39d57b58a128b46..92e434b3a4bb505c2a738b466cb4cf7ba934f9af 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentGoal.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentGoal.java
@@ -3,8 +3,9 @@ package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generate
 public class SentGoal extends Sentence {
   public final Stm stm_;
   public final TruthValue truthvalue_;
+  public final Budget budget_;
 
-  public SentGoal(Stm p1, TruthValue p2) { stm_ = p1; truthvalue_ = p2; }
+  public SentGoal(Stm p1, TruthValue p2, Budget p3) { stm_ = p1; truthvalue_ = p2; budget_ = p3; }
 
   public <R,A> R accept(com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence.Visitor<R,A> v, A arg) { return v.visit(this, arg); }
 
@@ -12,13 +13,13 @@ public class SentGoal extends Sentence {
     if (this == o) return true;
     if (o instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal) {
       com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal x = (com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal)o;
-      return this.stm_.equals(x.stm_) && this.truthvalue_.equals(x.truthvalue_);
+      return this.stm_.equals(x.stm_) && this.truthvalue_.equals(x.truthvalue_) && this.budget_.equals(x.budget_);
     }
     return false;
   }
 
   public int hashCode() {
-    return 37*(this.stm_.hashCode())+this.truthvalue_.hashCode();
+    return 37*(37*(this.stm_.hashCode())+this.truthvalue_.hashCode())+this.budget_.hashCode();
   }
 
 
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentJudge.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentJudge.java
index b7f164c84f47611646834a8fd1325a37800c0fcc..01ed541c58074a3acc5f0212a975aec0e6e10a10 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentJudge.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentJudge.java
@@ -3,8 +3,9 @@ package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generate
 public class SentJudge extends Sentence {
   public final Stm stm_;
   public final TruthValue truthvalue_;
+  public final Budget budget_;
 
-  public SentJudge(Stm p1, TruthValue p2) { stm_ = p1; truthvalue_ = p2; }
+  public SentJudge(Stm p1, TruthValue p2, Budget p3) { stm_ = p1; truthvalue_ = p2; budget_ = p3; }
 
   public <R,A> R accept(com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence.Visitor<R,A> v, A arg) { return v.visit(this, arg); }
 
@@ -12,13 +13,13 @@ public class SentJudge extends Sentence {
     if (this == o) return true;
     if (o instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge) {
       com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge x = (com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge)o;
-      return this.stm_.equals(x.stm_) && this.truthvalue_.equals(x.truthvalue_);
+      return this.stm_.equals(x.stm_) && this.truthvalue_.equals(x.truthvalue_) && this.budget_.equals(x.budget_);
     }
     return false;
   }
 
   public int hashCode() {
-    return 37*(this.stm_.hashCode())+this.truthvalue_.hashCode();
+    return 37*(37*(this.stm_.hashCode())+this.truthvalue_.hashCode())+this.budget_.hashCode();
   }
 
 
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentQuest.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentQuest.java
index 2bc8a8677033583257600eb706c85215189d5c0e..129db24bee69f7dd081c516fb633e29df893e5e3 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentQuest.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Absyn/SentQuest.java
@@ -2,8 +2,9 @@ package com.googlecode.opennars.parser.loan.Loan.Absyn; // Java Package generate
 
 public class SentQuest extends Sentence {
   public final Stm stm_;
+  public final Budget budget_;
 
-  public SentQuest(Stm p1) { stm_ = p1; }
+  public SentQuest(Stm p1, Budget p2) { stm_ = p1; budget_ = p2; }
 
   public <R,A> R accept(com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence.Visitor<R,A> v, A arg) { return v.visit(this, arg); }
 
@@ -11,13 +12,13 @@ public class SentQuest extends Sentence {
     if (this == o) return true;
     if (o instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest) {
       com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest x = (com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest)o;
-      return this.stm_.equals(x.stm_);
+      return this.stm_.equals(x.stm_) && this.budget_.equals(x.budget_);
     }
     return false;
   }
 
   public int hashCode() {
-    return this.stm_.hashCode();
+    return 37*(this.stm_.hashCode())+this.budget_.hashCode();
   }
 
 
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/AllVisitor.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/AllVisitor.java
index 505a1a777ec2964b4451c85b0ed2ff894e175f23..4875d542f520f91f59cfd4c1374dbe110b1df10a 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/AllVisitor.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/AllVisitor.java
@@ -7,6 +7,7 @@ public interface AllVisitor<R,A> extends
   com.googlecode.opennars.parser.loan.Loan.Absyn.Document.Visitor<R,A>,
   com.googlecode.opennars.parser.loan.Loan.Absyn.BaseRule.Visitor<R,A>,
   com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence.Visitor<R,A>,
+  com.googlecode.opennars.parser.loan.Loan.Absyn.Budget.Visitor<R,A>,
   com.googlecode.opennars.parser.loan.Loan.Absyn.Stm.Visitor<R,A>,
   com.googlecode.opennars.parser.loan.Loan.Absyn.Term.Visitor<R,A>,
   com.googlecode.opennars.parser.loan.Loan.Absyn.URIRef.Visitor<R,A>,
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/ComposVisitor.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/ComposVisitor.java
index adce4b93d2a56def6a1fe7562e2d1e98d4b492b0..0d724af767a79de0b1f496805bc0eeed9a2e27e3 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/ComposVisitor.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/ComposVisitor.java
@@ -7,6 +7,7 @@ public class ComposVisitor<A> implements
   com.googlecode.opennars.parser.loan.Loan.Absyn.Document.Visitor<com.googlecode.opennars.parser.loan.Loan.Absyn.Document,A>,
   com.googlecode.opennars.parser.loan.Loan.Absyn.BaseRule.Visitor<com.googlecode.opennars.parser.loan.Loan.Absyn.BaseRule,A>,
   com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence.Visitor<com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence,A>,
+  com.googlecode.opennars.parser.loan.Loan.Absyn.Budget.Visitor<com.googlecode.opennars.parser.loan.Loan.Absyn.Budget,A>,
   com.googlecode.opennars.parser.loan.Loan.Absyn.Stm.Visitor<com.googlecode.opennars.parser.loan.Loan.Absyn.Stm,A>,
   com.googlecode.opennars.parser.loan.Loan.Absyn.Term.Visitor<com.googlecode.opennars.parser.loan.Loan.Absyn.Term,A>,
   com.googlecode.opennars.parser.loan.Loan.Absyn.URIRef.Visitor<com.googlecode.opennars.parser.loan.Loan.Absyn.URIRef,A>,
@@ -73,21 +74,44 @@ public class ComposVisitor<A> implements
     {
       Stm stm_ = p.stm_.accept(this, arg);
       TruthValue truthvalue_ = p.truthvalue_.accept(this, arg);
+      Budget budget_ = p.budget_.accept(this, arg);
 
-      return new com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge(stm_, truthvalue_);
+      return new com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge(stm_, truthvalue_, budget_);
     }
     public Sentence visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest p, A arg)
     {
       Stm stm_ = p.stm_.accept(this, arg);
+      Budget budget_ = p.budget_.accept(this, arg);
 
-      return new com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest(stm_);
+      return new com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest(stm_, budget_);
     }
     public Sentence visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal p, A arg)
     {
       Stm stm_ = p.stm_.accept(this, arg);
       TruthValue truthvalue_ = p.truthvalue_.accept(this, arg);
+      Budget budget_ = p.budget_.accept(this, arg);
 
-      return new com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal(stm_, truthvalue_);
+      return new com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal(stm_, truthvalue_, budget_);
+    }
+
+/* Budget */
+    public Budget visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE p, A arg)
+    {
+
+      return new com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE();
+    }
+    public Budget visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP p, A arg)
+    {
+      Double double_ = p.double_;
+
+      return new com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP(double_);
+    }
+    public Budget visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD p, A arg)
+    {
+      Double double_1 = p.double_1;
+      Double double_2 = p.double_2;
+
+      return new com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD(double_1, double_2);
     }
 
 /* Stm */
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/FoldVisitor.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/FoldVisitor.java
index 1ce511699bc20b5f6d33ea42acd388baaad23f96..30368d80dc5aedfbac7db8ded638a90392d14abe 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/FoldVisitor.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/FoldVisitor.java
@@ -56,17 +56,34 @@ public abstract class FoldVisitor<R,A> implements AllVisitor<R,A> {
       R r = leaf(arg);
       r = combine(p.stm_.accept(this, arg), r, arg);
       r = combine(p.truthvalue_.accept(this, arg), r, arg);
+      r = combine(p.budget_.accept(this, arg), r, arg);
       return r;
     }
     public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest p, A arg) {
       R r = leaf(arg);
       r = combine(p.stm_.accept(this, arg), r, arg);
+      r = combine(p.budget_.accept(this, arg), r, arg);
       return r;
     }
     public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal p, A arg) {
       R r = leaf(arg);
       r = combine(p.stm_.accept(this, arg), r, arg);
       r = combine(p.truthvalue_.accept(this, arg), r, arg);
+      r = combine(p.budget_.accept(this, arg), r, arg);
+      return r;
+    }
+
+/* Budget */
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE p, A arg) {
+      R r = leaf(arg);
+      return r;
+    }
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP p, A arg) {
+      R r = leaf(arg);
+      return r;
+    }
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD p, A arg) {
+      R r = leaf(arg);
       return r;
     }
 
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Loan.cup b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Loan.cup
index 34a369c5a2a0a3cb66832cf678f1ee4bfc57657f..64cbfcb8cc37689fec2a75cc63f09521f6b9efa6 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Loan.cup
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Loan.cup
@@ -26,6 +26,7 @@ nonterminal com.googlecode.opennars.parser.loan.Loan.Absyn.Document Document;
 nonterminal com.googlecode.opennars.parser.loan.Loan.Absyn.BaseRule BaseRule;
 nonterminal com.googlecode.opennars.parser.loan.Loan.Absyn.ListSentence ListSentence;
 nonterminal com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence Sentence;
+nonterminal com.googlecode.opennars.parser.loan.Loan.Absyn.Budget Budget;
 nonterminal com.googlecode.opennars.parser.loan.Loan.Absyn.Stm Stm;
 nonterminal com.googlecode.opennars.parser.loan.Loan.Absyn.Stm Stm1;
 nonterminal com.googlecode.opennars.parser.loan.Loan.Absyn.Stm Stm2;
@@ -49,43 +50,44 @@ terminal _SYMB_4;    //   @delay
 terminal _SYMB_5;    //   @operator
 terminal _SYMB_6;    //   ?
 terminal _SYMB_7;    //   !
-terminal _SYMB_8;    //   ==>
-terminal _SYMB_9;    //   <=>
-terminal _SYMB_10;    //   =/>
-terminal _SYMB_11;    //   =\>
-terminal _SYMB_12;    //   =|>
-terminal _SYMB_13;    //   </>
-terminal _SYMB_14;    //   <|>
-terminal _SYMB_15;    //   &&
-terminal _SYMB_16;    //   ||
-terminal _SYMB_17;    //   ;
-terminal _SYMB_18;    //   ,
-terminal _SYMB_19;    //   -->
-terminal _SYMB_20;    //   <->
-terminal _SYMB_21;    //   }->
-terminal _SYMB_22;    //   --[
-terminal _SYMB_23;    //   }-[
-terminal _SYMB_24;    //   (
-terminal _SYMB_25;    //   )
-terminal _SYMB_26;    //   &
-terminal _SYMB_27;    //   |
-terminal _SYMB_28;    //   -
-terminal _SYMB_29;    //   ~
-terminal _SYMB_30;    //   /
-terminal _SYMB_31;    //   \
-terminal _SYMB_32;    //   {
-terminal _SYMB_33;    //   }
-terminal _SYMB_34;    //   [
-terminal _SYMB_35;    //   ]
-terminal _SYMB_36;    //   #
-terminal _SYMB_37;    //   :
-terminal _SYMB_38;    //   %
-terminal _SYMB_39;    //   false
-terminal _SYMB_40;    //   future
-terminal _SYMB_41;    //   not
-terminal _SYMB_42;    //   past
-terminal _SYMB_43;    //   present
-terminal _SYMB_44;    //   true
+terminal _SYMB_8;    //   @budget
+terminal _SYMB_9;    //   (
+terminal _SYMB_10;    //   )
+terminal _SYMB_11;    //   ;
+terminal _SYMB_12;    //   ==>
+terminal _SYMB_13;    //   <=>
+terminal _SYMB_14;    //   =/>
+terminal _SYMB_15;    //   =\>
+terminal _SYMB_16;    //   =|>
+terminal _SYMB_17;    //   </>
+terminal _SYMB_18;    //   <|>
+terminal _SYMB_19;    //   &&
+terminal _SYMB_20;    //   ||
+terminal _SYMB_21;    //   ,
+terminal _SYMB_22;    //   -->
+terminal _SYMB_23;    //   <->
+terminal _SYMB_24;    //   }->
+terminal _SYMB_25;    //   --[
+terminal _SYMB_26;    //   }-[
+terminal _SYMB_27;    //   &
+terminal _SYMB_28;    //   |
+terminal _SYMB_29;    //   -
+terminal _SYMB_30;    //   ~
+terminal _SYMB_31;    //   /
+terminal _SYMB_32;    //   \
+terminal _SYMB_33;    //   {
+terminal _SYMB_34;    //   }
+terminal _SYMB_35;    //   [
+terminal _SYMB_36;    //   ]
+terminal _SYMB_37;    //   #
+terminal _SYMB_38;    //   :
+terminal _SYMB_39;    //   %
+terminal _SYMB_40;    //   false
+terminal _SYMB_41;    //   future
+terminal _SYMB_42;    //   not
+terminal _SYMB_43;    //   past
+terminal _SYMB_44;    //   present
+terminal _SYMB_45;    //   true
 
 terminal String _STRING_;
 
@@ -111,86 +113,90 @@ Sentence ::= _SYMB_2 NSPrefix:p_2 URILit:p_3 _SYMB_1  {: RESULT = new com.google
   | _SYMB_3 URILit:p_2 _SYMB_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentImport(p_2); :}
   | _SYMB_4 _INTEGER_:p_2 _SYMB_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentDelay(p_2); :}
   | _SYMB_5 URIRef:p_2 _SYMB_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentOp(p_2); :}
-  | Stm:p_1 TruthValue:p_2 _SYMB_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge(p_1,p_2); :}
-  | Stm:p_1 _SYMB_6  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest(p_1); :}
-  | Stm:p_1 TruthValue:p_2 _SYMB_7  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal(p_1,p_2); :}
-;
-Stm ::= Stm:p_1 _SYMB_8 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpl(p_1,p_3); :} 
-  | Stm:p_1 _SYMB_9 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmEquiv(p_1,p_3); :}
-  | Stm:p_1 _SYMB_10 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpPred(p_1,p_3); :}
-  | Stm:p_1 _SYMB_11 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpRet(p_1,p_3); :}
-  | Stm:p_1 _SYMB_12 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpConc(p_1,p_3); :}
-  | Stm:p_1 _SYMB_13 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmEqvPred(p_1,p_3); :}
-  | Stm:p_1 _SYMB_14 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmEqvConc(p_1,p_3); :}
+  | Stm:p_1 TruthValue:p_2 Budget:p_3 _SYMB_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge(p_1,p_2,p_3); :}
+  | Stm:p_1 _SYMB_6 Budget:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest(p_1,p_3); :}
+  | Stm:p_1 TruthValue:p_2 Budget:p_3 _SYMB_7  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal(p_1,p_2,p_3); :}
+;
+Budget ::=  /* empty */  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE(); :} 
+  | _SYMB_8 _SYMB_9 _DOUBLE_:p_3 _SYMB_10  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP(p_3); :}
+  | _SYMB_8 _SYMB_9 _DOUBLE_:p_3 _SYMB_11 _DOUBLE_:p_5 _SYMB_10  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD(p_3,p_5); :}
+;
+Stm ::= Stm:p_1 _SYMB_12 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpl(p_1,p_3); :} 
+  | Stm:p_1 _SYMB_13 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmEquiv(p_1,p_3); :}
+  | Stm:p_1 _SYMB_14 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpPred(p_1,p_3); :}
+  | Stm:p_1 _SYMB_15 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpRet(p_1,p_3); :}
+  | Stm:p_1 _SYMB_16 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpConc(p_1,p_3); :}
+  | Stm:p_1 _SYMB_17 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmEqvPred(p_1,p_3); :}
+  | Stm:p_1 _SYMB_18 Stm1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmEqvConc(p_1,p_3); :}
   | Stm1:p_1  {: RESULT = p_1; :}
 ;
-Stm1 ::= Stm1:p_1 _SYMB_15 Stm2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmConj(p_1,p_3); :} 
-  | Stm1:p_1 _SYMB_16 Stm2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmDisj(p_1,p_3); :}
-  | Stm1:p_1 _SYMB_17 Stm2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmPar(p_1,p_3); :}
-  | Stm1:p_1 _SYMB_18 Stm2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmSeq(p_1,p_3); :}
+Stm1 ::= Stm1:p_1 _SYMB_19 Stm2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmConj(p_1,p_3); :} 
+  | Stm1:p_1 _SYMB_20 Stm2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmDisj(p_1,p_3); :}
+  | Stm1:p_1 _SYMB_11 Stm2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmPar(p_1,p_3); :}
+  | Stm1:p_1 _SYMB_21 Stm2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmSeq(p_1,p_3); :}
   | Stm2:p_1  {: RESULT = p_1; :}
 ;
-Stm2 ::= _SYMB_41 Stm3:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmNot(p_2); :} 
-  | _SYMB_42 Stm3:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmPst(p_2); :}
-  | _SYMB_43 Stm3:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmPres(p_2); :}
-  | _SYMB_40 Stm3:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmFut(p_2); :}
+Stm2 ::= _SYMB_42 Stm3:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmNot(p_2); :} 
+  | _SYMB_43 Stm3:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmPst(p_2); :}
+  | _SYMB_44 Stm3:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmPres(p_2); :}
+  | _SYMB_41 Stm3:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmFut(p_2); :}
   | Stm3:p_1  {: RESULT = p_1; :}
 ;
-Stm3 ::= Term:p_1 _SYMB_19 Term:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmInher(p_1,p_3); :} 
-  | Term:p_1 _SYMB_20 Term:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmSim(p_1,p_3); :}
-  | Term:p_1 _SYMB_21 Term:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmInst(p_1,p_3); :}
-  | Term:p_1 _SYMB_22 Term:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmProp(p_1,p_3); :}
-  | Term:p_1 _SYMB_23 Term:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmInPp(p_1,p_3); :}
-  | Term:p_1 _SYMB_24 ListTerm:p_3 _SYMB_25  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmOp(p_1,p_3); :}
+Stm3 ::= Term:p_1 _SYMB_22 Term:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmInher(p_1,p_3); :} 
+  | Term:p_1 _SYMB_23 Term:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmSim(p_1,p_3); :}
+  | Term:p_1 _SYMB_24 Term:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmInst(p_1,p_3); :}
+  | Term:p_1 _SYMB_25 Term:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmProp(p_1,p_3); :}
+  | Term:p_1 _SYMB_26 Term:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmInPp(p_1,p_3); :}
+  | Term:p_1 _SYMB_9 ListTerm:p_3 _SYMB_10  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmOp(p_1,p_3); :}
   | Term:p_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmTrm(p_1); :}
-  | _SYMB_24 Stm:p_2 _SYMB_25  {: RESULT = p_2; :}
+  | _SYMB_9 Stm:p_2 _SYMB_10  {: RESULT = p_2; :}
 ;
-Term ::= Term:p_1 _SYMB_26 Term1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExInt(p_1,p_3); :} 
-  | Term:p_1 _SYMB_27 Term1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInInt(p_1,p_3); :}
+Term ::= Term:p_1 _SYMB_27 Term1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExInt(p_1,p_3); :} 
+  | Term:p_1 _SYMB_28 Term1:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInInt(p_1,p_3); :}
   | Term1:p_1  {: RESULT = p_1; :}
 ;
-Term1 ::= Term1:p_1 _SYMB_28 Term2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExDif(p_1,p_3); :} 
-  | Term1:p_1 _SYMB_29 Term2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInDif(p_1,p_3); :}
+Term1 ::= Term1:p_1 _SYMB_29 Term2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExDif(p_1,p_3); :} 
+  | Term1:p_1 _SYMB_30 Term2:p_3  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInDif(p_1,p_3); :}
   | Term2:p_1  {: RESULT = p_1; :}
 ;
-Term2 ::= Term:p_1 _SYMB_24 ListTerm:p_3 _SYMB_30 ListTerm:p_5 _SYMB_25  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExImg(p_1,p_3,p_5); :} 
-  | Term:p_1 _SYMB_24 ListTerm:p_3 _SYMB_31 ListTerm:p_5 _SYMB_25  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInImg(p_1,p_3,p_5); :}
+Term2 ::= Term:p_1 _SYMB_9 ListTerm:p_3 _SYMB_31 ListTerm:p_5 _SYMB_10  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExImg(p_1,p_3,p_5); :} 
+  | Term:p_1 _SYMB_9 ListTerm:p_3 _SYMB_32 ListTerm:p_5 _SYMB_10  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInImg(p_1,p_3,p_5); :}
   | Term3:p_1  {: RESULT = p_1; :}
 ;
-Term3 ::= _SYMB_32 ListTerm:p_2 _SYMB_33  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExSet(p_2); :} 
-  | _SYMB_34 ListTerm:p_2 _SYMB_35  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInSet(p_2); :}
-  | _SYMB_24 ListTerm:p_2 _SYMB_25  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmProd(p_2); :}
+Term3 ::= _SYMB_33 ListTerm:p_2 _SYMB_34  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExSet(p_2); :} 
+  | _SYMB_35 ListTerm:p_2 _SYMB_36  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInSet(p_2); :}
+  | _SYMB_9 ListTerm:p_2 _SYMB_10  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmProd(p_2); :}
   | Literal:p_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmLit(p_1); :}
-  | _SYMB_24 Stm:p_2 _SYMB_25  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmStm(p_2); :}
-  | _SYMB_24 Term:p_2 _SYMB_25  {: RESULT = p_2; :}
+  | _SYMB_9 Stm:p_2 _SYMB_10  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmStm(p_2); :}
+  | _SYMB_9 Term:p_2 _SYMB_10  {: RESULT = p_2; :}
 ;
 ListTerm ::=  /* empty */  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm(); :} 
   | Term:p_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm(); RESULT.addLast(p_1); :}
-  | Term:p_1 _SYMB_18 ListTerm:p_3  {: RESULT = p_3; p_3.addFirst(p_1); :}
+  | Term:p_1 _SYMB_21 ListTerm:p_3  {: RESULT = p_3; p_3.addFirst(p_1); :}
 ;
 ListIdent ::=  /* empty */  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent(); :} 
   | _IDENT_:p_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent(); RESULT.addLast(p_1); :}
-  | _IDENT_:p_1 _SYMB_18 ListIdent:p_3  {: RESULT = p_3; p_3.addFirst(p_1); :}
+  | _IDENT_:p_1 _SYMB_21 ListIdent:p_3  {: RESULT = p_3; p_3.addFirst(p_1); :}
 ;
 URIRef ::= URILit:p_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.URIFul(p_1); :} 
   | NSPrefix:p_1 _IDENT_:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.URICur(p_1,p_2); :}
 ;
 Literal ::= _SYMB_6 _IDENT_:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitQVar(p_2); :} 
   | _SYMB_6  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitQVarAn(); :}
-  | _SYMB_36 _IDENT_:p_2 _SYMB_24 ListIdent:p_4 _SYMB_25  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitSVarD(p_2,p_4); :}
-  | _SYMB_36 _IDENT_:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitSVarI(p_2); :}
+  | _SYMB_37 _IDENT_:p_2 _SYMB_9 ListIdent:p_4 _SYMB_10  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitSVarD(p_2,p_4); :}
+  | _SYMB_37 _IDENT_:p_2  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitSVarI(p_2); :}
   | URIRef:p_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitURI(p_1); :}
   | _INTEGER_:p_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitInt(p_1); :}
   | _DOUBLE_:p_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitDbl(p_1); :}
   | _STRING_:p_1  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitString(p_1); :}
-  | _SYMB_44  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitTrue(); :}
-  | _SYMB_39  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitFalse(); :}
+  | _SYMB_45  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitTrue(); :}
+  | _SYMB_40  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitFalse(); :}
 ;
-NSPrefix ::= _IDENT_:p_1 _SYMB_37  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix1(p_1); :} 
-  | _SYMB_37  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix2(); :}
+NSPrefix ::= _IDENT_:p_1 _SYMB_38  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix1(p_1); :} 
+  | _SYMB_38  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix2(); :}
 ;
 TruthValue ::=  /* empty */  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TruthE(); :} 
-  | _SYMB_38 _DOUBLE_:p_2 _SYMB_38  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TruthF(p_2); :}
-  | _SYMB_38 _DOUBLE_:p_2 _SYMB_17 _DOUBLE_:p_4 _SYMB_38  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TruthFC(p_2,p_4); :}
+  | _SYMB_39 _DOUBLE_:p_2 _SYMB_39  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TruthF(p_2); :}
+  | _SYMB_39 _DOUBLE_:p_2 _SYMB_11 _DOUBLE_:p_4 _SYMB_39  {: RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TruthFC(p_2,p_4); :}
 ;
 
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/PrettyPrinter.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/PrettyPrinter.java
index 84f4b4e58a6cd91622b100aacea40a521e4c6fca..bdb7a6528f36f7e28868facac97c6ba8842dec09 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/PrettyPrinter.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/PrettyPrinter.java
@@ -8,53 +8,89 @@ public class PrettyPrinter
   //You may wish to change the parentheses used in precedence.
   private static final String _L_PAREN = new String("(");
   private static final String _R_PAREN = new String(")");
+  
+  private static boolean inAtRule = false;
   //You may wish to change render
   private static void render(String s)
   {
     if (s.equals("{"))
     {
-       buf_.append("\n");
-       indent();
+       //buf_.append("\n");
+       //indent();
        buf_.append(s);
-       _n_ = _n_ + 2;
-       buf_.append("\n");
-       indent();
+       //_n_ = _n_ + 2;
+       //buf_.append("\n");
+       //indent();
     }
     else if (s.equals("(") || s.equals("["))
        buf_.append(s);
     else if (s.equals(")") || s.equals("]"))
     {
-       backup();
+       //backup();
+       trim();
        buf_.append(s);
-       buf_.append(" ");
+       //buf_.append(" ");
     }
     else if (s.equals("}"))
     {
-       _n_ = _n_ - 2;
-       backup();
-       backup();
+       //_n_ = _n_ - 2;
+       //backup();
+       //backup();
        buf_.append(s);
-       buf_.append("\n");
-       indent();
+       //buf_.append("\n");
+       //indent();
     }
     else if (s.equals(","))
     {
-       backup();
+       //backup();
        buf_.append(s);
        buf_.append(" ");
     }
     else if (s.equals(";"))
     {
-       backup();
+       //backup();
        buf_.append(s);
-       buf_.append("\n");
-       indent();
+       buf_.append(" ");
+       //buf_.append("\n");
+       //indent();
+    }
+    else if (s.equals(":")) {
+    	if(!inAtRule) trim();
+    	buf_.append(s);
+    	if(inAtRule) buf_.append(" ");
+    }
+    else if (s.equals(".") && inAtRule) {
+    	trim();
+    	inAtRule = false;
+    	buf_.append(s);
     }
     else if (s.equals("")) return;
+    else if (s.equals("&") || s.equals("&&") || s.equals("%") 
+    		|| s.equals("|") || s.equals("||") || s.equals("-") || s.equals("~") || s.equals("/") 
+    		|| s.equals("\\") || s.equals("-->") || s.equals("<->") || s.equals("}->")
+    		|| s.equals("--[") || s.equals("}-[") || s.equals("==>") || s.equals("<=>")
+    		|| s.equals("=/>") || s.equals("=\\>") || s.equals("=|>") || s.equals("<|>")
+    		|| s.equals("</>")) {
+    	trim();
+    	buf_.append(" ");
+    	buf_.append(s);
+    	buf_.append(" ");
+    }
+    else if (s.equals("not") || s.equals("future") || s.equals("present") || s.equals("past")
+    		 || s.equals("@budget")) {
+    	buf_.append(s);
+    	buf_.append(" ");
+    }
+    else if (s.equals("@base") || s.equals("@import") || s.equals("@prefix") || s.equals("@operator")
+    		|| s.equals("@delay")) {
+    	buf_.append(s);
+    	buf_.append(" ");
+    	inAtRule = true;
+    }
     else
     {
        buf_.append(s);
-       buf_.append(" ");
+       // buf_.append(" ");
     }
   }
 
@@ -120,6 +156,21 @@ public class PrettyPrinter
     buf_.delete(0,buf_.length());
     return temp;
   }
+  public static String print(com.googlecode.opennars.parser.loan.Loan.Absyn.Budget foo)
+  {
+    pp(foo, 0);
+    trim();
+    String temp = buf_.toString();
+    buf_.delete(0,buf_.length());
+    return temp;
+  }
+  public static String show(com.googlecode.opennars.parser.loan.Loan.Absyn.Budget foo)
+  {
+    sh(foo);
+    String temp = buf_.toString();
+    buf_.delete(0,buf_.length());
+    return temp;
+  }
   public static String print(com.googlecode.opennars.parser.loan.Loan.Absyn.Stm foo)
   {
     pp(foo, 0);
@@ -332,6 +383,7 @@ public class PrettyPrinter
        if (_i_ > 0) render(_L_PAREN);
        pp(_sentjudge.stm_, 0);
        pp(_sentjudge.truthvalue_, 0);
+       pp(_sentjudge.budget_, 0);
        render(".");
        if (_i_ > 0) render(_R_PAREN);
     }
@@ -341,6 +393,7 @@ public class PrettyPrinter
        if (_i_ > 0) render(_L_PAREN);
        pp(_sentquest.stm_, 0);
        render("?");
+       pp(_sentquest.budget_, 0);
        if (_i_ > 0) render(_R_PAREN);
     }
     else     if (foo instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal)
@@ -349,11 +402,44 @@ public class PrettyPrinter
        if (_i_ > 0) render(_L_PAREN);
        pp(_sentgoal.stm_, 0);
        pp(_sentgoal.truthvalue_, 0);
+       pp(_sentgoal.budget_, 0);
        render("!");
        if (_i_ > 0) render(_R_PAREN);
     }
   }
 
+  private static void pp(com.googlecode.opennars.parser.loan.Loan.Absyn.Budget foo, int _i_)
+  {
+    if (foo instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE)
+    {
+       com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE _budgete = (com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE) foo;
+       if (_i_ > 0) render(_L_PAREN);
+       if (_i_ > 0) render(_R_PAREN);
+    }
+    else     if (foo instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP)
+    {
+       com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP _budgetp = (com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP) foo;
+       if (_i_ > 0) render(_L_PAREN);
+       render("@budget");
+       render("(");
+       pp(_budgetp.double_, 0);
+       render(")");
+       if (_i_ > 0) render(_R_PAREN);
+    }
+    else     if (foo instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD)
+    {
+       com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD _budgetpd = (com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD) foo;
+       if (_i_ > 0) render(_L_PAREN);
+       render("@budget");
+       render("(");
+       pp(_budgetpd.double_1, 0);
+       render(";");
+       pp(_budgetpd.double_2, 0);
+       render(")");
+       if (_i_ > 0) render(_R_PAREN);
+    }
+  }
+
   private static void pp(com.googlecode.opennars.parser.loan.Loan.Absyn.Stm foo, int _i_)
   {
     if (foo instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpl)
@@ -922,6 +1008,7 @@ public class PrettyPrinter
        render("SentJudge");
        sh(_sentjudge.stm_);
        sh(_sentjudge.truthvalue_);
+       sh(_sentjudge.budget_);
        render(")");
     }
     if (foo instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest)
@@ -930,6 +1017,7 @@ public class PrettyPrinter
        render("(");
        render("SentQuest");
        sh(_sentquest.stm_);
+       sh(_sentquest.budget_);
        render(")");
     }
     if (foo instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal)
@@ -939,6 +1027,33 @@ public class PrettyPrinter
        render("SentGoal");
        sh(_sentgoal.stm_);
        sh(_sentgoal.truthvalue_);
+       sh(_sentgoal.budget_);
+       render(")");
+    }
+  }
+
+  private static void sh(com.googlecode.opennars.parser.loan.Loan.Absyn.Budget foo)
+  {
+    if (foo instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE)
+    {
+       com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE _budgete = (com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE) foo;
+       render("BudgetE");
+    }
+    if (foo instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP)
+    {
+       com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP _budgetp = (com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP) foo;
+       render("(");
+       render("BudgetP");
+       sh(_budgetp.double_);
+       render(")");
+    }
+    if (foo instanceof com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD)
+    {
+       com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD _budgetpd = (com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD) foo;
+       render("(");
+       render("BudgetPD");
+       sh(_budgetpd.double_1);
+       sh(_budgetpd.double_2);
        render(")");
     }
   }
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/VisitSkel.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/VisitSkel.java
index 9b8392c45f598aa9ec588f15db7d42008d23fbf3..4d7f1574a0de3b0794bd8dacd6ca52247be132fd 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/VisitSkel.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/VisitSkel.java
@@ -85,6 +85,7 @@ public class VisitSkel
 
       p.stm_.accept(new StmVisitor<R,A>(), arg);
       p.truthvalue_.accept(new TruthValueVisitor<R,A>(), arg);
+      p.budget_.accept(new BudgetVisitor<R,A>(), arg);
 
       return null;
     }
@@ -93,6 +94,7 @@ public class VisitSkel
       /* Code For SentQuest Goes Here */
 
       p.stm_.accept(new StmVisitor<R,A>(), arg);
+      p.budget_.accept(new BudgetVisitor<R,A>(), arg);
 
       return null;
     }
@@ -102,6 +104,35 @@ public class VisitSkel
 
       p.stm_.accept(new StmVisitor<R,A>(), arg);
       p.truthvalue_.accept(new TruthValueVisitor<R,A>(), arg);
+      p.budget_.accept(new BudgetVisitor<R,A>(), arg);
+
+      return null;
+    }
+
+  }
+  public class BudgetVisitor<R,A> implements Budget.Visitor<R,A>
+  {
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE p, A arg)
+    {
+      /* Code For BudgetE Goes Here */
+
+
+      return null;
+    }
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP p, A arg)
+    {
+      /* Code For BudgetP Goes Here */
+
+      //p.double_;
+
+      return null;
+    }
+    public R visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD p, A arg)
+    {
+      /* Code For BudgetPD Goes Here */
+
+      //p.double_1;
+      //p.double_2;
 
       return null;
     }
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Yylex b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Yylex
index 5149a5b43f792b4f4bb0a4b642e8efe1768e23fd..b9cbfdba97a5ec78e411f313cb4912413e915783 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Yylex
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Yylex
@@ -32,46 +32,47 @@ IDENT = ({LETTER}|{DIGIT}|['_])
 <YYINITIAL>@operator { return new Symbol(sym._SYMB_5); }
 <YYINITIAL>\? { return new Symbol(sym._SYMB_6); }
 <YYINITIAL>! { return new Symbol(sym._SYMB_7); }
-<YYINITIAL>==> { return new Symbol(sym._SYMB_8); }
-<YYINITIAL><=> { return new Symbol(sym._SYMB_9); }
-<YYINITIAL>=/> { return new Symbol(sym._SYMB_10); }
-<YYINITIAL>=\\> { return new Symbol(sym._SYMB_11); }
-<YYINITIAL>=\|> { return new Symbol(sym._SYMB_12); }
-<YYINITIAL></> { return new Symbol(sym._SYMB_13); }
-<YYINITIAL><\|> { return new Symbol(sym._SYMB_14); }
-<YYINITIAL>&& { return new Symbol(sym._SYMB_15); }
-<YYINITIAL>\|\| { return new Symbol(sym._SYMB_16); }
-<YYINITIAL>; { return new Symbol(sym._SYMB_17); }
-<YYINITIAL>, { return new Symbol(sym._SYMB_18); }
-<YYINITIAL>--> { return new Symbol(sym._SYMB_19); }
-<YYINITIAL><-> { return new Symbol(sym._SYMB_20); }
-<YYINITIAL>\}-> { return new Symbol(sym._SYMB_21); }
-<YYINITIAL>--\[ { return new Symbol(sym._SYMB_22); }
-<YYINITIAL>\}-\[ { return new Symbol(sym._SYMB_23); }
-<YYINITIAL>\( { return new Symbol(sym._SYMB_24); }
-<YYINITIAL>\) { return new Symbol(sym._SYMB_25); }
-<YYINITIAL>& { return new Symbol(sym._SYMB_26); }
-<YYINITIAL>\| { return new Symbol(sym._SYMB_27); }
-<YYINITIAL>- { return new Symbol(sym._SYMB_28); }
-<YYINITIAL>~ { return new Symbol(sym._SYMB_29); }
-<YYINITIAL>/ { return new Symbol(sym._SYMB_30); }
-<YYINITIAL>\\ { return new Symbol(sym._SYMB_31); }
-<YYINITIAL>\{ { return new Symbol(sym._SYMB_32); }
-<YYINITIAL>\} { return new Symbol(sym._SYMB_33); }
-<YYINITIAL>\[ { return new Symbol(sym._SYMB_34); }
-<YYINITIAL>\] { return new Symbol(sym._SYMB_35); }
-<YYINITIAL># { return new Symbol(sym._SYMB_36); }
-<YYINITIAL>: { return new Symbol(sym._SYMB_37); }
-<YYINITIAL>% { return new Symbol(sym._SYMB_38); }
-<YYINITIAL>false { return new Symbol(sym._SYMB_39); }
-<YYINITIAL>future { return new Symbol(sym._SYMB_40); }
-<YYINITIAL>not { return new Symbol(sym._SYMB_41); }
-<YYINITIAL>past { return new Symbol(sym._SYMB_42); }
-<YYINITIAL>present { return new Symbol(sym._SYMB_43); }
-<YYINITIAL>true { return new Symbol(sym._SYMB_44); }
-<YYINITIAL>"//"[^\n]*\n { /* BNFC single-line comment */ }
-<YYINITIAL>"/*" { yybegin(COMMENT); }
-<COMMENT>"*/" { yybegin(YYINITIAL); }
+<YYINITIAL>@budget { return new Symbol(sym._SYMB_8); }
+<YYINITIAL>\( { return new Symbol(sym._SYMB_9); }
+<YYINITIAL>\) { return new Symbol(sym._SYMB_10); }
+<YYINITIAL>; { return new Symbol(sym._SYMB_11); }
+<YYINITIAL>==> { return new Symbol(sym._SYMB_12); }
+<YYINITIAL><=> { return new Symbol(sym._SYMB_13); }
+<YYINITIAL>=/> { return new Symbol(sym._SYMB_14); }
+<YYINITIAL>=\\> { return new Symbol(sym._SYMB_15); }
+<YYINITIAL>=\|> { return new Symbol(sym._SYMB_16); }
+<YYINITIAL></> { return new Symbol(sym._SYMB_17); }
+<YYINITIAL><\|> { return new Symbol(sym._SYMB_18); }
+<YYINITIAL>&& { return new Symbol(sym._SYMB_19); }
+<YYINITIAL>\|\| { return new Symbol(sym._SYMB_20); }
+<YYINITIAL>, { return new Symbol(sym._SYMB_21); }
+<YYINITIAL>--> { return new Symbol(sym._SYMB_22); }
+<YYINITIAL><-> { return new Symbol(sym._SYMB_23); }
+<YYINITIAL>\}-> { return new Symbol(sym._SYMB_24); }
+<YYINITIAL>--\[ { return new Symbol(sym._SYMB_25); }
+<YYINITIAL>\}-\[ { return new Symbol(sym._SYMB_26); }
+<YYINITIAL>& { return new Symbol(sym._SYMB_27); }
+<YYINITIAL>\| { return new Symbol(sym._SYMB_28); }
+<YYINITIAL>- { return new Symbol(sym._SYMB_29); }
+<YYINITIAL>~ { return new Symbol(sym._SYMB_30); }
+<YYINITIAL>/ { return new Symbol(sym._SYMB_31); }
+<YYINITIAL>\\ { return new Symbol(sym._SYMB_32); }
+<YYINITIAL>\{ { return new Symbol(sym._SYMB_33); }
+<YYINITIAL>\} { return new Symbol(sym._SYMB_34); }
+<YYINITIAL>\[ { return new Symbol(sym._SYMB_35); }
+<YYINITIAL>\] { return new Symbol(sym._SYMB_36); }
+<YYINITIAL># { return new Symbol(sym._SYMB_37); }
+<YYINITIAL>: { return new Symbol(sym._SYMB_38); }
+<YYINITIAL>% { return new Symbol(sym._SYMB_39); }
+<YYINITIAL>false { return new Symbol(sym._SYMB_40); }
+<YYINITIAL>future { return new Symbol(sym._SYMB_41); }
+<YYINITIAL>not { return new Symbol(sym._SYMB_42); }
+<YYINITIAL>past { return new Symbol(sym._SYMB_43); }
+<YYINITIAL>present { return new Symbol(sym._SYMB_44); }
+<YYINITIAL>true { return new Symbol(sym._SYMB_45); }
+<YYINITIAL>"---"[^\n]*\n { /* BNFC single-line comment */ }
+<YYINITIAL>"{---" { yybegin(COMMENT); }
+<COMMENT>"---}" { yybegin(YYINITIAL); }
 <COMMENT>. { }
 <COMMENT>[\n] { }
 
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Yylex.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Yylex.java
index f875a841a62d2fa84503eae040d5e46586877ebf..610a3ff67ae8a57803c628c659c81a4649f365d7 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Yylex.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/Yylex.java
@@ -64,12 +64,12 @@ public class Yylex implements java_cup.runtime.Scanner {
 	private final int CHAR = 2;
 	private final int yy_state_dtrans[] = {
 		0,
-		111,
-		112,
-		112,
-		112,
-		113,
-		114
+		118,
+		121,
+		121,
+		121,
+		122,
+		123
 	};
 	private void yybegin (int state) {
 		yy_lexical_state = state;
@@ -286,21 +286,21 @@ public class Yylex implements java_cup.runtime.Scanner {
 		/* 63 */ YY_NO_ANCHOR,
 		/* 64 */ YY_NO_ANCHOR,
 		/* 65 */ YY_NO_ANCHOR,
-		/* 66 */ YY_NOT_ACCEPT,
-		/* 67 */ YY_NO_ANCHOR,
+		/* 66 */ YY_NO_ANCHOR,
+		/* 67 */ YY_NOT_ACCEPT,
 		/* 68 */ YY_NO_ANCHOR,
 		/* 69 */ YY_NO_ANCHOR,
-		/* 70 */ YY_NOT_ACCEPT,
-		/* 71 */ YY_NO_ANCHOR,
-		/* 72 */ YY_NOT_ACCEPT,
-		/* 73 */ YY_NO_ANCHOR,
-		/* 74 */ YY_NOT_ACCEPT,
-		/* 75 */ YY_NO_ANCHOR,
-		/* 76 */ YY_NOT_ACCEPT,
-		/* 77 */ YY_NO_ANCHOR,
-		/* 78 */ YY_NOT_ACCEPT,
-		/* 79 */ YY_NO_ANCHOR,
-		/* 80 */ YY_NOT_ACCEPT,
+		/* 70 */ YY_NO_ANCHOR,
+		/* 71 */ YY_NOT_ACCEPT,
+		/* 72 */ YY_NO_ANCHOR,
+		/* 73 */ YY_NOT_ACCEPT,
+		/* 74 */ YY_NO_ANCHOR,
+		/* 75 */ YY_NOT_ACCEPT,
+		/* 76 */ YY_NO_ANCHOR,
+		/* 77 */ YY_NOT_ACCEPT,
+		/* 78 */ YY_NO_ANCHOR,
+		/* 79 */ YY_NOT_ACCEPT,
+		/* 80 */ YY_NO_ANCHOR,
 		/* 81 */ YY_NOT_ACCEPT,
 		/* 82 */ YY_NOT_ACCEPT,
 		/* 83 */ YY_NOT_ACCEPT,
@@ -335,67 +335,79 @@ public class Yylex implements java_cup.runtime.Scanner {
 		/* 112 */ YY_NOT_ACCEPT,
 		/* 113 */ YY_NOT_ACCEPT,
 		/* 114 */ YY_NOT_ACCEPT,
-		/* 115 */ YY_NO_ANCHOR,
+		/* 115 */ YY_NOT_ACCEPT,
 		/* 116 */ YY_NOT_ACCEPT,
 		/* 117 */ YY_NOT_ACCEPT,
 		/* 118 */ YY_NOT_ACCEPT,
 		/* 119 */ YY_NOT_ACCEPT,
-		/* 120 */ YY_NO_ANCHOR,
+		/* 120 */ YY_NOT_ACCEPT,
 		/* 121 */ YY_NOT_ACCEPT,
-		/* 122 */ YY_NO_ANCHOR,
-		/* 123 */ YY_NO_ANCHOR,
+		/* 122 */ YY_NOT_ACCEPT,
+		/* 123 */ YY_NOT_ACCEPT,
 		/* 124 */ YY_NO_ANCHOR,
-		/* 125 */ YY_NO_ANCHOR,
-		/* 126 */ YY_NO_ANCHOR,
-		/* 127 */ YY_NO_ANCHOR,
-		/* 128 */ YY_NO_ANCHOR,
+		/* 125 */ YY_NOT_ACCEPT,
+		/* 126 */ YY_NOT_ACCEPT,
+		/* 127 */ YY_NOT_ACCEPT,
+		/* 128 */ YY_NOT_ACCEPT,
 		/* 129 */ YY_NO_ANCHOR,
-		/* 130 */ YY_NO_ANCHOR,
+		/* 130 */ YY_NOT_ACCEPT,
 		/* 131 */ YY_NO_ANCHOR,
 		/* 132 */ YY_NO_ANCHOR,
 		/* 133 */ YY_NO_ANCHOR,
-		/* 134 */ YY_NO_ANCHOR
+		/* 134 */ YY_NO_ANCHOR,
+		/* 135 */ YY_NO_ANCHOR,
+		/* 136 */ YY_NO_ANCHOR,
+		/* 137 */ YY_NO_ANCHOR,
+		/* 138 */ YY_NO_ANCHOR,
+		/* 139 */ YY_NO_ANCHOR,
+		/* 140 */ YY_NO_ANCHOR,
+		/* 141 */ YY_NO_ANCHOR,
+		/* 142 */ YY_NO_ANCHOR,
+		/* 143 */ YY_NO_ANCHOR
 	};
 	private int yy_cmap[] = unpackFromString(1,65538,
-"46:9,51,43,46,51,42,46:18,51,19,47,37,46,39,26,50,32,33,44,46,28,29,6,23,48" +
-":10,38,27,22,20,21,18,1,49:26,31,24,36,46,50,45,3,2,49,15,5,9,49:2,10,49:2," +
-"16,12,41,13,7,49,8,4,14,40,49:2,11,17,49,35,25,30,34,46:65,49:23,46,49:31,4" +
+"46:9,51,44,46,51,43,46:18,51,19,47,39,46,41,31,50,22,23,46:2,32,33,6,28,48:" +
+"10,40,24,27,25,26,18,1,49:26,35,29,38,46,50,45,3,2,49,15,5,9,21,49,10,49:2," +
+"16,12,42,13,7,49,8,4,14,20,49:2,11,17,49,37,30,34,36,46:65,49:23,46,49:31,4" +
 "6,49:8,46:65280,0:2")[0];
 
-	private int yy_rmap[] = unpackFromString(1,135,
-"0,1,2,1:3,3,1,4,5,1:2,6,7,1:11,8,1:17,2,9,2:2,1,2,1,2,1:2,2,1:12,10,11,12,1" +
-"3,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,3" +
-"8,39,40,41,42,43,44,45,46,47,48,12,49,50,51,52,53,54,55,56,57,58,59,60,61,6" +
-"2,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77")[0];
+	private int yy_rmap[] = unpackFromString(1,144,
+"0,1,2,1:8,3,4,1,5,6,1:2,7,1:6,8,1:15,2,9,2:2,1:3,2,1,2,1:3,2,1:12,10,11,12," +
+"13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37," +
+"38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,12,54,55,56,57,58,59,60,61," +
+"62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85")[0];
 
-	private int yy_nxt[][] = unpackFromString(78,52,
-"1,66,2:4,3,126,2,131,2:4,127,2:3,4,5,70,-1,72,6,7,8,9,10,11,12,13,14,15,16," +
-"17,18,19,20,21,22,2,115,23:2,-1:3,24,25,2,-1,23,-1:54,2:4,-1,2:11,-1:22,2:2" +
-",-1:6,2:3,-1:24,91,-1:20,27,-1:32,28,-1:52,29,-1:54,92,-1:51,93,-1:28,94,-1" +
-":41,25,-1:8,102,-1:42,44,-1:5,74,-1:4,76,-1:2,78,-1:2,80,-1,81,-1:38,2:4,-1" +
-",2:7,43,2:3,-1:22,2:2,-1:6,2:3,-1:49,68,-1:26,57,-1:48,82,-1:2,83,84,85,-1:" +
-"28,2:4,-1,2:7,45,2:3,-1:22,2:2,-1:6,2:3,-1:2,86:19,87,26,-1,88,-1,89,86:3,9" +
-"0,-1,86:4,-1,86:9,-1,86,-1,86:4,-1:2,2:3,46,-1,2:11,-1:22,2:2,-1:6,2:3,-1:4" +
-",95,-1:50,2:3,48,-1,2:11,-1:22,2:2,-1:6,2:3,-1:9,117,-1:45,2:3,50,-1,2:11,-" +
-"1:22,2:2,-1:6,2:3,-1:13,116,-1:41,2:4,-1,2:7,53,2:3,-1:22,2:2,-1:6,2:3,-1:8" +
-",121,-1:49,96,-1:67,30,-1:51,31,-1:51,32,-1:51,33,-1:31,86:20,26,-1,86,-1:2" +
-",86:4,-1,86:4,-1,86:9,-1,86,-1,86:4,-1,86:20,34,-1,86,-1:2,86:4,-1,86:4,-1," +
-"86:9,-1,86,-1,86:4,-1,86:20,35,-1,86,-1:2,86:4,-1,86:4,-1,86:9,-1,86,-1,86:" +
-"4,-1:21,36,-1:31,86:20,37,-1,86,-1:2,86:4,-1,86:4,-1,86:9,-1,86,-1,86:4,-1," +
-"91:42,38,91:8,-1:21,39,-1:9,40,-1:41,41,-1:9,42,-1:68,44,-1:7,97,-1:63,101," +
-"-1:40,47,-1:55,103,-1:55,118,-1:46,119,-1:46,104,-1:77,105,-1:18,68,-1:13,1" +
-"06,-1:58,49,-1:45,51,-1:54,52,-1:51,109,-1:50,110,-1:46,54,-1:43,1,55:41,-1" +
-",56,69,55:7,1,-1:51,1,58:23,59,58:17,-1:2,58:3,60,58:4,1,61:13,62,61:9,63,6" +
-"1:16,64,-1:2,61:3,65,61:4,-1:2,2:4,-1,2:6,67,2:4,-1:22,2:2,-1:6,2:3,-1:8,99" +
-",-1:49,98,-1:54,107,-1:46,108,-1:50,2:2,71,2,-1,2:11,-1:22,2:2,-1:6,2:3,-1:" +
-"6,100,-1:48,2:4,-1,2:11,-1:22,73,2,-1:6,2:3,-1:3,2:2,75,2,-1,2:11,-1:22,2:2" +
-",-1:6,2:3,-1:3,2:4,-1,2,77,2:9,-1:22,2:2,-1:6,2:3,-1:3,2:4,-1,2:11,-1:22,2," +
-"79,-1:6,2:3,-1:3,2,120,2:2,-1,2,134,2:9,-1:22,2:2,-1:6,2:3,-1:3,2:4,-1,2,12" +
-"2,2:9,-1:22,2:2,-1:6,2:3,-1:3,2:4,-1,2:9,123,2,-1:22,2:2,-1:6,2:3,-1:3,2:4," +
-"-1,2:11,-1:22,124,2,-1:6,2:3,-1:3,2:3,125,-1,2:11,-1:22,2:2,-1:6,2:3,-1:3,2" +
-",128,2:2,-1,2:11,-1:22,132,2,-1:6,2:3,-1:3,2:4,-1,2:7,129,2:3,-1:22,2:2,-1:" +
-"6,2:3,-1:3,2:2,130,2,-1,2:11,-1:22,2:2,-1:6,2:3,-1:3,2:3,133,-1,2:11,-1:22," +
-"2:2,-1:6,2:3,-1");
+	private int yy_nxt[][] = unpackFromString(86,52,
+"1,67,2:4,3,135,2,140,2:4,136,2:3,4,5,2:2,6,7,8,71,-1,73,9,10,11,12,13,14,15" +
+",16,17,18,19,20,21,22,124,23:2,-1:2,24,25,2,-1,23,-1:54,2:4,-1,2:11,-1:2,2:" +
+"2,-1:20,2,-1:5,2:3,-1:31,27,-1:52,28,-1:53,92,-1:51,93,-1:51,94,-1:24,95,-1" +
+":41,25,-1:8,107,-1:42,42,-1:5,75,-1:4,77,-1:2,79,-1:2,81,-1,82,-1:38,2:4,-1" +
+",2:7,41,2:3,-1:2,2:2,-1:20,2,-1:5,2:3,-1:49,69,-1:36,119,-1:43,83,-1:2,84,8" +
+"5,86,-1:23,2:4,-1,2:7,43,2:3,-1:2,2:2,-1:20,2,-1:5,2:3,-1:2,87:24,88,26,-1," +
+"89,-1,90,87:2,91,-1,87:2,-1,87:7,-1,87,-1,87:4,-1:2,2:3,44,-1,2:11,-1:2,2:2" +
+",-1:20,2,-1:5,2:3,-1:4,96,-1:16,97,-1:33,2:3,48,-1,2:11,-1:2,2:2,-1:20,2,-1" +
+":5,2:3,-1:9,126,-1:45,2:3,50,-1,2:11,-1:2,2:2,-1:20,2,-1:5,2:3,-1:13,125,-1" +
+":41,2:4,-1,2:7,54,2:3,-1:2,2:2,-1:20,2,-1:5,2:3,-1:8,130,-1:49,98,-1:72,29," +
+"-1:51,30,-1:51,31,-1:51,32,-1:26,87:25,26,-1,87,-1:2,87:3,-1,87:2,-1,87:7,-" +
+"1,87,-1,87:4,-1,87:25,33,-1,87,-1:2,87:3,-1,87:2,-1,87:7,-1,87,-1,87:4,-1,8" +
+"7:25,34,-1,87,-1:2,87:3,-1,87:2,-1,87:7,-1,87,-1,87:4,-1:26,35,-1:26,87:25," +
+"36,-1,87,-1:2,87:3,-1,87:2,-1,87:7,-1,87,-1,87:4,-1:26,37,-1:6,99,-1,38,-1:" +
+"42,39,-1:8,40,-1:49,100,-1:66,42,-1:7,101,-1:62,102,-1:52,106,-1:36,99:43,4" +
+"5,99:7,-1:33,46,-1:23,47,-1:67,108,-1:39,109,-1:55,127,-1:46,128,-1:46,110," +
+"-1:81,111,-1:14,69,-1:8,112,-1:56,113,-1:58,49,-1:48,51,-1:48,52,-1:54,53,-" +
+"1:51,116,-1:50,117,-1:46,55,-1:43,1,56:32,70,56:9,-1,57,56:7,-1:33,120,-1:5" +
+"2,58,-1:17,1,-1:51,1,59:28,60,59:13,-1:2,59:2,61,59:4,1,62:13,63,62:14,64,6" +
+"2:12,65,-1:2,62:2,66,62:4,-1:2,2:4,-1,2:6,68,2:4,-1:2,2:2,-1:20,2,-1:5,2:3," +
+"-1:8,104,-1:49,103,-1:54,114,-1:46,115,-1:50,2:2,72,2,-1,2:11,-1:2,2:2,-1:2" +
+"0,2,-1:5,2:3,-1:6,105,-1:48,2:4,-1,2:11,-1:2,74,2,-1:20,2,-1:5,2:3,-1:3,2:2" +
+",76,2,-1,2:11,-1:2,2:2,-1:20,2,-1:5,2:3,-1:3,2:4,-1,2,78,2:9,-1:2,2:2,-1:20" +
+",2,-1:5,2:3,-1:3,2:4,-1,2:11,-1:2,2:2,-1:20,80,-1:5,2:3,-1:3,2,129,2:2,-1,2" +
+",143,2:9,-1:2,2:2,-1:20,2,-1:5,2:3,-1:3,2:4,-1,2,131,2:9,-1:2,2:2,-1:20,2,-" +
+"1:5,2:3,-1:3,2:4,-1,2:9,132,2,-1:2,2:2,-1:20,2,-1:5,2:3,-1:3,2:4,-1,2:11,-1" +
+":2,133,2,-1:20,2,-1:5,2:3,-1:3,2:3,134,-1,2:11,-1:2,2:2,-1:20,2,-1:5,2:3,-1" +
+":3,2,137,2:2,-1,2:11,-1:2,141,2,-1:20,2,-1:5,2:3,-1:3,2:4,-1,2:7,138,2:3,-1" +
+":2,2:2,-1:20,2,-1:5,2:3,-1:3,2:2,139,2,-1,2:11,-1:2,2:2,-1:20,2,-1:5,2:3,-1" +
+":3,2:3,142,-1,2:11,-1:2,2:2,-1:20,2,-1:5,2:3,-1");
 
 	public java_cup.runtime.Symbol next_token ()
 		throws java.io.IOException {
@@ -462,71 +474,71 @@ public class Yylex implements java_cup.runtime.Scanner {
 					case -6:
 						break;
 					case 6:
-						{ return new Symbol(sym._SYMB_30); }
+						{ return new Symbol(sym._SYMB_9); }
 					case -7:
 						break;
 					case 7:
-						{ return new Symbol(sym._SYMB_31); }
+						{ return new Symbol(sym._SYMB_10); }
 					case -8:
 						break;
 					case 8:
-						{ return new Symbol(sym._SYMB_27); }
+						{ return new Symbol(sym._SYMB_11); }
 					case -9:
 						break;
 					case 9:
-						{ return new Symbol(sym._SYMB_26); }
+						{ return new Symbol(sym._SYMB_31); }
 					case -10:
 						break;
 					case 10:
-						{ return new Symbol(sym._SYMB_17); }
+						{ return new Symbol(sym._SYMB_32); }
 					case -11:
 						break;
 					case 11:
-						{ return new Symbol(sym._SYMB_18); }
+						{ return new Symbol(sym._SYMB_28); }
 					case -12:
 						break;
 					case 12:
-						{ return new Symbol(sym._SYMB_28); }
+						{ return new Symbol(sym._SYMB_27); }
 					case -13:
 						break;
 					case 13:
-						{ return new Symbol(sym._SYMB_33); }
+						{ return new Symbol(sym._SYMB_21); }
 					case -14:
 						break;
 					case 14:
-						{ return new Symbol(sym._SYMB_34); }
+						{ return new Symbol(sym._SYMB_29); }
 					case -15:
 						break;
 					case 15:
-						{ return new Symbol(sym._SYMB_24); }
+						{ return new Symbol(sym._SYMB_34); }
 					case -16:
 						break;
 					case 16:
-						{ return new Symbol(sym._SYMB_25); }
+						{ return new Symbol(sym._SYMB_35); }
 					case -17:
 						break;
 					case 17:
-						{ return new Symbol(sym._SYMB_29); }
+						{ return new Symbol(sym._SYMB_30); }
 					case -18:
 						break;
 					case 18:
-						{ return new Symbol(sym._SYMB_32); }
+						{ return new Symbol(sym._SYMB_33); }
 					case -19:
 						break;
 					case 19:
-						{ return new Symbol(sym._SYMB_35); }
+						{ return new Symbol(sym._SYMB_36); }
 					case -20:
 						break;
 					case 20:
-						{ return new Symbol(sym._SYMB_36); }
+						{ return new Symbol(sym._SYMB_37); }
 					case -21:
 						break;
 					case 21:
-						{ return new Symbol(sym._SYMB_37); }
+						{ return new Symbol(sym._SYMB_38); }
 					case -22:
 						break;
 					case 22:
-						{ return new Symbol(sym._SYMB_38); }
+						{ return new Symbol(sym._SYMB_39); }
 					case -23:
 						break;
 					case 23:
@@ -546,83 +558,83 @@ public class Yylex implements java_cup.runtime.Scanner {
 					case -27:
 						break;
 					case 27:
-						{ yybegin(COMMENT); }
+						{ return new Symbol(sym._SYMB_20); }
 					case -28:
 						break;
 					case 28:
-						{ return new Symbol(sym._SYMB_16); }
+						{ return new Symbol(sym._SYMB_19); }
 					case -29:
 						break;
 					case 29:
-						{ return new Symbol(sym._SYMB_15); }
+						{ return new Symbol(sym._SYMB_12); }
 					case -30:
 						break;
 					case 30:
-						{ return new Symbol(sym._SYMB_8); }
+						{ return new Symbol(sym._SYMB_14); }
 					case -31:
 						break;
 					case 31:
-						{ return new Symbol(sym._SYMB_10); }
+						{ return new Symbol(sym._SYMB_15); }
 					case -32:
 						break;
 					case 32:
-						{ return new Symbol(sym._SYMB_11); }
+						{ return new Symbol(sym._SYMB_16); }
 					case -33:
 						break;
 					case 33:
-						{ return new Symbol(sym._SYMB_12); }
+						{ return new Symbol(sym._SYMB_13); }
 					case -34:
 						break;
 					case 34:
-						{ return new Symbol(sym._SYMB_9); }
+						{ return new Symbol(sym._SYMB_17); }
 					case -35:
 						break;
 					case 35:
-						{ return new Symbol(sym._SYMB_13); }
+						{ return new Symbol(sym._SYMB_18); }
 					case -36:
 						break;
 					case 36:
-						{ return new Symbol(sym._SYMB_14); }
+						{ return new Symbol(sym._SYMB_23); }
 					case -37:
 						break;
 					case 37:
-						{ return new Symbol(sym._SYMB_20); }
+						{ return new Symbol(sym._SYMB_22); }
 					case -38:
 						break;
 					case 38:
-						{ /* BNFC single-line comment */ }
+						{ return new Symbol(sym._SYMB_25); }
 					case -39:
 						break;
 					case 39:
-						{ return new Symbol(sym._SYMB_19); }
+						{ return new Symbol(sym._SYMB_24); }
 					case -40:
 						break;
 					case 40:
-						{ return new Symbol(sym._SYMB_22); }
+						{ return new Symbol(sym._SYMB_26); }
 					case -41:
 						break;
 					case 41:
-						{ return new Symbol(sym._SYMB_21); }
+						{ return new Symbol(sym._SYMB_42); }
 					case -42:
 						break;
 					case 42:
-						{ return new Symbol(sym._SYMB_23); }
+						{ return new Symbol(sym._DOUBLE_, new Double(yytext())); }
 					case -43:
 						break;
 					case 43:
-						{ return new Symbol(sym._SYMB_41); }
+						{ return new Symbol(sym._SYMB_43); }
 					case -44:
 						break;
 					case 44:
-						{ return new Symbol(sym._DOUBLE_, new Double(yytext())); }
+						{ return new Symbol(sym._SYMB_45); }
 					case -45:
 						break;
 					case 45:
-						{ return new Symbol(sym._SYMB_42); }
+						{ /* BNFC single-line comment */ }
 					case -46:
 						break;
 					case 46:
-						{ return new Symbol(sym._SYMB_44); }
+						{ yybegin(COMMENT); }
 					case -47:
 						break;
 					case 47:
@@ -630,7 +642,7 @@ public class Yylex implements java_cup.runtime.Scanner {
 					case -48:
 						break;
 					case 48:
-						{ return new Symbol(sym._SYMB_39); }
+						{ return new Symbol(sym._SYMB_40); }
 					case -49:
 						break;
 					case 49:
@@ -638,27 +650,27 @@ public class Yylex implements java_cup.runtime.Scanner {
 					case -50:
 						break;
 					case 50:
-						{ return new Symbol(sym._SYMB_40); }
+						{ return new Symbol(sym._SYMB_41); }
 					case -51:
 						break;
 					case 51:
-						{ return new Symbol(sym._SYMB_2); }
+						{ return new Symbol(sym._SYMB_8); }
 					case -52:
 						break;
 					case 52:
-						{ return new Symbol(sym._SYMB_3); }
+						{ return new Symbol(sym._SYMB_2); }
 					case -53:
 						break;
 					case 53:
-						{ return new Symbol(sym._SYMB_43); }
+						{ return new Symbol(sym._SYMB_3); }
 					case -54:
 						break;
 					case 54:
-						{ return new Symbol(sym._SYMB_5); }
+						{ return new Symbol(sym._SYMB_44); }
 					case -55:
 						break;
 					case 55:
-						{ }
+						{ return new Symbol(sym._SYMB_5); }
 					case -56:
 						break;
 					case 56:
@@ -666,133 +678,137 @@ public class Yylex implements java_cup.runtime.Scanner {
 					case -57:
 						break;
 					case 57:
-						{ yybegin(YYINITIAL); }
+						{ }
 					case -58:
 						break;
 					case 58:
-						{ pstring += yytext(); }
+						{ yybegin(YYINITIAL); }
 					case -59:
 						break;
 					case 59:
-						{ yybegin(ESCAPED); }
+						{ pstring += yytext(); }
 					case -60:
 						break;
 					case 60:
-						{ String foo = pstring; pstring = new String(); yybegin(YYINITIAL); return new Symbol(sym._STRING_, foo.intern()); }
+						{ yybegin(ESCAPED); }
 					case -61:
 						break;
 					case 61:
-						{ pstring += yytext(); yybegin(STRING); }
+						{ String foo = pstring; pstring = new String(); yybegin(YYINITIAL); return new Symbol(sym._STRING_, foo.intern()); }
 					case -62:
 						break;
 					case 62:
-						{ pstring += "\t"; yybegin(STRING); }
+						{ pstring += yytext(); yybegin(STRING); }
 					case -63:
 						break;
 					case 63:
-						{ pstring += "\\"; yybegin(STRING); }
+						{ pstring += "\t"; yybegin(STRING); }
 					case -64:
 						break;
 					case 64:
-						{ pstring +=  "\n"; yybegin(STRING); }
+						{ pstring += "\\"; yybegin(STRING); }
 					case -65:
 						break;
 					case 65:
-						{ pstring += "\""; yybegin(STRING); }
+						{ pstring +=  "\n"; yybegin(STRING); }
 					case -66:
 						break;
-					case 67:
-						{ return new Symbol(sym._IDENT_, yytext().intern()); }
+					case 66:
+						{ pstring += "\""; yybegin(STRING); }
 					case -67:
 						break;
 					case 68:
-						{ return new Symbol(sym._DOUBLE_, new Double(yytext())); }
+						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -68:
 						break;
 					case 69:
-						{ }
+						{ return new Symbol(sym._DOUBLE_, new Double(yytext())); }
 					case -69:
 						break;
-					case 71:
-						{ return new Symbol(sym._IDENT_, yytext().intern()); }
+					case 70:
+						{ }
 					case -70:
 						break;
-					case 73:
+					case 72:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -71:
 						break;
-					case 75:
+					case 74:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -72:
 						break;
-					case 77:
+					case 76:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -73:
 						break;
-					case 79:
+					case 78:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -74:
 						break;
-					case 115:
+					case 80:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -75:
 						break;
-					case 120:
+					case 124:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -76:
 						break;
-					case 122:
+					case 129:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -77:
 						break;
-					case 123:
+					case 131:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -78:
 						break;
-					case 124:
+					case 132:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -79:
 						break;
-					case 125:
+					case 133:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -80:
 						break;
-					case 126:
+					case 134:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -81:
 						break;
-					case 127:
+					case 135:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -82:
 						break;
-					case 128:
+					case 136:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -83:
 						break;
-					case 129:
+					case 137:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -84:
 						break;
-					case 130:
+					case 138:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -85:
 						break;
-					case 131:
+					case 139:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -86:
 						break;
-					case 132:
+					case 140:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -87:
 						break;
-					case 133:
+					case 141:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -88:
 						break;
-					case 134:
+					case 142:
 						{ return new Symbol(sym._IDENT_, yytext().intern()); }
 					case -89:
 						break;
+					case 143:
+						{ return new Symbol(sym._IDENT_, yytext().intern()); }
+					case -90:
+						break;
 					default:
 						yy_error(YY_E_INTERNAL,false);
 					case -1:
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/parser.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/parser.java
index 30ab0b9c062144132ced0d3b741367677d9639c1..688c7d8ddad5b7407da98aa8381dc1c9c78706e7 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/parser.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/parser.java
@@ -1,14 +1,14 @@
 
 //----------------------------------------------------
 // The following code was generated by CUP v0.10k
-// Fri Apr 04 18:55:20 BST 2008
+// Fri Apr 04 22:02:41 BST 2008
 //----------------------------------------------------
 
 package com.googlecode.opennars.parser.loan.Loan;
 
 
 /** CUP v0.10k generated parser.
-  * @version Fri Apr 04 18:55:20 BST 2008
+  * @version Fri Apr 04 22:02:41 BST 2008
   */
 public class parser extends java_cup.runtime.lr_parser {
 
@@ -21,30 +21,31 @@ public class parser extends java_cup.runtime.lr_parser {
   /** Production table. */
   protected static final short _production_table[][] = 
     unpackFromStrings(new String[] {
-    "\000\115\000\002\002\004\000\002\003\004\000\002\003" +
+    "\000\120\000\002\002\004\000\002\003\004\000\002\003" +
     "\003\000\002\004\005\000\002\005\002\000\002\005\004" +
     "\000\002\006\006\000\002\006\005\000\002\006\005\000" +
-    "\002\006\005\000\002\006\005\000\002\006\004\000\002" +
-    "\006\005\000\002\007\005\000\002\007\005\000\002\007" +
-    "\005\000\002\007\005\000\002\007\005\000\002\007\005" +
-    "\000\002\007\005\000\002\007\003\000\002\010\005\000" +
-    "\002\010\005\000\002\010\005\000\002\010\005\000\002" +
-    "\010\003\000\002\011\004\000\002\011\004\000\002\011" +
-    "\004\000\002\011\004\000\002\011\003\000\002\012\005" +
-    "\000\002\012\005\000\002\012\005\000\002\012\005\000" +
-    "\002\012\005\000\002\012\006\000\002\012\003\000\002" +
-    "\012\005\000\002\013\005\000\002\013\005\000\002\013" +
-    "\003\000\002\014\005\000\002\014\005\000\002\014\003" +
-    "\000\002\015\010\000\002\015\010\000\002\015\003\000" +
-    "\002\016\005\000\002\016\005\000\002\016\005\000\002" +
-    "\016\003\000\002\016\005\000\002\016\005\000\002\017" +
-    "\002\000\002\017\003\000\002\017\005\000\002\020\002" +
-    "\000\002\020\003\000\002\020\005\000\002\021\003\000" +
-    "\002\021\004\000\002\022\004\000\002\022\003\000\002" +
-    "\022\007\000\002\022\004\000\002\022\003\000\002\022" +
-    "\003\000\002\022\003\000\002\022\003\000\002\022\003" +
-    "\000\002\022\003\000\002\023\004\000\002\023\003\000" +
-    "\002\024\002\000\002\024\005\000\002\024\007" });
+    "\002\006\005\000\002\006\006\000\002\006\005\000\002" +
+    "\006\006\000\002\007\002\000\002\007\006\000\002\007" +
+    "\010\000\002\010\005\000\002\010\005\000\002\010\005" +
+    "\000\002\010\005\000\002\010\005\000\002\010\005\000" +
+    "\002\010\005\000\002\010\003\000\002\011\005\000\002" +
+    "\011\005\000\002\011\005\000\002\011\005\000\002\011" +
+    "\003\000\002\012\004\000\002\012\004\000\002\012\004" +
+    "\000\002\012\004\000\002\012\003\000\002\013\005\000" +
+    "\002\013\005\000\002\013\005\000\002\013\005\000\002" +
+    "\013\005\000\002\013\006\000\002\013\003\000\002\013" +
+    "\005\000\002\014\005\000\002\014\005\000\002\014\003" +
+    "\000\002\015\005\000\002\015\005\000\002\015\003\000" +
+    "\002\016\010\000\002\016\010\000\002\016\003\000\002" +
+    "\017\005\000\002\017\005\000\002\017\005\000\002\017" +
+    "\003\000\002\017\005\000\002\017\005\000\002\020\002" +
+    "\000\002\020\003\000\002\020\005\000\002\021\002\000" +
+    "\002\021\003\000\002\021\005\000\002\022\003\000\002" +
+    "\022\004\000\002\023\004\000\002\023\003\000\002\023" +
+    "\007\000\002\023\004\000\002\023\003\000\002\023\003" +
+    "\000\002\023\003\000\002\023\003\000\002\023\003\000" +
+    "\002\023\003\000\002\024\004\000\002\024\003\000\002" +
+    "\025\002\000\002\025\005\000\002\025\007" });
 
   /** Access to production table. */
   public short[][] production_table() {return _production_table;}
@@ -52,383 +53,407 @@ public class parser extends java_cup.runtime.lr_parser {
   /** Parse-action table. */
   protected static final short[][] _action_table = 
     unpackFromStrings(new String[] {
-    "\000\217\000\060\002\ufffd\004\006\006\ufffd\007\ufffd\010" +
-    "\ufffd\011\ufffd\012\ufffd\034\ufffd\044\ufffd\046\ufffd\050\ufffd" +
-    "\051\ufffd\053\ufffd\054\ufffd\055\ufffd\056\ufffd\057\ufffd\060" +
-    "\ufffd\061\ufffd\062\ufffd\063\ufffd\064\ufffd\065\ufffd\001\002" +
+    "\000\230\000\060\002\ufffd\004\006\006\ufffd\007\ufffd\010" +
+    "\ufffd\011\ufffd\012\ufffd\015\ufffd\045\ufffd\047\ufffd\051\ufffd" +
+    "\052\ufffd\054\ufffd\055\ufffd\056\ufffd\057\ufffd\060\ufffd\061" +
+    "\ufffd\062\ufffd\063\ufffd\064\ufffd\065\ufffd\066\ufffd\001\002" +
     "\000\056\002\ufffd\006\ufffd\007\ufffd\010\ufffd\011\ufffd\012" +
-    "\ufffd\034\ufffd\044\ufffd\046\ufffd\050\ufffd\051\ufffd\053\ufffd" +
-    "\054\ufffd\055\ufffd\056\ufffd\057\ufffd\060\ufffd\061\ufffd\062" +
-    "\ufffd\063\ufffd\064\ufffd\065\ufffd\001\002\000\004\002\220" +
-    "\001\002\000\004\065\216\001\002\000\056\002\uffff\006" +
-    "\037\007\034\010\032\011\031\012\030\034\040\044\017" +
-    "\046\013\050\011\051\047\053\044\054\027\055\026\056" +
-    "\024\057\023\060\022\061\012\062\010\063\021\064\016" +
-    "\065\015\001\002\000\076\005\uffbe\012\uffbe\013\uffbe\014" +
-    "\uffbe\015\uffbe\016\uffbe\017\uffbe\020\uffbe\021\uffbe\022\uffbe" +
-    "\023\uffbe\024\uffbe\025\uffbe\026\uffbe\027\uffbe\030\uffbe\031" +
-    "\uffbe\032\uffbe\033\uffbe\034\uffbe\035\uffbe\036\uffbe\037\uffbe" +
-    "\040\uffbe\041\uffbe\042\uffbe\043\uffbe\045\uffbe\047\uffbe\052" +
-    "\uffbe\001\002\000\004\064\207\001\002\000\076\005\uffbc" +
-    "\012\uffbc\013\uffbc\014\uffbc\015\uffbc\016\uffbc\017\uffbc\020" +
-    "\uffbc\021\uffbc\022\uffbc\023\uffbc\024\uffbc\025\uffbc\026\uffbc" +
-    "\027\uffbc\030\uffbc\031\uffbc\032\uffbc\033\uffbc\034\uffbc\035" +
-    "\uffbc\036\uffbc\037\uffbc\040\uffbc\041\uffbc\042\uffbc\043\uffbc" +
-    "\045\uffbc\047\uffbc\052\uffbc\001\002\000\036\012\030\034" +
-    "\053\044\017\046\013\047\uffcb\050\011\051\047\053\044" +
-    "\060\022\061\012\062\010\063\021\064\016\065\015\001" +
-    "\002\000\030\005\uffb7\012\173\013\uffb7\014\122\015\120" +
-    "\016\117\017\126\020\125\021\124\022\121\052\175\001" +
-    "\002\000\076\005\uffc5\012\uffc5\013\uffc5\014\uffc5\015\uffc5" +
-    "\016\uffc5\017\uffc5\020\uffc5\021\uffc5\022\uffc5\023\uffc5\024" +
-    "\uffc5\025\uffc5\026\uffc5\027\uffc5\030\uffc5\031\uffc5\032\uffc5" +
-    "\033\uffc5\034\uffc5\035\uffc5\036\uffc5\037\uffc5\040\uffc5\041" +
-    "\uffc5\042\uffc5\043\uffc5\045\uffc5\047\uffc5\052\uffc5\001\002" +
-    "\000\004\051\172\001\002\000\036\012\030\034\053\044" +
-    "\017\045\uffcb\046\013\050\011\051\047\053\044\060\022" +
-    "\061\012\062\010\063\021\064\016\065\015\001\002\000" +
-    "\076\005\uffbf\012\uffbf\013\uffbf\014\uffbf\015\uffbf\016\uffbf" +
-    "\017\uffbf\020\uffbf\021\uffbf\022\uffbf\023\uffbf\024\uffbf\025" +
-    "\uffbf\026\uffbf\027\uffbf\030\uffbf\031\uffbf\032\uffbf\033\uffbf" +
-    "\034\uffbf\035\uffbf\036\uffbf\037\uffbf\040\uffbf\041\uffbf\042" +
-    "\uffbf\043\uffbf\045\uffbf\047\uffbf\052\uffbf\001\002\000\076" +
-    "\005\uffbd\012\uffbd\013\uffbd\014\uffbd\015\uffbd\016\uffbd\017" +
-    "\uffbd\020\uffbd\021\uffbd\022\uffbd\023\uffbd\024\uffbd\025\uffbd" +
-    "\026\uffbd\027\uffbd\030\uffbd\031\uffbd\032\uffbd\033\uffbd\034" +
-    "\uffbd\035\uffbd\036\uffbd\037\uffbd\040\uffbd\041\uffbd\042\uffbd" +
-    "\043\uffbd\045\uffbd\047\uffbd\052\uffbd\001\002\000\076\005" +
-    "\uffbb\012\uffbb\013\uffbb\014\uffbb\015\uffbb\016\uffbb\017\uffbb" +
-    "\020\uffbb\021\uffbb\022\uffbb\023\uffbb\024\uffbb\025\uffbb\026" +
-    "\uffbb\027\uffbb\030\uffbb\031\uffbb\032\uffbb\033\uffbb\034\uffbb" +
-    "\035\uffbb\036\uffbb\037\uffbb\040\uffbb\041\uffbb\042\uffbb\043" +
-    "\uffbb\045\uffbb\047\uffbb\052\uffbb\001\002\000\034\012\030" +
-    "\034\040\044\017\046\013\050\011\051\047\053\044\060" +
-    "\022\061\012\062\010\063\021\064\016\065\015\001\002" +
-    "\000\034\012\030\034\040\044\017\046\013\050\011\051" +
-    "\047\053\044\060\022\061\012\062\010\063\021\064\016" +
-    "\065\015\001\002\000\056\002\ufffc\006\ufffc\007\ufffc\010" +
-    "\ufffc\011\ufffc\012\ufffc\034\ufffc\044\ufffc\046\ufffc\050\ufffc" +
-    "\051\ufffc\053\ufffc\054\ufffc\055\ufffc\056\ufffc\057\ufffc\060" +
-    "\ufffc\061\ufffc\062\ufffc\063\ufffc\064\ufffc\065\ufffc\001\002" +
-    "\000\034\012\030\034\040\044\017\046\013\050\011\051" +
-    "\047\053\044\060\022\061\012\062\010\063\021\064\016" +
-    "\065\015\001\002\000\034\012\030\034\040\044\017\046" +
-    "\013\050\011\051\047\053\044\060\022\061\012\062\010" +
-    "\063\021\064\016\065\015\001\002\000\100\005\uffc2\012" +
-    "\uffc2\013\uffc2\014\uffc2\015\uffc2\016\uffc2\017\uffc2\020\uffc2" +
-    "\021\uffc2\022\uffc2\023\uffc2\024\uffc2\025\uffc2\026\uffc2\027" +
-    "\uffc2\030\uffc2\031\uffc2\032\uffc2\033\uffc2\034\uffc2\035\uffc2" +
-    "\036\uffc2\037\uffc2\040\uffc2\041\uffc2\042\uffc2\043\uffc2\045" +
-    "\uffc2\047\uffc2\052\uffc2\064\163\001\002\000\010\051\047" +
-    "\064\016\065\015\001\002\000\004\062\157\001\002\000" +
-    "\042\005\uffe3\012\uffe3\013\uffe3\014\uffe3\015\uffe3\016\uffe3" +
-    "\017\uffe3\020\uffe3\021\uffe3\022\uffe3\023\uffe3\024\uffe3\025" +
-    "\uffe3\026\uffe3\035\uffe3\052\uffe3\001\002\000\004\065\155" +
-    "\001\002\000\042\005\uffe8\012\uffe8\013\uffe8\014\uffe8\015" +
-    "\uffe8\016\uffe8\017\uffe8\020\uffe8\021\uffe8\022\uffe8\023\uffe8" +
-    "\024\uffe8\025\uffe8\026\uffe8\035\uffe8\052\uffe8\001\002\000" +
-    "\042\005\uffed\012\uffed\013\uffed\014\uffed\015\uffed\016\uffed" +
-    "\017\uffed\020\uffed\021\uffed\022\uffed\023\133\024\132\025" +
-    "\131\026\130\035\uffed\052\uffed\001\002\000\006\051\047" +
-    "\064\016\001\002\000\046\012\030\034\040\035\uffcb\044" +
-    "\017\046\013\050\011\051\047\053\044\054\027\055\026" +
-    "\056\024\057\023\060\022\061\012\062\010\063\021\064" +
-    "\016\065\015\001\002\000\004\064\147\001\002\000\062" +
-    "\005\uffdc\012\uffdc\013\uffdc\014\uffdc\015\uffdc\016\uffdc\017" +
-    "\uffdc\020\uffdc\021\uffdc\022\uffdc\023\uffdc\024\uffdc\025\uffdc" +
-    "\026\uffdc\027\104\030\106\031\105\032\103\033\102\034" +
-    "\101\035\uffdc\036\057\037\056\052\uffdc\001\002\000\076" +
-    "\005\uffce\012\uffce\013\uffce\014\uffce\015\uffce\016\uffce\017" +
-    "\uffce\020\uffce\021\uffce\022\uffce\023\uffce\024\uffce\025\uffce" +
-    "\026\uffce\027\uffce\030\uffce\031\uffce\032\uffce\033\uffce\034" +
-    "\uffce\035\uffce\036\uffce\037\uffce\040\uffce\041\uffce\042\uffce" +
-    "\043\uffce\045\uffce\047\uffce\052\uffce\001\002\000\076\005" +
-    "\uffba\012\uffba\013\uffba\014\uffba\015\uffba\016\uffba\017\uffba" +
-    "\020\uffba\021\uffba\022\uffba\023\uffba\024\uffba\025\uffba\026" +
-    "\uffba\027\uffba\030\uffba\031\uffba\032\uffba\033\uffba\034\uffba" +
-    "\035\uffba\036\uffba\037\uffba\040\uffba\041\uffba\042\uffba\043" +
-    "\uffba\045\uffba\047\uffba\052\uffba\001\002\000\076\005\uffd2" +
-    "\012\uffd2\013\uffd2\014\uffd2\015\uffd2\016\uffd2\017\uffd2\020" +
-    "\uffd2\021\uffd2\022\uffd2\023\uffd2\024\uffd2\025\uffd2\026\uffd2" +
-    "\027\uffd2\030\uffd2\031\uffd2\032\uffd2\033\uffd2\034\uffd2\035" +
-    "\uffd2\036\uffd2\037\uffd2\040\uffd2\041\uffd2\042\uffd2\043\uffd2" +
-    "\045\uffd2\047\uffd2\052\uffd2\001\002\000\076\005\uffd5\012" +
+    "\ufffd\015\ufffd\045\ufffd\047\ufffd\051\ufffd\052\ufffd\054\ufffd" +
+    "\055\ufffd\056\ufffd\057\ufffd\060\ufffd\061\ufffd\062\ufffd\063" +
+    "\ufffd\064\ufffd\065\ufffd\066\ufffd\001\002\000\004\002\231" +
+    "\001\002\000\004\066\227\001\002\000\056\002\uffff\006" +
+    "\040\007\035\010\033\011\032\012\031\015\025\045\014" +
+    "\047\012\051\047\052\045\054\030\055\027\056\024\057" +
+    "\023\060\022\061\021\062\011\063\010\064\020\065\016" +
+    "\066\013\001\002\000\100\005\uffbb\012\uffbb\013\uffbb\014" +
+    "\uffbb\015\uffbb\016\uffbb\017\uffbb\020\uffbb\021\uffbb\022\uffbb" +
+    "\023\uffbb\024\uffbb\025\uffbb\026\uffbb\027\uffbb\030\uffbb\031" +
+    "\uffbb\032\uffbb\033\uffbb\034\uffbb\035\uffbb\036\uffbb\037\uffbb" +
+    "\040\uffbb\041\uffbb\042\uffbb\043\uffbb\044\uffbb\046\uffbb\050" +
+    "\uffbb\053\uffbb\001\002\000\100\005\uffb9\012\uffb9\013\uffb9" +
+    "\014\uffb9\015\uffb9\016\uffb9\017\uffb9\020\uffb9\021\uffb9\022" +
+    "\uffb9\023\uffb9\024\uffb9\025\uffb9\026\uffb9\027\uffb9\030\uffb9" +
+    "\031\uffb9\032\uffb9\033\uffb9\034\uffb9\035\uffb9\036\uffb9\037" +
+    "\uffb9\040\uffb9\041\uffb9\042\uffb9\043\uffb9\044\uffb9\046\uffb9" +
+    "\050\uffb9\053\uffb9\001\002\000\036\012\031\015\053\045" +
+    "\014\047\012\050\uffc8\051\047\052\045\054\030\061\021" +
+    "\062\011\063\010\064\020\065\016\066\013\001\002\000" +
+    "\100\005\uffc2\012\uffc2\013\uffc2\014\uffc2\015\uffc2\016\uffc2" +
+    "\017\uffc2\020\uffc2\021\uffc2\022\uffc2\023\uffc2\024\uffc2\025" +
+    "\uffc2\026\uffc2\027\uffc2\030\uffc2\031\uffc2\032\uffc2\033\uffc2" +
+    "\034\uffc2\035\uffc2\036\uffc2\037\uffc2\040\uffc2\041\uffc2\042" +
+    "\uffc2\043\uffc2\044\uffc2\046\uffc2\050\uffc2\053\uffc2\001\002" +
+    "\000\036\012\031\015\053\045\014\046\uffc8\047\012\051" +
+    "\047\052\045\054\030\061\021\062\011\063\010\064\020" +
+    "\065\016\066\013\001\002\000\032\005\uffb4\012\200\013" +
+    "\uffb4\014\uffb4\020\126\021\125\022\124\023\123\024\122" +
+    "\025\121\026\120\053\202\001\002\000\004\052\177\001" +
+    "\002\000\100\005\uffbc\012\uffbc\013\uffbc\014\uffbc\015\uffbc" +
+    "\016\uffbc\017\uffbc\020\uffbc\021\uffbc\022\uffbc\023\uffbc\024" +
+    "\uffbc\025\uffbc\026\uffbc\027\uffbc\030\uffbc\031\uffbc\032\uffbc" +
+    "\033\uffbc\034\uffbc\035\uffbc\036\uffbc\037\uffbc\040\uffbc\041" +
+    "\uffbc\042\uffbc\043\uffbc\044\uffbc\046\uffbc\050\uffbc\053\uffbc" +
+    "\001\002\000\100\005\uffba\012\uffba\013\uffba\014\uffba\015" +
+    "\uffba\016\uffba\017\uffba\020\uffba\021\uffba\022\uffba\023\uffba" +
+    "\024\uffba\025\uffba\026\uffba\027\uffba\030\uffba\031\uffba\032" +
+    "\uffba\033\uffba\034\uffba\035\uffba\036\uffba\037\uffba\040\uffba" +
+    "\041\uffba\042\uffba\043\uffba\044\uffba\046\uffba\050\uffba\053" +
+    "\uffba\001\002\000\100\005\uffb8\012\uffb8\013\uffb8\014\uffb8" +
+    "\015\uffb8\016\uffb8\017\uffb8\020\uffb8\021\uffb8\022\uffb8\023" +
+    "\uffb8\024\uffb8\025\uffb8\026\uffb8\027\uffb8\030\uffb8\031\uffb8" +
+    "\032\uffb8\033\uffb8\034\uffb8\035\uffb8\036\uffb8\037\uffb8\040" +
+    "\uffb8\041\uffb8\042\uffb8\043\uffb8\044\uffb8\046\uffb8\050\uffb8" +
+    "\053\uffb8\001\002\000\034\012\031\015\025\045\014\047" +
+    "\012\051\047\052\045\054\030\061\021\062\011\063\010" +
+    "\064\020\065\016\066\013\001\002\000\034\012\031\015" +
+    "\025\045\014\047\012\051\047\052\045\054\030\061\021" +
+    "\062\011\063\010\064\020\065\016\066\013\001\002\000" +
+    "\034\012\031\015\025\045\014\047\012\051\047\052\045" +
+    "\054\030\061\021\062\011\063\010\064\020\065\016\066" +
+    "\013\001\002\000\046\012\031\015\025\016\uffc8\045\014" +
+    "\047\012\051\047\052\045\054\030\055\027\056\024\057" +
+    "\023\060\022\061\021\062\011\063\010\064\020\065\016" +
+    "\066\013\001\002\000\056\002\ufffc\006\ufffc\007\ufffc\010" +
+    "\ufffc\011\ufffc\012\ufffc\015\ufffc\045\ufffc\047\ufffc\051\ufffc" +
+    "\052\ufffc\054\ufffc\055\ufffc\056\ufffc\057\ufffc\060\ufffc\061" +
+    "\ufffc\062\ufffc\063\ufffc\064\ufffc\065\ufffc\066\ufffc\001\002" +
+    "\000\034\012\031\015\025\045\014\047\012\051\047\052" +
+    "\045\054\030\061\021\062\011\063\010\064\020\065\016" +
+    "\066\013\001\002\000\100\005\uffb7\012\uffb7\013\uffb7\014" +
+    "\uffb7\015\uffb7\016\uffb7\017\uffb7\020\uffb7\021\uffb7\022\uffb7" +
+    "\023\uffb7\024\uffb7\025\uffb7\026\uffb7\027\uffb7\030\uffb7\031" +
+    "\uffb7\032\uffb7\033\uffb7\034\uffb7\035\uffb7\036\uffb7\037\uffb7" +
+    "\040\uffb7\041\uffb7\042\uffb7\043\uffb7\044\uffb7\046\uffb7\050" +
+    "\uffb7\053\uffb7\001\002\000\102\005\uffbf\012\uffbf\013\uffbf" +
+    "\014\uffbf\015\uffbf\016\uffbf\017\uffbf\020\uffbf\021\uffbf\022" +
+    "\uffbf\023\uffbf\024\uffbf\025\uffbf\026\uffbf\027\uffbf\030\uffbf" +
+    "\031\uffbf\032\uffbf\033\uffbf\034\uffbf\035\uffbf\036\uffbf\037" +
+    "\uffbf\040\uffbf\041\uffbf\042\uffbf\043\uffbf\044\uffbf\046\uffbf" +
+    "\050\uffbf\053\uffbf\065\170\001\002\000\010\052\045\065" +
+    "\016\066\013\001\002\000\004\063\164\001\002\000\044" +
+    "\005\uffe0\012\uffe0\013\uffe0\014\uffe0\016\uffe0\017\uffe0\020" +
+    "\uffe0\021\uffe0\022\uffe0\023\uffe0\024\uffe0\025\uffe0\026\uffe0" +
+    "\027\uffe0\030\uffe0\031\uffe0\053\uffe0\001\002\000\004\066" +
+    "\162\001\002\000\044\005\uffe5\012\uffe5\013\uffe5\014\uffe5" +
+    "\016\uffe5\017\uffe5\020\uffe5\021\uffe5\022\uffe5\023\uffe5\024" +
+    "\uffe5\025\uffe5\026\uffe5\027\uffe5\030\uffe5\031\uffe5\053\uffe5" +
+    "\001\002\000\044\005\uffea\012\uffea\013\uffea\014\uffea\016" +
+    "\uffea\017\133\020\uffea\021\uffea\022\uffea\023\uffea\024\uffea" +
+    "\025\uffea\026\uffea\027\132\030\131\031\130\053\uffea\001" +
+    "\002\000\006\052\045\065\016\001\002\000\004\065\156" +
+    "\001\002\000\100\005\uffcb\012\uffcb\013\uffcb\014\uffcb\015" +
+    "\uffcb\016\uffcb\017\uffcb\020\uffcb\021\uffcb\022\uffcb\023\uffcb" +
+    "\024\uffcb\025\uffcb\026\uffcb\027\uffcb\030\uffcb\031\uffcb\032" +
+    "\uffcb\033\uffcb\034\uffcb\035\uffcb\036\uffcb\037\uffcb\040\uffcb" +
+    "\041\uffcb\042\uffcb\043\uffcb\044\uffcb\046\uffcb\050\uffcb\053" +
+    "\uffcb\001\002\000\064\005\uffd9\012\uffd9\013\uffd9\014\uffd9" +
+    "\015\106\016\uffd9\017\uffd9\020\uffd9\021\uffd9\022\uffd9\023" +
+    "\uffd9\024\uffd9\025\uffd9\026\uffd9\027\uffd9\030\uffd9\031\uffd9" +
+    "\032\104\033\103\034\102\035\101\036\100\037\057\040" +
+    "\056\053\uffd9\001\002\000\100\005\uffcf\012\uffcf\013\uffcf" +
+    "\014\uffcf\015\uffcf\016\uffcf\017\uffcf\020\uffcf\021\uffcf\022" +
+    "\uffcf\023\uffcf\024\uffcf\025\uffcf\026\uffcf\027\uffcf\030\uffcf" +
+    "\031\uffcf\032\uffcf\033\uffcf\034\uffcf\035\uffcf\036\uffcf\037" +
+    "\uffcf\040\uffcf\041\uffcf\042\uffcf\043\uffcf\044\uffcf\046\uffcf" +
+    "\050\uffcf\053\uffcf\001\002\000\006\065\uffb5\066\uffb5\001" +
+    "\002\000\100\005\uffd2\012\uffd2\013\uffd2\014\uffd2\015\uffd2" +
+    "\016\uffd2\017\uffd2\020\uffd2\021\uffd2\022\uffd2\023\uffd2\024" +
+    "\uffd2\025\uffd2\026\uffd2\027\uffd2\030\uffd2\031\uffd2\032\uffd2" +
+    "\033\uffd2\034\uffd2\035\uffd2\036\uffd2\037\uffd2\040\uffd2\041" +
+    "\uffd2\042\uffd2\043\uffd2\044\uffd2\046\uffd2\050\uffd2\053\uffd2" +
+    "\001\002\000\004\065\147\001\002\000\100\005\uffd5\012" +
     "\uffd5\013\uffd5\014\uffd5\015\uffd5\016\uffd5\017\uffd5\020\uffd5" +
     "\021\uffd5\022\uffd5\023\uffd5\024\uffd5\025\uffd5\026\uffd5\027" +
     "\uffd5\030\uffd5\031\uffd5\032\uffd5\033\uffd5\034\uffd5\035\uffd5" +
-    "\036\uffd5\037\uffd5\040\uffd5\041\uffd5\042\uffd5\043\uffd5\045" +
-    "\uffd5\047\uffd5\052\uffd5\001\002\000\006\064\uffb8\065\uffb8" +
-    "\001\002\000\076\005\uffd8\012\uffd8\013\uffd8\014\uffd8\015" +
-    "\uffd8\016\uffd8\017\uffd8\020\uffd8\021\uffd8\022\uffd8\023\uffd8" +
-    "\024\uffd8\025\uffd8\026\uffd8\027\uffd8\030\uffd8\031\uffd8\032" +
-    "\uffd8\033\uffd8\034\uffd8\035\uffd8\036\uffd8\037\uffd8\040\052" +
-    "\041\051\042\uffd8\043\uffd8\045\uffd8\047\uffd8\052\uffd8\001" +
-    "\002\000\034\012\030\034\053\044\017\046\013\050\011" +
-    "\051\047\053\044\060\022\061\012\062\010\063\021\064" +
-    "\016\065\015\001\002\000\034\012\030\034\053\044\017" +
-    "\046\013\050\011\051\047\053\044\060\022\061\012\062" +
-    "\010\063\021\064\016\065\015\001\002\000\046\012\030" +
-    "\034\040\035\uffcb\044\017\046\013\050\011\051\047\053" +
-    "\044\054\027\055\026\056\024\057\023\060\022\061\012" +
-    "\062\010\063\021\064\016\065\015\001\002\000\010\034" +
-    "\060\036\057\037\056\001\002\000\076\005\uffd7\012\uffd7" +
-    "\013\uffd7\014\uffd7\015\uffd7\016\uffd7\017\uffd7\020\uffd7\021" +
-    "\uffd7\022\uffd7\023\uffd7\024\uffd7\025\uffd7\026\uffd7\027\uffd7" +
-    "\030\uffd7\031\uffd7\032\uffd7\033\uffd7\034\uffd7\035\uffd7\036" +
-    "\uffd7\037\uffd7\040\uffd7\041\uffd7\042\uffd7\043\uffd7\045\uffd7" +
-    "\047\uffd7\052\uffd7\001\002\000\034\012\030\034\053\044" +
-    "\017\046\013\050\011\051\047\053\044\060\022\061\012" +
-    "\062\010\063\021\064\016\065\015\001\002\000\034\012" +
-    "\030\034\053\044\017\046\013\050\011\051\047\053\044" +
-    "\060\022\061\012\062\010\063\021\064\016\065\015\001" +
-    "\002\000\040\012\030\034\053\042\uffcb\043\uffcb\044\017" +
-    "\046\013\050\011\051\047\053\044\060\022\061\012\062" +
-    "\010\063\021\064\016\065\015\001\002\000\006\042\066" +
-    "\043\065\001\002\000\024\026\063\034\060\035\uffca\036" +
-    "\057\037\056\042\uffca\043\uffca\045\uffca\047\uffca\001\002" +
-    "\000\046\012\030\034\053\035\uffcb\042\uffcb\043\uffcb\044" +
-    "\017\045\uffcb\046\013\047\uffcb\050\011\051\047\053\044" +
-    "\060\022\061\012\062\010\063\021\064\016\065\015\001" +
-    "\002\000\014\035\uffc9\042\uffc9\043\uffc9\045\uffc9\047\uffc9" +
-    "\001\002\000\036\012\030\034\053\035\uffcb\044\017\046" +
-    "\013\050\011\051\047\053\044\060\022\061\012\062\010" +
-    "\063\021\064\016\065\015\001\002\000\036\012\030\034" +
-    "\053\035\uffcb\044\017\046\013\050\011\051\047\053\044" +
-    "\060\022\061\012\062\010\063\021\064\016\065\015\001" +
-    "\002\000\004\035\070\001\002\000\076\005\uffd4\012\uffd4" +
-    "\013\uffd4\014\uffd4\015\uffd4\016\uffd4\017\uffd4\020\uffd4\021" +
-    "\uffd4\022\uffd4\023\uffd4\024\uffd4\025\uffd4\026\uffd4\027\uffd4" +
-    "\030\uffd4\031\uffd4\032\uffd4\033\uffd4\034\uffd4\035\uffd4\036" +
-    "\uffd4\037\uffd4\040\uffd4\041\uffd4\042\uffd4\043\uffd4\045\uffd4" +
-    "\047\uffd4\052\uffd4\001\002\000\004\035\072\001\002\000" +
-    "\076\005\uffd3\012\uffd3\013\uffd3\014\uffd3\015\uffd3\016\uffd3" +
-    "\017\uffd3\020\uffd3\021\uffd3\022\uffd3\023\uffd3\024\uffd3\025" +
-    "\uffd3\026\uffd3\027\uffd3\030\uffd3\031\uffd3\032\uffd3\033\uffd3" +
-    "\034\uffd3\035\uffd3\036\uffd3\037\uffd3\040\uffd3\041\uffd3\042" +
-    "\uffd3\043\uffd3\045\uffd3\047\uffd3\052\uffd3\001\002\000\076" +
-    "\005\uffda\012\uffda\013\uffda\014\uffda\015\uffda\016\uffda\017" +
-    "\uffda\020\uffda\021\uffda\022\uffda\023\uffda\024\uffda\025\uffda" +
-    "\026\uffda\027\uffda\030\uffda\031\uffda\032\uffda\033\uffda\034" +
-    "\uffda\035\uffda\036\uffda\037\uffda\040\052\041\051\042\uffda" +
-    "\043\uffda\045\uffda\047\uffda\052\uffda\001\002\000\076\005" +
-    "\uffd9\012\uffd9\013\uffd9\014\uffd9\015\uffd9\016\uffd9\017\uffd9" +
-    "\020\uffd9\021\uffd9\022\uffd9\023\uffd9\024\uffd9\025\uffd9\026" +
-    "\uffd9\027\uffd9\030\uffd9\031\uffd9\032\uffd9\033\uffd9\034\uffd9" +
-    "\035\uffd9\036\uffd9\037\uffd9\040\052\041\051\042\uffd9\043" +
-    "\uffd9\045\uffd9\047\uffd9\052\uffd9\001\002\000\022\014\122" +
-    "\015\120\016\117\017\126\020\125\021\124\022\121\035" +
-    "\123\001\002\000\004\035\116\001\002\000\052\014\uffdc" +
-    "\015\uffdc\016\uffdc\017\uffdc\020\uffdc\021\uffdc\022\uffdc\023" +
-    "\uffdc\024\uffdc\025\uffdc\026\063\027\104\030\106\031\105" +
-    "\032\103\033\102\034\101\035\100\036\057\037\056\001" +
-    "\002\000\076\005\uffcc\012\uffcc\013\uffcc\014\uffcc\015\uffcc" +
-    "\016\uffcc\017\uffcc\020\uffcc\021\uffcc\022\uffcc\023\uffcc\024" +
-    "\uffcc\025\uffcc\026\uffcc\027\uffcc\030\uffcc\031\uffcc\032\uffcc" +
-    "\033\uffcc\034\uffcc\035\uffcc\036\uffcc\037\uffcc\040\uffcc\041" +
-    "\uffcc\042\uffcc\043\uffcc\045\uffcc\047\uffcc\052\uffcc\001\002" +
-    "\000\042\012\030\034\053\035\uffcb\042\uffcb\043\uffcb\044" +
-    "\017\046\013\050\011\051\047\053\044\060\022\061\012" +
-    "\062\010\063\021\064\016\065\015\001\002\000\034\012" +
-    "\030\034\053\044\017\046\013\050\011\051\047\053\044" +
-    "\060\022\061\012\062\010\063\021\064\016\065\015\001" +
-    "\002\000\034\012\030\034\053\044\017\046\013\050\011" +
-    "\051\047\053\044\060\022\061\012\062\010\063\021\064" +
-    "\016\065\015\001\002\000\034\012\030\034\053\044\017" +
-    "\046\013\050\011\051\047\053\044\060\022\061\012\062" +
-    "\010\063\021\064\016\065\015\001\002\000\034\012\030" +
-    "\034\053\044\017\046\013\050\011\051\047\053\044\060" +
-    "\022\061\012\062\010\063\021\064\016\065\015\001\002" +
-    "\000\034\012\030\034\053\044\017\046\013\050\011\051" +
-    "\047\053\044\060\022\061\012\062\010\063\021\064\016" +
-    "\065\015\001\002\000\050\005\uffe1\012\uffe1\013\uffe1\014" +
-    "\uffe1\015\uffe1\016\uffe1\017\uffe1\020\uffe1\021\uffe1\022\uffe1" +
-    "\023\uffe1\024\uffe1\025\uffe1\026\uffe1\034\060\035\uffe1\036" +
-    "\057\037\056\052\uffe1\001\002\000\050\005\uffe0\012\uffe0" +
-    "\013\uffe0\014\uffe0\015\uffe0\016\uffe0\017\uffe0\020\uffe0\021" +
-    "\uffe0\022\uffe0\023\uffe0\024\uffe0\025\uffe0\026\uffe0\034\060" +
-    "\035\uffe0\036\057\037\056\052\uffe0\001\002\000\050\005" +
-    "\uffe2\012\uffe2\013\uffe2\014\uffe2\015\uffe2\016\uffe2\017\uffe2" +
+    "\036\uffd5\037\uffd5\040\uffd5\041\051\042\052\043\uffd5\044" +
+    "\uffd5\046\uffd5\050\uffd5\053\uffd5\001\002\000\034\012\031" +
+    "\015\053\045\014\047\012\051\047\052\045\054\030\061" +
+    "\021\062\011\063\010\064\020\065\016\066\013\001\002" +
+    "\000\034\012\031\015\053\045\014\047\012\051\047\052" +
+    "\045\054\030\061\021\062\011\063\010\064\020\065\016" +
+    "\066\013\001\002\000\046\012\031\015\025\016\uffc8\045" +
+    "\014\047\012\051\047\052\045\054\030\055\027\056\024" +
+    "\057\023\060\022\061\021\062\011\063\010\064\020\065" +
+    "\016\066\013\001\002\000\010\015\060\037\057\040\056" +
+    "\001\002\000\100\005\uffd3\012\uffd3\013\uffd3\014\uffd3\015" +
+    "\uffd3\016\uffd3\017\uffd3\020\uffd3\021\uffd3\022\uffd3\023\uffd3" +
+    "\024\uffd3\025\uffd3\026\uffd3\027\uffd3\030\uffd3\031\uffd3\032" +
+    "\uffd3\033\uffd3\034\uffd3\035\uffd3\036\uffd3\037\uffd3\040\uffd3" +
+    "\041\uffd3\042\uffd3\043\uffd3\044\uffd3\046\uffd3\050\uffd3\053" +
+    "\uffd3\001\002\000\034\012\031\015\053\045\014\047\012" +
+    "\051\047\052\045\054\030\061\021\062\011\063\010\064" +
+    "\020\065\016\066\013\001\002\000\034\012\031\015\053" +
+    "\045\014\047\012\051\047\052\045\054\030\061\021\062" +
+    "\011\063\010\064\020\065\016\066\013\001\002\000\040" +
+    "\012\031\015\053\043\uffc8\044\uffc8\045\014\047\012\051" +
+    "\047\052\045\054\030\061\021\062\011\063\010\064\020" +
+    "\065\016\066\013\001\002\000\006\043\066\044\065\001" +
+    "\002\000\024\015\060\016\uffc7\031\063\037\057\040\056" +
+    "\043\uffc7\044\uffc7\046\uffc7\050\uffc7\001\002\000\046\012" +
+    "\031\015\053\016\uffc8\043\uffc8\044\uffc8\045\014\046\uffc8" +
+    "\047\012\050\uffc8\051\047\052\045\054\030\061\021\062" +
+    "\011\063\010\064\020\065\016\066\013\001\002\000\014" +
+    "\016\uffc6\043\uffc6\044\uffc6\046\uffc6\050\uffc6\001\002\000" +
+    "\036\012\031\015\053\016\uffc8\045\014\047\012\051\047" +
+    "\052\045\054\030\061\021\062\011\063\010\064\020\065" +
+    "\016\066\013\001\002\000\036\012\031\015\053\016\uffc8" +
+    "\045\014\047\012\051\047\052\045\054\030\061\021\062" +
+    "\011\063\010\064\020\065\016\066\013\001\002\000\004" +
+    "\016\070\001\002\000\100\005\uffd1\012\uffd1\013\uffd1\014" +
+    "\uffd1\015\uffd1\016\uffd1\017\uffd1\020\uffd1\021\uffd1\022\uffd1" +
+    "\023\uffd1\024\uffd1\025\uffd1\026\uffd1\027\uffd1\030\uffd1\031" +
+    "\uffd1\032\uffd1\033\uffd1\034\uffd1\035\uffd1\036\uffd1\037\uffd1" +
+    "\040\uffd1\041\uffd1\042\uffd1\043\uffd1\044\uffd1\046\uffd1\050" +
+    "\uffd1\053\uffd1\001\002\000\004\016\072\001\002\000\100" +
+    "\005\uffd0\012\uffd0\013\uffd0\014\uffd0\015\uffd0\016\uffd0\017" +
+    "\uffd0\020\uffd0\021\uffd0\022\uffd0\023\uffd0\024\uffd0\025\uffd0" +
+    "\026\uffd0\027\uffd0\030\uffd0\031\uffd0\032\uffd0\033\uffd0\034" +
+    "\uffd0\035\uffd0\036\uffd0\037\uffd0\040\uffd0\041\uffd0\042\uffd0" +
+    "\043\uffd0\044\uffd0\046\uffd0\050\uffd0\053\uffd0\001\002\000" +
+    "\100\005\uffd7\012\uffd7\013\uffd7\014\uffd7\015\uffd7\016\uffd7" +
+    "\017\uffd7\020\uffd7\021\uffd7\022\uffd7\023\uffd7\024\uffd7\025" +
+    "\uffd7\026\uffd7\027\uffd7\030\uffd7\031\uffd7\032\uffd7\033\uffd7" +
+    "\034\uffd7\035\uffd7\036\uffd7\037\uffd7\040\uffd7\041\051\042" +
+    "\052\043\uffd7\044\uffd7\046\uffd7\050\uffd7\053\uffd7\001\002" +
+    "\000\100\005\uffd6\012\uffd6\013\uffd6\014\uffd6\015\uffd6\016" +
+    "\uffd6\017\uffd6\020\uffd6\021\uffd6\022\uffd6\023\uffd6\024\uffd6" +
+    "\025\uffd6\026\uffd6\027\uffd6\030\uffd6\031\uffd6\032\uffd6\033" +
+    "\uffd6\034\uffd6\035\uffd6\036\uffd6\037\uffd6\040\uffd6\041\051" +
+    "\042\052\043\uffd6\044\uffd6\046\uffd6\050\uffd6\053\uffd6\001" +
+    "\002\000\022\016\117\020\126\021\125\022\124\023\123" +
+    "\024\122\025\121\026\120\001\002\000\004\016\116\001" +
+    "\002\000\052\015\106\016\105\017\uffd9\020\uffd9\021\uffd9" +
+    "\022\uffd9\023\uffd9\024\uffd9\025\uffd9\026\uffd9\027\uffd9\030" +
+    "\uffd9\031\063\032\104\033\103\034\102\035\101\036\100" +
+    "\037\057\040\056\001\002\000\034\012\031\015\053\045" +
+    "\014\047\012\051\047\052\045\054\030\061\021\062\011" +
+    "\063\010\064\020\065\016\066\013\001\002\000\034\012" +
+    "\031\015\053\045\014\047\012\051\047\052\045\054\030" +
+    "\061\021\062\011\063\010\064\020\065\016\066\013\001" +
+    "\002\000\034\012\031\015\053\045\014\047\012\051\047" +
+    "\052\045\054\030\061\021\062\011\063\010\064\020\065" +
+    "\016\066\013\001\002\000\034\012\031\015\053\045\014" +
+    "\047\012\051\047\052\045\054\030\061\021\062\011\063" +
+    "\010\064\020\065\016\066\013\001\002\000\034\012\031" +
+    "\015\053\045\014\047\012\051\047\052\045\054\030\061" +
+    "\021\062\011\063\010\064\020\065\016\066\013\001\002" +
+    "\000\100\005\uffc9\012\uffc9\013\uffc9\014\uffc9\015\uffc9\016" +
+    "\uffc9\017\uffc9\020\uffc9\021\uffc9\022\uffc9\023\uffc9\024\uffc9" +
+    "\025\uffc9\026\uffc9\027\uffc9\030\uffc9\031\uffc9\032\uffc9\033" +
+    "\uffc9\034\uffc9\035\uffc9\036\uffc9\037\uffc9\040\uffc9\041\uffc9" +
+    "\042\uffc9\043\uffc9\044\uffc9\046\uffc9\050\uffc9\053\uffc9\001" +
+    "\002\000\042\012\031\015\053\016\uffc8\043\uffc8\044\uffc8" +
+    "\045\014\047\012\051\047\052\045\054\030\061\021\062" +
+    "\011\063\010\064\020\065\016\066\013\001\002\000\010" +
+    "\016\110\043\066\044\065\001\002\000\044\005\uffda\012" +
+    "\uffda\013\uffda\014\uffda\016\uffda\017\uffda\020\uffda\021\uffda" +
+    "\022\uffda\023\uffda\024\uffda\025\uffda\026\uffda\027\uffda\030" +
+    "\uffda\031\uffda\053\uffda\001\002\000\052\005\uffdf\012\uffdf" +
+    "\013\uffdf\014\uffdf\015\060\016\uffdf\017\uffdf\020\uffdf\021" +
+    "\uffdf\022\uffdf\023\uffdf\024\uffdf\025\uffdf\026\uffdf\027\uffdf" +
+    "\030\uffdf\031\uffdf\037\057\040\056\053\uffdf\001\002\000" +
+    "\052\005\uffde\012\uffde\013\uffde\014\uffde\015\060\016\uffde" +
+    "\017\uffde\020\uffde\021\uffde\022\uffde\023\uffde\024\uffde\025" +
+    "\uffde\026\uffde\027\uffde\030\uffde\031\uffde\037\057\040\056" +
+    "\053\uffde\001\002\000\052\005\uffdd\012\uffdd\013\uffdd\014" +
+    "\uffdd\015\060\016\uffdd\017\uffdd\020\uffdd\021\uffdd\022\uffdd" +
+    "\023\uffdd\024\uffdd\025\uffdd\026\uffdd\027\uffdd\030\uffdd\031" +
+    "\uffdd\037\057\040\056\053\uffdd\001\002\000\052\005\uffdc" +
+    "\012\uffdc\013\uffdc\014\uffdc\015\060\016\uffdc\017\uffdc\020" +
+    "\uffdc\021\uffdc\022\uffdc\023\uffdc\024\uffdc\025\uffdc\026\uffdc" +
+    "\027\uffdc\030\uffdc\031\uffdc\037\057\040\056\053\uffdc\001" +
+    "\002\000\052\005\uffdb\012\uffdb\013\uffdb\014\uffdb\015\060" +
+    "\016\uffdb\017\uffdb\020\uffdb\021\uffdb\022\uffdb\023\uffdb\024" +
+    "\uffdb\025\uffdb\026\uffdb\027\uffdb\030\uffdb\031\uffdb\037\057" +
+    "\040\056\053\uffdb\001\002\000\100\005\uffcc\012\uffcc\013" +
+    "\uffcc\014\uffcc\015\uffcc\016\uffcc\017\uffcc\020\uffcc\021\uffcc" +
+    "\022\uffcc\023\uffcc\024\uffcc\025\uffcc\026\uffcc\027\uffcc\030" +
+    "\uffcc\031\uffcc\032\uffcc\033\uffcc\034\uffcc\035\uffcc\036\uffcc" +
+    "\037\uffcc\040\uffcc\041\uffcc\042\uffcc\043\uffcc\044\uffcc\046" +
+    "\uffcc\050\uffcc\053\uffcc\001\002\000\100\005\uffca\012\uffca" +
+    "\013\uffca\014\uffca\015\uffca\016\uffca\017\uffca\020\uffca\021" +
+    "\uffca\022\uffca\023\uffca\024\uffca\025\uffca\026\uffca\027\uffca" +
+    "\030\uffca\031\uffca\032\uffca\033\uffca\034\uffca\035\uffca\036" +
+    "\uffca\037\uffca\040\uffca\041\uffca\042\uffca\043\uffca\044\uffca" +
+    "\046\uffca\050\uffca\053\uffca\001\002\000\044\012\031\015" +
+    "\025\045\014\047\012\051\047\052\045\054\030\055\027" +
+    "\056\024\057\023\060\022\061\021\062\011\063\010\064" +
+    "\020\065\016\066\013\001\002\000\044\012\031\015\025" +
+    "\045\014\047\012\051\047\052\045\054\030\055\027\056" +
+    "\024\057\023\060\022\061\021\062\011\063\010\064\020" +
+    "\065\016\066\013\001\002\000\044\012\031\015\025\045" +
+    "\014\047\012\051\047\052\045\054\030\055\027\056\024" +
+    "\057\023\060\022\061\021\062\011\063\010\064\020\065" +
+    "\016\066\013\001\002\000\044\012\031\015\025\045\014" +
+    "\047\012\051\047\052\045\054\030\055\027\056\024\057" +
+    "\023\060\022\061\021\062\011\063\010\064\020\065\016" +
+    "\066\013\001\002\000\044\012\031\015\025\045\014\047" +
+    "\012\051\047\052\045\054\030\055\027\056\024\057\023" +
+    "\060\022\061\021\062\011\063\010\064\020\065\016\066" +
+    "\013\001\002\000\044\012\031\015\025\045\014\047\012" +
+    "\051\047\052\045\054\030\055\027\056\024\057\023\060" +
+    "\022\061\021\062\011\063\010\064\020\065\016\066\013" +
+    "\001\002\000\044\012\031\015\025\045\014\047\012\051" +
+    "\047\052\045\054\030\055\027\056\024\057\023\060\022" +
+    "\061\021\062\011\063\010\064\020\065\016\066\013\001" +
+    "\002\000\044\005\ufff1\012\ufff1\013\ufff1\014\ufff1\016\ufff1" +
+    "\017\133\020\ufff1\021\ufff1\022\ufff1\023\ufff1\024\ufff1\025" +
+    "\ufff1\026\ufff1\027\132\030\131\031\130\053\ufff1\001\002" +
+    "\000\044\012\031\015\025\045\014\047\012\051\047\052" +
+    "\045\054\030\055\027\056\024\057\023\060\022\061\021" +
+    "\062\011\063\010\064\020\065\016\066\013\001\002\000" +
+    "\044\012\031\015\025\045\014\047\012\051\047\052\045" +
+    "\054\030\055\027\056\024\057\023\060\022\061\021\062" +
+    "\011\063\010\064\020\065\016\066\013\001\002\000\044" +
+    "\012\031\015\025\045\014\047\012\051\047\052\045\054" +
+    "\030\055\027\056\024\057\023\060\022\061\021\062\011" +
+    "\063\010\064\020\065\016\066\013\001\002\000\044\012" +
+    "\031\015\025\045\014\047\012\051\047\052\045\054\030" +
+    "\055\027\056\024\057\023\060\022\061\021\062\011\063" +
+    "\010\064\020\065\016\066\013\001\002\000\044\005\uffe7" +
+    "\012\uffe7\013\uffe7\014\uffe7\016\uffe7\017\uffe7\020\uffe7\021" +
+    "\uffe7\022\uffe7\023\uffe7\024\uffe7\025\uffe7\026\uffe7\027\uffe7" +
+    "\030\uffe7\031\uffe7\053\uffe7\001\002\000\044\005\uffe9\012" +
+    "\uffe9\013\uffe9\014\uffe9\016\uffe9\017\uffe9\020\uffe9\021\uffe9" +
+    "\022\uffe9\023\uffe9\024\uffe9\025\uffe9\026\uffe9\027\uffe9\030" +
+    "\uffe9\031\uffe9\053\uffe9\001\002\000\044\005\uffe8\012\uffe8" +
+    "\013\uffe8\014\uffe8\016\uffe8\017\uffe8\020\uffe8\021\uffe8\022" +
+    "\uffe8\023\uffe8\024\uffe8\025\uffe8\026\uffe8\027\uffe8\030\uffe8" +
+    "\031\uffe8\053\uffe8\001\002\000\044\005\uffe6\012\uffe6\013" +
+    "\uffe6\014\uffe6\016\uffe6\017\uffe6\020\uffe6\021\uffe6\022\uffe6" +
+    "\023\uffe6\024\uffe6\025\uffe6\026\uffe6\027\uffe6\030\uffe6\031" +
+    "\uffe6\053\uffe6\001\002\000\044\005\ufff0\012\ufff0\013\ufff0" +
+    "\014\ufff0\016\ufff0\017\133\020\ufff0\021\ufff0\022\ufff0\023" +
+    "\ufff0\024\ufff0\025\ufff0\026\ufff0\027\132\030\131\031\130" +
+    "\053\ufff0\001\002\000\044\005\uffef\012\uffef\013\uffef\014" +
+    "\uffef\016\uffef\017\133\020\uffef\021\uffef\022\uffef\023\uffef" +
+    "\024\uffef\025\uffef\026\uffef\027\132\030\131\031\130\053" +
+    "\uffef\001\002\000\044\005\uffee\012\uffee\013\uffee\014\uffee" +
+    "\016\uffee\017\133\020\uffee\021\uffee\022\uffee\023\uffee\024" +
+    "\uffee\025\uffee\026\uffee\027\132\030\131\031\130\053\uffee" +
+    "\001\002\000\044\005\uffed\012\uffed\013\uffed\014\uffed\016" +
+    "\uffed\017\133\020\uffed\021\uffed\022\uffed\023\uffed\024\uffed" +
+    "\025\uffed\026\uffed\027\132\030\131\031\130\053\uffed\001" +
+    "\002\000\044\005\uffec\012\uffec\013\uffec\014\uffec\016\uffec" +
+    "\017\133\020\uffec\021\uffec\022\uffec\023\uffec\024\uffec\025" +
+    "\uffec\026\uffec\027\132\030\131\031\130\053\uffec\001\002" +
+    "\000\044\005\uffeb\012\uffeb\013\uffeb\014\uffeb\016\uffeb\017" +
+    "\133\020\uffeb\021\uffeb\022\uffeb\023\uffeb\024\uffeb\025\uffeb" +
+    "\026\uffeb\027\132\030\131\031\130\053\uffeb\001\002\000" +
+    "\100\005\uffd4\012\uffd4\013\uffd4\014\uffd4\015\uffd4\016\uffd4" +
+    "\017\uffd4\020\uffd4\021\uffd4\022\uffd4\023\uffd4\024\uffd4\025" +
+    "\uffd4\026\uffd4\027\uffd4\030\uffd4\031\uffd4\032\uffd4\033\uffd4" +
+    "\034\uffd4\035\uffd4\036\uffd4\037\uffd4\040\uffd4\041\uffd4\042" +
+    "\uffd4\043\uffd4\044\uffd4\046\uffd4\050\uffd4\053\uffd4\001\002" +
+    "\000\100\005\uffbd\012\uffbd\013\uffbd\014\uffbd\015\150\016" +
+    "\uffbd\017\uffbd\020\uffbd\021\uffbd\022\uffbd\023\uffbd\024\uffbd" +
+    "\025\uffbd\026\uffbd\027\uffbd\030\uffbd\031\uffbd\032\uffbd\033" +
+    "\uffbd\034\uffbd\035\uffbd\036\uffbd\037\uffbd\040\uffbd\041\uffbd" +
+    "\042\uffbd\043\uffbd\044\uffbd\046\uffbd\050\uffbd\053\uffbd\001" +
+    "\002\000\006\016\uffc5\065\152\001\002\000\004\016\155" +
+    "\001\002\000\006\016\uffc4\031\153\001\002\000\006\016" +
+    "\uffc5\065\152\001\002\000\004\016\uffc3\001\002\000\100" +
+    "\005\uffbe\012\uffbe\013\uffbe\014\uffbe\015\uffbe\016\uffbe\017" +
+    "\uffbe\020\uffbe\021\uffbe\022\uffbe\023\uffbe\024\uffbe\025\uffbe" +
+    "\026\uffbe\027\uffbe\030\uffbe\031\uffbe\032\uffbe\033\uffbe\034" +
+    "\uffbe\035\uffbe\036\uffbe\037\uffbe\040\uffbe\041\uffbe\042\uffbe" +
+    "\043\uffbe\044\uffbe\046\uffbe\050\uffbe\053\uffbe\001\002\000" +
+    "\100\005\uffc1\012\uffc1\013\uffc1\014\uffc1\015\uffc1\016\uffc1" +
+    "\017\uffc1\020\uffc1\021\uffc1\022\uffc1\023\uffc1\024\uffc1\025" +
+    "\uffc1\026\uffc1\027\uffc1\030\uffc1\031\uffc1\032\uffc1\033\uffc1" +
+    "\034\uffc1\035\uffc1\036\uffc1\037\uffc1\040\uffc1\041\uffc1\042" +
+    "\uffc1\043\uffc1\044\uffc1\046\uffc1\050\uffc1\053\uffc1\001\002" +
+    "\000\004\066\160\001\002\000\004\005\161\001\002\000" +
+    "\056\002\ufffb\006\ufffb\007\ufffb\010\ufffb\011\ufffb\012\ufffb" +
+    "\015\ufffb\045\ufffb\047\ufffb\051\ufffb\052\ufffb\054\ufffb\055" +
+    "\ufffb\056\ufffb\057\ufffb\060\ufffb\061\ufffb\062\ufffb\063\ufffb" +
+    "\064\ufffb\065\ufffb\066\ufffb\001\002\000\004\005\163\001" +
+    "\002\000\056\002\ufffa\006\ufffa\007\ufffa\010\ufffa\011\ufffa" +
+    "\012\ufffa\015\ufffa\045\ufffa\047\ufffa\051\ufffa\052\ufffa\054" +
+    "\ufffa\055\ufffa\056\ufffa\057\ufffa\060\ufffa\061\ufffa\062\ufffa" +
+    "\063\ufffa\064\ufffa\065\ufffa\066\ufffa\001\002\000\004\005" +
+    "\165\001\002\000\056\002\ufff9\006\ufff9\007\ufff9\010\ufff9" +
+    "\011\ufff9\012\ufff9\015\ufff9\045\ufff9\047\ufff9\051\ufff9\052" +
+    "\ufff9\054\ufff9\055\ufff9\056\ufff9\057\ufff9\060\ufff9\061\ufff9" +
+    "\062\ufff9\063\ufff9\064\ufff9\065\ufff9\066\ufff9\001\002\000" +
+    "\004\005\167\001\002\000\056\002\ufff8\006\ufff8\007\ufff8" +
+    "\010\ufff8\011\ufff8\012\ufff8\015\ufff8\045\ufff8\047\ufff8\051" +
+    "\ufff8\052\ufff8\054\ufff8\055\ufff8\056\ufff8\057\ufff8\060\ufff8" +
+    "\061\ufff8\062\ufff8\063\ufff8\064\ufff8\065\ufff8\066\ufff8\001" +
+    "\002\000\100\005\uffc0\012\uffc0\013\uffc0\014\uffc0\015\uffc0" +
+    "\016\uffc0\017\uffc0\020\uffc0\021\uffc0\022\uffc0\023\uffc0\024" +
+    "\uffc0\025\uffc0\026\uffc0\027\uffc0\030\uffc0\031\uffc0\032\uffc0" +
+    "\033\uffc0\034\uffc0\035\uffc0\036\uffc0\037\uffc0\040\uffc0\041" +
+    "\uffc0\042\uffc0\043\uffc0\044\uffc0\046\uffc0\050\uffc0\053\uffc0" +
+    "\001\002\000\044\005\uffe1\012\uffe1\013\uffe1\014\uffe1\016" +
+    "\uffe1\017\uffe1\020\uffe1\021\uffe1\022\uffe1\023\uffe1\024\uffe1" +
+    "\025\uffe1\026\uffe1\027\uffe1\030\uffe1\031\uffe1\053\uffe1\001" +
+    "\002\000\022\016\173\020\126\021\125\022\124\023\123" +
+    "\024\122\025\121\026\120\001\002\000\070\005\uffd8\012" +
+    "\uffd8\013\uffd8\014\uffd8\015\uffca\016\uffd8\017\uffd8\020\uffd8" +
+    "\021\uffd8\022\uffd8\023\uffd8\024\uffd8\025\uffd8\026\uffd8\027" +
+    "\uffd8\030\uffd8\031\uffd8\032\uffca\033\uffca\034\uffca\035\uffca" +
+    "\036\uffca\037\uffca\040\uffca\041\uffca\042\uffca\053\uffd8\001" +
+    "\002\000\044\005\uffe4\012\uffe4\013\uffe4\014\uffe4\016\uffe4" +
+    "\017\uffe4\020\uffe4\021\uffe4\022\uffe4\023\uffe4\024\uffe4\025" +
+    "\uffe4\026\uffe4\027\uffe4\030\uffe4\031\uffe4\053\uffe4\001\002" +
+    "\000\044\005\uffe3\012\uffe3\013\uffe3\014\uffe3\016\uffe3\017" +
+    "\uffe3\020\uffe3\021\uffe3\022\uffe3\023\uffe3\024\uffe3\025\uffe3" +
+    "\026\uffe3\027\uffe3\030\uffe3\031\uffe3\053\uffe3\001\002\000" +
+    "\044\005\uffe2\012\uffe2\013\uffe2\014\uffe2\016\uffe2\017\uffe2" +
     "\020\uffe2\021\uffe2\022\uffe2\023\uffe2\024\uffe2\025\uffe2\026" +
-    "\uffe2\034\060\035\uffe2\036\057\037\056\052\uffe2\001\002" +
-    "\000\050\005\uffdf\012\uffdf\013\uffdf\014\uffdf\015\uffdf\016" +
-    "\uffdf\017\uffdf\020\uffdf\021\uffdf\022\uffdf\023\uffdf\024\uffdf" +
-    "\025\uffdf\026\uffdf\034\060\035\uffdf\036\057\037\056\052" +
-    "\uffdf\001\002\000\050\005\uffde\012\uffde\013\uffde\014\uffde" +
-    "\015\uffde\016\uffde\017\uffde\020\uffde\021\uffde\022\uffde\023" +
-    "\uffde\024\uffde\025\uffde\026\uffde\034\060\035\uffde\036\057" +
-    "\037\056\052\uffde\001\002\000\010\035\115\042\066\043" +
-    "\065\001\002\000\042\005\uffdd\012\uffdd\013\uffdd\014\uffdd" +
-    "\015\uffdd\016\uffdd\017\uffdd\020\uffdd\021\uffdd\022\uffdd\023" +
-    "\uffdd\024\uffdd\025\uffdd\026\uffdd\035\uffdd\052\uffdd\001\002" +
-    "\000\076\005\uffcf\012\uffcf\013\uffcf\014\uffcf\015\uffcf\016" +
-    "\uffcf\017\uffcf\020\uffcf\021\uffcf\022\uffcf\023\uffcf\024\uffcf" +
-    "\025\uffcf\026\uffcf\027\uffcf\030\uffcf\031\uffcf\032\uffcf\033" +
-    "\uffcf\034\uffcf\035\uffcf\036\uffcf\037\uffcf\040\uffcf\041\uffcf" +
-    "\042\uffcf\043\uffcf\045\uffcf\047\uffcf\052\uffcf\001\002\000" +
-    "\044\012\030\034\040\044\017\046\013\050\011\051\047" +
-    "\053\044\054\027\055\026\056\024\057\023\060\022\061" +
-    "\012\062\010\063\021\064\016\065\015\001\002\000\044" +
-    "\012\030\034\040\044\017\046\013\050\011\051\047\053" +
-    "\044\054\027\055\026\056\024\057\023\060\022\061\012" +
-    "\062\010\063\021\064\016\065\015\001\002\000\044\012" +
-    "\030\034\040\044\017\046\013\050\011\051\047\053\044" +
-    "\054\027\055\026\056\024\057\023\060\022\061\012\062" +
-    "\010\063\021\064\016\065\015\001\002\000\044\012\030" +
-    "\034\040\044\017\046\013\050\011\051\047\053\044\054" +
-    "\027\055\026\056\024\057\023\060\022\061\012\062\010" +
-    "\063\021\064\016\065\015\001\002\000\076\005\uffcd\012" +
-    "\uffcd\013\uffcd\014\uffcd\015\uffcd\016\uffcd\017\uffcd\020\uffcd" +
-    "\021\uffcd\022\uffcd\023\uffcd\024\uffcd\025\uffcd\026\uffcd\027" +
-    "\uffcd\030\uffcd\031\uffcd\032\uffcd\033\uffcd\034\uffcd\035\uffcd" +
-    "\036\uffcd\037\uffcd\040\uffcd\041\uffcd\042\uffcd\043\uffcd\045" +
-    "\uffcd\047\uffcd\052\uffcd\001\002\000\044\012\030\034\040" +
-    "\044\017\046\013\050\011\051\047\053\044\054\027\055" +
-    "\026\056\024\057\023\060\022\061\012\062\010\063\021" +
-    "\064\016\065\015\001\002\000\044\012\030\034\040\044" +
-    "\017\046\013\050\011\051\047\053\044\054\027\055\026" +
-    "\056\024\057\023\060\022\061\012\062\010\063\021\064" +
-    "\016\065\015\001\002\000\044\012\030\034\040\044\017" +
-    "\046\013\050\011\051\047\053\044\054\027\055\026\056" +
-    "\024\057\023\060\022\061\012\062\010\063\021\064\016" +
-    "\065\015\001\002\000\042\005\ufff1\012\ufff1\013\ufff1\014" +
-    "\ufff1\015\ufff1\016\ufff1\017\ufff1\020\ufff1\021\ufff1\022\ufff1" +
-    "\023\133\024\132\025\131\026\130\035\ufff1\052\ufff1\001" +
-    "\002\000\044\012\030\034\040\044\017\046\013\050\011" +
-    "\051\047\053\044\054\027\055\026\056\024\057\023\060" +
-    "\022\061\012\062\010\063\021\064\016\065\015\001\002" +
-    "\000\044\012\030\034\040\044\017\046\013\050\011\051" +
-    "\047\053\044\054\027\055\026\056\024\057\023\060\022" +
-    "\061\012\062\010\063\021\064\016\065\015\001\002\000" +
-    "\044\012\030\034\040\044\017\046\013\050\011\051\047" +
-    "\053\044\054\027\055\026\056\024\057\023\060\022\061" +
-    "\012\062\010\063\021\064\016\065\015\001\002\000\044" +
-    "\012\030\034\040\044\017\046\013\050\011\051\047\053" +
-    "\044\054\027\055\026\056\024\057\023\060\022\061\012" +
-    "\062\010\063\021\064\016\065\015\001\002\000\042\005" +
-    "\uffec\012\uffec\013\uffec\014\uffec\015\uffec\016\uffec\017\uffec" +
-    "\020\uffec\021\uffec\022\uffec\023\uffec\024\uffec\025\uffec\026" +
-    "\uffec\035\uffec\052\uffec\001\002\000\042\005\uffeb\012\uffeb" +
-    "\013\uffeb\014\uffeb\015\uffeb\016\uffeb\017\uffeb\020\uffeb\021" +
-    "\uffeb\022\uffeb\023\uffeb\024\uffeb\025\uffeb\026\uffeb\035\uffeb" +
-    "\052\uffeb\001\002\000\042\005\uffea\012\uffea\013\uffea\014" +
-    "\uffea\015\uffea\016\uffea\017\uffea\020\uffea\021\uffea\022\uffea" +
-    "\023\uffea\024\uffea\025\uffea\026\uffea\035\uffea\052\uffea\001" +
-    "\002\000\042\005\uffe9\012\uffe9\013\uffe9\014\uffe9\015\uffe9" +
-    "\016\uffe9\017\uffe9\020\uffe9\021\uffe9\022\uffe9\023\uffe9\024" +
-    "\uffe9\025\uffe9\026\uffe9\035\uffe9\052\uffe9\001\002\000\042" +
-    "\005\ufff0\012\ufff0\013\ufff0\014\ufff0\015\ufff0\016\ufff0\017" +
-    "\ufff0\020\ufff0\021\ufff0\022\ufff0\023\133\024\132\025\131" +
-    "\026\130\035\ufff0\052\ufff0\001\002\000\042\005\uffef\012" +
-    "\uffef\013\uffef\014\uffef\015\uffef\016\uffef\017\uffef\020\uffef" +
-    "\021\uffef\022\uffef\023\133\024\132\025\131\026\130\035" +
-    "\uffef\052\uffef\001\002\000\042\005\ufff4\012\ufff4\013\ufff4" +
-    "\014\ufff4\015\ufff4\016\ufff4\017\ufff4\020\ufff4\021\ufff4\022" +
-    "\ufff4\023\133\024\132\025\131\026\130\035\ufff4\052\ufff4" +
-    "\001\002\000\042\005\uffee\012\uffee\013\uffee\014\uffee\015" +
-    "\uffee\016\uffee\017\uffee\020\uffee\021\uffee\022\uffee\023\133" +
-    "\024\132\025\131\026\130\035\uffee\052\uffee\001\002\000" +
-    "\042\005\ufff3\012\ufff3\013\ufff3\014\ufff3\015\ufff3\016\ufff3" +
-    "\017\ufff3\020\ufff3\021\ufff3\022\ufff3\023\133\024\132\025" +
-    "\131\026\130\035\ufff3\052\ufff3\001\002\000\042\005\ufff2" +
-    "\012\ufff2\013\ufff2\014\ufff2\015\ufff2\016\ufff2\017\ufff2\020" +
-    "\ufff2\021\ufff2\022\ufff2\023\133\024\132\025\131\026\130" +
-    "\035\ufff2\052\ufff2\001\002\000\076\005\uffd6\012\uffd6\013" +
-    "\uffd6\014\uffd6\015\uffd6\016\uffd6\017\uffd6\020\uffd6\021\uffd6" +
-    "\022\uffd6\023\uffd6\024\uffd6\025\uffd6\026\uffd6\027\uffd6\030" +
-    "\uffd6\031\uffd6\032\uffd6\033\uffd6\034\uffd6\035\uffd6\036\uffd6" +
-    "\037\uffd6\040\uffd6\041\uffd6\042\uffd6\043\uffd6\045\uffd6\047" +
-    "\uffd6\052\uffd6\001\002\000\076\005\uffc4\012\uffc4\013\uffc4" +
-    "\014\uffc4\015\uffc4\016\uffc4\017\uffc4\020\uffc4\021\uffc4\022" +
-    "\uffc4\023\uffc4\024\uffc4\025\uffc4\026\uffc4\027\uffc4\030\uffc4" +
-    "\031\uffc4\032\uffc4\033\uffc4\034\uffc4\035\uffc4\036\uffc4\037" +
-    "\uffc4\040\uffc4\041\uffc4\042\uffc4\043\uffc4\045\uffc4\047\uffc4" +
-    "\052\uffc4\001\002\000\022\014\122\015\120\016\117\017" +
-    "\126\020\125\021\124\022\121\035\151\001\002\000\066" +
-    "\005\uffdb\012\uffdb\013\uffdb\014\uffdb\015\uffdb\016\uffdb\017" +
-    "\uffdb\020\uffdb\021\uffdb\022\uffdb\023\uffdb\024\uffdb\025\uffdb" +
-    "\026\uffdb\027\uffcd\030\uffcd\031\uffcd\032\uffcd\033\uffcd\034" +
-    "\uffcd\035\uffdb\036\uffcd\037\uffcd\040\uffcd\041\uffcd\052\uffdb" +
-    "\001\002\000\004\065\153\001\002\000\004\005\154\001" +
-    "\002\000\056\002\ufffb\006\ufffb\007\ufffb\010\ufffb\011\ufffb" +
-    "\012\ufffb\034\ufffb\044\ufffb\046\ufffb\050\ufffb\051\ufffb\053" +
-    "\ufffb\054\ufffb\055\ufffb\056\ufffb\057\ufffb\060\ufffb\061\ufffb" +
-    "\062\ufffb\063\ufffb\064\ufffb\065\ufffb\001\002\000\004\005" +
-    "\156\001\002\000\056\002\ufffa\006\ufffa\007\ufffa\010\ufffa" +
-    "\011\ufffa\012\ufffa\034\ufffa\044\ufffa\046\ufffa\050\ufffa\051" +
-    "\ufffa\053\ufffa\054\ufffa\055\ufffa\056\ufffa\057\ufffa\060\ufffa" +
-    "\061\ufffa\062\ufffa\063\ufffa\064\ufffa\065\ufffa\001\002\000" +
-    "\004\005\160\001\002\000\056\002\ufff9\006\ufff9\007\ufff9" +
-    "\010\ufff9\011\ufff9\012\ufff9\034\ufff9\044\ufff9\046\ufff9\050" +
-    "\ufff9\051\ufff9\053\ufff9\054\ufff9\055\ufff9\056\ufff9\057\ufff9" +
-    "\060\ufff9\061\ufff9\062\ufff9\063\ufff9\064\ufff9\065\ufff9\001" +
-    "\002\000\004\005\162\001\002\000\056\002\ufff8\006\ufff8" +
-    "\007\ufff8\010\ufff8\011\ufff8\012\ufff8\034\ufff8\044\ufff8\046" +
-    "\ufff8\050\ufff8\051\ufff8\053\ufff8\054\ufff8\055\ufff8\056\ufff8" +
-    "\057\ufff8\060\ufff8\061\ufff8\062\ufff8\063\ufff8\064\ufff8\065" +
-    "\ufff8\001\002\000\076\005\uffc3\012\uffc3\013\uffc3\014\uffc3" +
-    "\015\uffc3\016\uffc3\017\uffc3\020\uffc3\021\uffc3\022\uffc3\023" +
-    "\uffc3\024\uffc3\025\uffc3\026\uffc3\027\uffc3\030\uffc3\031\uffc3" +
-    "\032\uffc3\033\uffc3\034\uffc3\035\uffc3\036\uffc3\037\uffc3\040" +
-    "\uffc3\041\uffc3\042\uffc3\043\uffc3\045\uffc3\047\uffc3\052\uffc3" +
-    "\001\002\000\042\005\uffe4\012\uffe4\013\uffe4\014\uffe4\015" +
-    "\uffe4\016\uffe4\017\uffe4\020\uffe4\021\uffe4\022\uffe4\023\uffe4" +
-    "\024\uffe4\025\uffe4\026\uffe4\035\uffe4\052\uffe4\001\002\000" +
-    "\042\005\uffe7\012\uffe7\013\uffe7\014\uffe7\015\uffe7\016\uffe7" +
-    "\017\uffe7\020\uffe7\021\uffe7\022\uffe7\023\uffe7\024\uffe7\025" +
-    "\uffe7\026\uffe7\035\uffe7\052\uffe7\001\002\000\042\005\uffe6" +
-    "\012\uffe6\013\uffe6\014\uffe6\015\uffe6\016\uffe6\017\uffe6\020" +
-    "\uffe6\021\uffe6\022\uffe6\023\uffe6\024\uffe6\025\uffe6\026\uffe6" +
-    "\035\uffe6\052\uffe6\001\002\000\042\005\uffe5\012\uffe5\013" +
-    "\uffe5\014\uffe5\015\uffe5\016\uffe5\017\uffe5\020\uffe5\021\uffe5" +
-    "\022\uffe5\023\uffe5\024\uffe5\025\uffe5\026\uffe5\035\uffe5\052" +
-    "\uffe5\001\002\000\004\045\171\001\002\000\076\005\uffd1" +
-    "\012\uffd1\013\uffd1\014\uffd1\015\uffd1\016\uffd1\017\uffd1\020" +
-    "\uffd1\021\uffd1\022\uffd1\023\uffd1\024\uffd1\025\uffd1\026\uffd1" +
-    "\027\uffd1\030\uffd1\031\uffd1\032\uffd1\033\uffd1\034\uffd1\035" +
-    "\uffd1\036\uffd1\037\uffd1\040\uffd1\041\uffd1\042\uffd1\043\uffd1" +
-    "\045\uffd1\047\uffd1\052\uffd1\001\002\000\006\064\uffb9\065" +
-    "\uffb9\001\002\000\056\002\ufff6\006\ufff6\007\ufff6\010\ufff6" +
-    "\011\ufff6\012\ufff6\034\ufff6\044\ufff6\046\ufff6\050\ufff6\051" +
-    "\ufff6\053\ufff6\054\ufff6\055\ufff6\056\ufff6\057\ufff6\060\ufff6" +
-    "\061\ufff6\062\ufff6\063\ufff6\064\ufff6\065\ufff6\001\002\000" +
-    "\006\005\203\013\204\001\002\000\004\063\176\001\002" +
-    "\000\006\025\177\052\200\001\002\000\004\063\201\001" +
-    "\002\000\006\005\uffb6\013\uffb6\001\002\000\004\052\202" +
-    "\001\002\000\006\005\uffb5\013\uffb5\001\002\000\056\002" +
-    "\ufff7\006\ufff7\007\ufff7\010\ufff7\011\ufff7\012\ufff7\034\ufff7" +
-    "\044\ufff7\046\ufff7\050\ufff7\051\ufff7\053\ufff7\054\ufff7\055" +
-    "\ufff7\056\ufff7\057\ufff7\060\ufff7\061\ufff7\062\ufff7\063\ufff7" +
-    "\064\ufff7\065\ufff7\001\002\000\056\002\ufff5\006\ufff5\007" +
-    "\ufff5\010\ufff5\011\ufff5\012\ufff5\034\ufff5\044\ufff5\046\ufff5" +
-    "\050\ufff5\051\ufff5\053\ufff5\054\ufff5\055\ufff5\056\ufff5\057" +
-    "\ufff5\060\ufff5\061\ufff5\062\ufff5\063\ufff5\064\ufff5\065\ufff5" +
-    "\001\002\000\004\047\206\001\002\000\076\005\uffd0\012" +
-    "\uffd0\013\uffd0\014\uffd0\015\uffd0\016\uffd0\017\uffd0\020\uffd0" +
-    "\021\uffd0\022\uffd0\023\uffd0\024\uffd0\025\uffd0\026\uffd0\027" +
-    "\uffd0\030\uffd0\031\uffd0\032\uffd0\033\uffd0\034\uffd0\035\uffd0" +
-    "\036\uffd0\037\uffd0\040\uffd0\041\uffd0\042\uffd0\043\uffd0\045" +
-    "\uffd0\047\uffd0\052\uffd0\001\002\000\076\005\uffc0\012\uffc0" +
-    "\013\uffc0\014\uffc0\015\uffc0\016\uffc0\017\uffc0\020\uffc0\021" +
-    "\uffc0\022\uffc0\023\uffc0\024\uffc0\025\uffc0\026\uffc0\027\uffc0" +
-    "\030\uffc0\031\uffc0\032\uffc0\033\uffc0\034\210\035\uffc0\036" +
-    "\uffc0\037\uffc0\040\uffc0\041\uffc0\042\uffc0\043\uffc0\045\uffc0" +
-    "\047\uffc0\052\uffc0\001\002\000\006\035\uffc8\064\212\001" +
-    "\002\000\004\035\215\001\002\000\006\026\213\035\uffc7" +
-    "\001\002\000\006\035\uffc8\064\212\001\002\000\004\035" +
-    "\uffc6\001\002\000\076\005\uffc1\012\uffc1\013\uffc1\014\uffc1" +
-    "\015\uffc1\016\uffc1\017\uffc1\020\uffc1\021\uffc1\022\uffc1\023" +
-    "\uffc1\024\uffc1\025\uffc1\026\uffc1\027\uffc1\030\uffc1\031\uffc1" +
-    "\032\uffc1\033\uffc1\034\uffc1\035\uffc1\036\uffc1\037\uffc1\040" +
-    "\uffc1\041\uffc1\042\uffc1\043\uffc1\045\uffc1\047\uffc1\052\uffc1" +
-    "\001\002\000\004\005\217\001\002\000\056\002\ufffe\006" +
-    "\ufffe\007\ufffe\010\ufffe\011\ufffe\012\ufffe\034\ufffe\044\ufffe" +
-    "\046\ufffe\050\ufffe\051\ufffe\053\ufffe\054\ufffe\055\ufffe\056" +
-    "\ufffe\057\ufffe\060\ufffe\061\ufffe\062\ufffe\063\ufffe\064\ufffe" +
-    "\065\ufffe\001\002\000\004\002\001\001\002\000\056\002" +
-    "\000\006\037\007\034\010\032\011\031\012\030\034\040" +
-    "\044\017\046\013\050\011\051\047\053\044\054\027\055" +
-    "\026\056\024\057\023\060\022\061\012\062\010\063\021" +
-    "\064\016\065\015\001\002" });
+    "\uffe2\027\uffe2\030\uffe2\031\uffe2\053\uffe2\001\002\000\006" +
+    "\065\uffb6\066\uffb6\001\002\000\060\002\ufff4\006\ufff4\007" +
+    "\ufff4\010\ufff4\011\ufff4\012\ufff4\014\210\015\ufff4\045\ufff4" +
+    "\047\ufff4\051\ufff4\052\ufff4\054\ufff4\055\ufff4\056\ufff4\057" +
+    "\ufff4\060\ufff4\061\ufff4\062\ufff4\063\ufff4\064\ufff4\065\ufff4" +
+    "\066\ufff4\001\002\000\010\005\ufff4\013\ufff4\014\210\001" +
+    "\002\000\004\064\203\001\002\000\006\017\205\053\204" +
+    "\001\002\000\010\005\uffb3\013\uffb3\014\uffb3\001\002\000" +
+    "\004\064\206\001\002\000\004\053\207\001\002\000\010" +
+    "\005\uffb2\013\uffb2\014\uffb2\001\002\000\004\015\214\001" +
+    "\002\000\006\005\212\013\213\001\002\000\056\002\ufff7" +
+    "\006\ufff7\007\ufff7\010\ufff7\011\ufff7\012\ufff7\015\ufff7\045" +
+    "\ufff7\047\ufff7\051\ufff7\052\ufff7\054\ufff7\055\ufff7\056\ufff7" +
+    "\057\ufff7\060\ufff7\061\ufff7\062\ufff7\063\ufff7\064\ufff7\065" +
+    "\ufff7\066\ufff7\001\002\000\056\002\ufff5\006\ufff5\007\ufff5" +
+    "\010\ufff5\011\ufff5\012\ufff5\015\ufff5\045\ufff5\047\ufff5\051" +
+    "\ufff5\052\ufff5\054\ufff5\055\ufff5\056\ufff5\057\ufff5\060\ufff5" +
+    "\061\ufff5\062\ufff5\063\ufff5\064\ufff5\065\ufff5\066\ufff5\001" +
+    "\002\000\004\064\215\001\002\000\006\016\216\017\217" +
+    "\001\002\000\062\002\ufff3\005\ufff3\006\ufff3\007\ufff3\010" +
+    "\ufff3\011\ufff3\012\ufff3\013\ufff3\015\ufff3\045\ufff3\047\ufff3" +
+    "\051\ufff3\052\ufff3\054\ufff3\055\ufff3\056\ufff3\057\ufff3\060" +
+    "\ufff3\061\ufff3\062\ufff3\063\ufff3\064\ufff3\065\ufff3\066\ufff3" +
+    "\001\002\000\004\064\220\001\002\000\004\016\221\001" +
+    "\002\000\062\002\ufff2\005\ufff2\006\ufff2\007\ufff2\010\ufff2" +
+    "\011\ufff2\012\ufff2\013\ufff2\015\ufff2\045\ufff2\047\ufff2\051" +
+    "\ufff2\052\ufff2\054\ufff2\055\ufff2\056\ufff2\057\ufff2\060\ufff2" +
+    "\061\ufff2\062\ufff2\063\ufff2\064\ufff2\065\ufff2\066\ufff2\001" +
+    "\002\000\056\002\ufff6\006\ufff6\007\ufff6\010\ufff6\011\ufff6" +
+    "\012\ufff6\015\ufff6\045\ufff6\047\ufff6\051\ufff6\052\ufff6\054" +
+    "\ufff6\055\ufff6\056\ufff6\057\ufff6\060\ufff6\061\ufff6\062\ufff6" +
+    "\063\ufff6\064\ufff6\065\ufff6\066\ufff6\001\002\000\004\046" +
+    "\224\001\002\000\100\005\uffce\012\uffce\013\uffce\014\uffce" +
+    "\015\uffce\016\uffce\017\uffce\020\uffce\021\uffce\022\uffce\023" +
+    "\uffce\024\uffce\025\uffce\026\uffce\027\uffce\030\uffce\031\uffce" +
+    "\032\uffce\033\uffce\034\uffce\035\uffce\036\uffce\037\uffce\040" +
+    "\uffce\041\uffce\042\uffce\043\uffce\044\uffce\046\uffce\050\uffce" +
+    "\053\uffce\001\002\000\004\050\226\001\002\000\100\005" +
+    "\uffcd\012\uffcd\013\uffcd\014\uffcd\015\uffcd\016\uffcd\017\uffcd" +
+    "\020\uffcd\021\uffcd\022\uffcd\023\uffcd\024\uffcd\025\uffcd\026" +
+    "\uffcd\027\uffcd\030\uffcd\031\uffcd\032\uffcd\033\uffcd\034\uffcd" +
+    "\035\uffcd\036\uffcd\037\uffcd\040\uffcd\041\uffcd\042\uffcd\043" +
+    "\uffcd\044\uffcd\046\uffcd\050\uffcd\053\uffcd\001\002\000\004" +
+    "\005\230\001\002\000\056\002\ufffe\006\ufffe\007\ufffe\010" +
+    "\ufffe\011\ufffe\012\ufffe\015\ufffe\045\ufffe\047\ufffe\051\ufffe" +
+    "\052\ufffe\054\ufffe\055\ufffe\056\ufffe\057\ufffe\060\ufffe\061" +
+    "\ufffe\062\ufffe\063\ufffe\064\ufffe\065\ufffe\066\ufffe\001\002" +
+    "\000\004\002\001\001\002\000\056\002\000\006\040\007" +
+    "\035\010\033\011\032\012\031\015\025\045\014\047\012" +
+    "\051\047\052\045\054\030\055\027\056\024\057\023\060" +
+    "\022\061\021\062\011\063\010\064\020\065\016\066\013" +
+    "\001\002" });
 
   /** Access to parse-action table. */
   public short[][] action_table() {return _action_table;}
@@ -436,99 +461,102 @@ public class parser extends java_cup.runtime.lr_parser {
   /** <code>reduce_goto</code> table. */
   protected static final short[][] _reduce_table = 
     unpackFromStrings(new String[] {
-    "\000\217\000\010\003\004\004\003\005\006\001\001\000" +
-    "\004\005\220\001\001\000\002\001\001\000\002\001\001" +
-    "\000\032\006\024\007\013\010\035\011\034\012\032\013" +
-    "\041\014\047\015\045\016\044\021\017\022\042\023\040" +
-    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\022\013\061\014\047\015\045\016\044\017\204" +
-    "\021\017\022\042\023\040\001\001\000\004\024\173\001" +
-    "\001\000\002\001\001\000\002\001\001\000\022\013\061" +
-    "\014\047\015\045\016\044\017\167\021\017\022\042\023" +
-    "\040\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\022\012\166\013\041\014\047\015\045\016" +
-    "\044\021\017\022\042\023\040\001\001\000\022\012\165" +
-    "\013\041\014\047\015\045\016\044\021\017\022\042\023" +
-    "\040\001\001\000\002\001\001\000\022\012\164\013\041" +
-    "\014\047\015\045\016\044\021\017\022\042\023\040\001" +
-    "\001\000\022\012\163\013\041\014\047\015\045\016\044" +
-    "\021\017\022\042\023\040\001\001\000\002\001\001\000" +
-    "\006\021\160\023\040\001\001\000\002\001\001\000\002" +
-    "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\004\023\151\001\001\000\032\007\147\010\035" +
-    "\011\034\012\032\013\076\014\047\015\045\016\044\017" +
-    "\075\021\017\022\042\023\040\001\001\000\002\001\001" +
+    "\000\230\000\010\003\004\004\003\005\006\001\001\000" +
+    "\004\005\231\001\001\000\002\001\001\000\002\001\001" +
+    "\000\032\006\025\010\014\011\036\012\035\013\033\014" +
+    "\042\015\047\016\045\017\043\022\016\023\041\024\040" +
+    "\001\001\000\002\001\001\000\002\001\001\000\022\014" +
+    "\061\015\047\016\045\017\043\020\224\022\016\023\041" +
+    "\024\040\001\001\000\002\001\001\000\022\014\061\015" +
+    "\047\016\045\017\043\020\222\022\016\023\041\024\040" +
+    "\001\001\000\004\025\200\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\002\001\001\000\022" +
+    "\013\175\014\042\015\047\016\045\017\043\022\016\023" +
+    "\041\024\040\001\001\000\022\013\174\014\042\015\047" +
+    "\016\045\017\043\022\016\023\041\024\040\001\001\000" +
+    "\022\013\173\014\042\015\047\016\045\017\043\022\016" +
+    "\023\041\024\040\001\001\000\032\010\171\011\036\012" +
+    "\035\013\033\014\076\015\047\016\045\017\043\020\075" +
+    "\022\016\023\041\024\040\001\001\000\002\001\001\000" +
+    "\022\013\170\014\042\015\047\016\045\017\043\022\016" +
+    "\023\041\024\040\001\001\000\002\001\001\000\002\001" +
+    "\001\000\006\022\165\024\040\001\001\000\002\001\001" +
+    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\004\024\156\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\020\013\053\014\047\015\145\016\044\021" +
-    "\017\022\042\023\040\001\001\000\020\013\053\014\047" +
-    "\015\054\016\044\021\017\022\042\023\040\001\001\000" +
-    "\032\007\074\010\035\011\034\012\032\013\076\014\047" +
-    "\015\045\016\044\017\075\021\017\022\042\023\040\001" +
-    "\001\000\002\001\001\000\002\001\001\000\020\013\053" +
-    "\014\073\015\045\016\044\021\017\022\042\023\040\001" +
-    "\001\000\020\013\053\014\072\015\045\016\044\021\017" +
-    "\022\042\023\040\001\001\000\022\013\061\014\047\015" +
-    "\045\016\044\017\060\021\017\022\042\023\040\001\001" +
-    "\000\002\001\001\000\002\001\001\000\022\013\061\014" +
-    "\047\015\045\016\044\017\063\021\017\022\042\023\040" +
-    "\001\001\000\002\001\001\000\022\013\061\014\047\015" +
-    "\045\016\044\017\070\021\017\022\042\023\040\001\001" +
-    "\000\022\013\061\014\047\015\045\016\044\017\066\021" +
-    "\017\022\042\023\040\001\001\000\002\001\001\000\002" +
+    "\001\001\000\020\014\053\015\047\016\145\017\043\022" +
+    "\016\023\041\024\040\001\001\000\020\014\053\015\047" +
+    "\016\054\017\043\022\016\023\041\024\040\001\001\000" +
+    "\032\010\074\011\036\012\035\013\033\014\076\015\047" +
+    "\016\045\017\043\020\075\022\016\023\041\024\040\001" +
+    "\001\000\002\001\001\000\002\001\001\000\020\014\053" +
+    "\015\073\016\045\017\043\022\016\023\041\024\040\001" +
+    "\001\000\020\014\053\015\072\016\045\017\043\022\016" +
+    "\023\041\024\040\001\001\000\022\014\061\015\047\016" +
+    "\045\017\043\020\060\022\016\023\041\024\040\001\001" +
+    "\000\002\001\001\000\002\001\001\000\022\014\061\015" +
+    "\047\016\045\017\043\020\063\022\016\023\041\024\040" +
+    "\001\001\000\002\001\001\000\022\014\061\015\047\016" +
+    "\045\017\043\020\070\022\016\023\041\024\040\001\001" +
+    "\000\022\014\061\015\047\016\045\017\043\020\066\022" +
+    "\016\023\041\024\040\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
-    "\000\002\001\001\000\002\001\001\000\022\013\061\014" +
-    "\047\015\045\016\044\017\113\021\017\022\042\023\040" +
-    "\001\001\000\020\013\112\014\047\015\045\016\044\021" +
-    "\017\022\042\023\040\001\001\000\020\013\111\014\047" +
-    "\015\045\016\044\021\017\022\042\023\040\001\001\000" +
-    "\020\013\110\014\047\015\045\016\044\021\017\022\042" +
-    "\023\040\001\001\000\020\013\107\014\047\015\045\016" +
-    "\044\021\017\022\042\023\040\001\001\000\020\013\106" +
-    "\014\047\015\045\016\044\021\017\022\042\023\040\001" +
+    "\000\002\001\001\000\020\014\114\015\047\016\045\017" +
+    "\043\022\016\023\041\024\040\001\001\000\020\014\113" +
+    "\015\047\016\045\017\043\022\016\023\041\024\040\001" +
+    "\001\000\020\014\112\015\047\016\045\017\043\022\016" +
+    "\023\041\024\040\001\001\000\020\014\111\015\047\016" +
+    "\045\017\043\022\016\023\041\024\040\001\001\000\020" +
+    "\014\110\015\047\016\045\017\043\022\016\023\041\024" +
+    "\040\001\001\000\002\001\001\000\022\014\061\015\047" +
+    "\016\045\017\043\020\106\022\016\023\041\024\040\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\026\010\144\011\034" +
-    "\012\032\013\041\014\047\015\045\016\044\021\017\022" +
-    "\042\023\040\001\001\000\026\010\143\011\034\012\032" +
-    "\013\041\014\047\015\045\016\044\021\017\022\042\023" +
-    "\040\001\001\000\026\010\142\011\034\012\032\013\041" +
-    "\014\047\015\045\016\044\021\017\022\042\023\040\001" +
-    "\001\000\026\010\141\011\034\012\032\013\041\014\047" +
-    "\015\045\016\044\021\017\022\042\023\040\001\001\000" +
-    "\002\001\001\000\026\010\140\011\034\012\032\013\041" +
-    "\014\047\015\045\016\044\021\017\022\042\023\040\001" +
-    "\001\000\026\010\137\011\034\012\032\013\041\014\047" +
-    "\015\045\016\044\021\017\022\042\023\040\001\001\000" +
-    "\026\010\126\011\034\012\032\013\041\014\047\015\045" +
-    "\016\044\021\017\022\042\023\040\001\001\000\002\001" +
-    "\001\000\024\011\136\012\032\013\041\014\047\015\045" +
-    "\016\044\021\017\022\042\023\040\001\001\000\024\011" +
-    "\135\012\032\013\041\014\047\015\045\016\044\021\017" +
-    "\022\042\023\040\001\001\000\024\011\134\012\032\013" +
-    "\041\014\047\015\045\016\044\021\017\022\042\023\040" +
-    "\001\001\000\024\011\133\012\032\013\041\014\047\015" +
-    "\045\016\044\021\017\022\042\023\040\001\001\000\002" +
+    "\002\001\001\000\002\001\001\000\002\001\001\000\026" +
+    "\011\144\012\035\013\033\014\042\015\047\016\045\017" +
+    "\043\022\016\023\041\024\040\001\001\000\026\011\143" +
+    "\012\035\013\033\014\042\015\047\016\045\017\043\022" +
+    "\016\023\041\024\040\001\001\000\026\011\142\012\035" +
+    "\013\033\014\042\015\047\016\045\017\043\022\016\023" +
+    "\041\024\040\001\001\000\026\011\141\012\035\013\033" +
+    "\014\042\015\047\016\045\017\043\022\016\023\041\024" +
+    "\040\001\001\000\026\011\140\012\035\013\033\014\042" +
+    "\015\047\016\045\017\043\022\016\023\041\024\040\001" +
+    "\001\000\026\011\137\012\035\013\033\014\042\015\047" +
+    "\016\045\017\043\022\016\023\041\024\040\001\001\000" +
+    "\026\011\126\012\035\013\033\014\042\015\047\016\045" +
+    "\017\043\022\016\023\041\024\040\001\001\000\002\001" +
+    "\001\000\024\012\136\013\033\014\042\015\047\016\045" +
+    "\017\043\022\016\023\041\024\040\001\001\000\024\012" +
+    "\135\013\033\014\042\015\047\016\045\017\043\022\016" +
+    "\023\041\024\040\001\001\000\024\012\134\013\033\014" +
+    "\042\015\047\016\045\017\043\022\016\023\041\024\040" +
+    "\001\001\000\024\012\133\013\033\014\042\015\047\016" +
+    "\045\017\043\022\016\023\041\024\040\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\004\021\150\001\001" +
+    "\000\002\001\001\000\002\001\001\000\004\021\153\001" +
+    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
-    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
+    "\002\001\001\000\004\007\221\001\001\000\004\007\210" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
     "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
     "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
     "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
     "\001\001\000\002\001\001\000\002\001\001\000\002\001" +
-    "\001\000\002\001\001\000\004\020\210\001\001\000\002" +
-    "\001\001\000\002\001\001\000\004\020\213\001\001\000" +
-    "\002\001\001\000\002\001\001\000\002\001\001\000\002" +
-    "\001\001\000\002\001\001\000\032\006\024\007\013\010" +
-    "\035\011\034\012\032\013\041\014\047\015\045\016\044" +
-    "\021\017\022\042\023\040\001\001" });
+    "\001\000\002\001\001\000\002\001\001\000\002\001\001" +
+    "\000\002\001\001\000\002\001\001\000\002\001\001\000" +
+    "\002\001\001\000\002\001\001\000\032\006\025\010\014" +
+    "\011\036\012\035\013\033\014\042\015\047\016\045\017" +
+    "\043\022\016\023\041\024\040\001\001" });
 
   /** Access to <code>reduce_goto</code> table. */
   public short[][] reduce_table() {return _reduce_table;}
@@ -612,696 +640,729 @@ class CUP$parser$actions {
       switch (CUP$parser$act_num)
         {
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 76: // TruthValue ::= _SYMB_38 _DOUBLE_ _SYMB_17 _DOUBLE_ _SYMB_38 
+          case 79: // TruthValue ::= _SYMB_39 _DOUBLE_ _SYMB_11 _DOUBLE_ _SYMB_39 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue RESULT = null;
 		Double p_2 = (Double)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
 		Double p_4 = (Double)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TruthFC(p_2,p_4); 
-              CUP$parser$result = new java_cup.runtime.Symbol(18/*TruthValue*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(19/*TruthValue*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 75: // TruthValue ::= _SYMB_38 _DOUBLE_ _SYMB_38 
+          case 78: // TruthValue ::= _SYMB_39 _DOUBLE_ _SYMB_39 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue RESULT = null;
 		Double p_2 = (Double)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TruthF(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(18/*TruthValue*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(19/*TruthValue*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 74: // TruthValue ::= 
+          case 77: // TruthValue ::= 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue RESULT = null;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TruthE(); 
-              CUP$parser$result = new java_cup.runtime.Symbol(18/*TruthValue*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(19/*TruthValue*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 73: // NSPrefix ::= _SYMB_37 
+          case 76: // NSPrefix ::= _SYMB_38 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix RESULT = null;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix2(); 
-              CUP$parser$result = new java_cup.runtime.Symbol(17/*NSPrefix*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(18/*NSPrefix*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 72: // NSPrefix ::= _IDENT_ _SYMB_37 
+          case 75: // NSPrefix ::= _IDENT_ _SYMB_38 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix RESULT = null;
 		String p_1 = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix1(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(17/*NSPrefix*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(18/*NSPrefix*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 71: // Literal ::= _SYMB_39 
+          case 74: // Literal ::= _SYMB_40 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Literal RESULT = null;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitFalse(); 
-              CUP$parser$result = new java_cup.runtime.Symbol(16/*Literal*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(17/*Literal*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 70: // Literal ::= _SYMB_44 
+          case 73: // Literal ::= _SYMB_45 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Literal RESULT = null;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitTrue(); 
-              CUP$parser$result = new java_cup.runtime.Symbol(16/*Literal*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(17/*Literal*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 69: // Literal ::= _STRING_ 
+          case 72: // Literal ::= _STRING_ 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Literal RESULT = null;
 		String p_1 = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitString(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(16/*Literal*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(17/*Literal*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 68: // Literal ::= _DOUBLE_ 
+          case 71: // Literal ::= _DOUBLE_ 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Literal RESULT = null;
 		Double p_1 = (Double)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitDbl(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(16/*Literal*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(17/*Literal*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 67: // Literal ::= _INTEGER_ 
+          case 70: // Literal ::= _INTEGER_ 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Literal RESULT = null;
 		Integer p_1 = (Integer)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitInt(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(16/*Literal*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(17/*Literal*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 66: // Literal ::= URIRef 
+          case 69: // Literal ::= URIRef 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Literal RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.URIRef p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.URIRef)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitURI(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(16/*Literal*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(17/*Literal*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 65: // Literal ::= _SYMB_36 _IDENT_ 
+          case 68: // Literal ::= _SYMB_37 _IDENT_ 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Literal RESULT = null;
 		String p_2 = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitSVarI(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(16/*Literal*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(17/*Literal*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 64: // Literal ::= _SYMB_36 _IDENT_ _SYMB_24 ListIdent _SYMB_25 
+          case 67: // Literal ::= _SYMB_37 _IDENT_ _SYMB_9 ListIdent _SYMB_10 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Literal RESULT = null;
 		String p_2 = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent p_4 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitSVarD(p_2,p_4); 
-              CUP$parser$result = new java_cup.runtime.Symbol(16/*Literal*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(17/*Literal*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 63: // Literal ::= _SYMB_6 
+          case 66: // Literal ::= _SYMB_6 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Literal RESULT = null;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitQVarAn(); 
-              CUP$parser$result = new java_cup.runtime.Symbol(16/*Literal*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(17/*Literal*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 62: // Literal ::= _SYMB_6 _IDENT_ 
+          case 65: // Literal ::= _SYMB_6 _IDENT_ 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Literal RESULT = null;
 		String p_2 = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.LitQVar(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(16/*Literal*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(17/*Literal*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 61: // URIRef ::= NSPrefix _IDENT_ 
+          case 64: // URIRef ::= NSPrefix _IDENT_ 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.URIRef RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.NSPrefix)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		String p_2 = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.URICur(p_1,p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(15/*URIRef*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(16/*URIRef*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 60: // URIRef ::= URILit 
+          case 63: // URIRef ::= URILit 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.URIRef RESULT = null;
 		String p_1 = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.URIFul(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(15/*URIRef*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(16/*URIRef*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 59: // ListIdent ::= _IDENT_ _SYMB_18 ListIdent 
+          case 62: // ListIdent ::= _IDENT_ _SYMB_21 ListIdent 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent RESULT = null;
 		String p_1 = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = p_3; p_3.addFirst(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(14/*ListIdent*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(15/*ListIdent*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 58: // ListIdent ::= _IDENT_ 
+          case 61: // ListIdent ::= _IDENT_ 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent RESULT = null;
 		String p_1 = (String)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent(); RESULT.addLast(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(14/*ListIdent*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(15/*ListIdent*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 57: // ListIdent ::= 
+          case 60: // ListIdent ::= 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent RESULT = null;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.ListIdent(); 
-              CUP$parser$result = new java_cup.runtime.Symbol(14/*ListIdent*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(15/*ListIdent*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 56: // ListTerm ::= Term _SYMB_18 ListTerm 
+          case 59: // ListTerm ::= Term _SYMB_21 ListTerm 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = p_3; p_3.addFirst(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(13/*ListTerm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(14/*ListTerm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 55: // ListTerm ::= Term 
+          case 58: // ListTerm ::= Term 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm(); RESULT.addLast(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(13/*ListTerm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(14/*ListTerm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 54: // ListTerm ::= 
+          case 57: // ListTerm ::= 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm RESULT = null;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm(); 
-              CUP$parser$result = new java_cup.runtime.Symbol(13/*ListTerm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(14/*ListTerm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 53: // Term3 ::= _SYMB_24 Term _SYMB_25 
+          case 56: // Term3 ::= _SYMB_9 Term _SYMB_10 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = p_2; 
-              CUP$parser$result = new java_cup.runtime.Symbol(12/*Term3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(13/*Term3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 52: // Term3 ::= _SYMB_24 Stm _SYMB_25 
+          case 55: // Term3 ::= _SYMB_9 Stm _SYMB_10 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmStm(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(12/*Term3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(13/*Term3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 51: // Term3 ::= Literal 
+          case 54: // Term3 ::= Literal 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Literal p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Literal)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmLit(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(12/*Term3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(13/*Term3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 50: // Term3 ::= _SYMB_24 ListTerm _SYMB_25 
+          case 53: // Term3 ::= _SYMB_9 ListTerm _SYMB_10 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmProd(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(12/*Term3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(13/*Term3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 49: // Term3 ::= _SYMB_34 ListTerm _SYMB_35 
+          case 52: // Term3 ::= _SYMB_35 ListTerm _SYMB_36 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInSet(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(12/*Term3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(13/*Term3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 48: // Term3 ::= _SYMB_32 ListTerm _SYMB_33 
+          case 51: // Term3 ::= _SYMB_33 ListTerm _SYMB_34 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExSet(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(12/*Term3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(13/*Term3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 47: // Term2 ::= Term3 
+          case 50: // Term2 ::= Term3 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = p_1; 
-              CUP$parser$result = new java_cup.runtime.Symbol(11/*Term2*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(12/*Term2*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 46: // Term2 ::= Term _SYMB_24 ListTerm _SYMB_31 ListTerm _SYMB_25 
+          case 49: // Term2 ::= Term _SYMB_9 ListTerm _SYMB_32 ListTerm _SYMB_10 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm p_5 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInImg(p_1,p_3,p_5); 
-              CUP$parser$result = new java_cup.runtime.Symbol(11/*Term2*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(12/*Term2*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 45: // Term2 ::= Term _SYMB_24 ListTerm _SYMB_30 ListTerm _SYMB_25 
+          case 48: // Term2 ::= Term _SYMB_9 ListTerm _SYMB_31 ListTerm _SYMB_10 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-5)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm p_5 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExImg(p_1,p_3,p_5); 
-              CUP$parser$result = new java_cup.runtime.Symbol(11/*Term2*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(12/*Term2*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 44: // Term1 ::= Term2 
+          case 47: // Term1 ::= Term2 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = p_1; 
-              CUP$parser$result = new java_cup.runtime.Symbol(10/*Term1*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(11/*Term1*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 43: // Term1 ::= Term1 _SYMB_29 Term2 
+          case 46: // Term1 ::= Term1 _SYMB_30 Term2 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInDif(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(10/*Term1*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(11/*Term1*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 42: // Term1 ::= Term1 _SYMB_28 Term2 
+          case 45: // Term1 ::= Term1 _SYMB_29 Term2 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExDif(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(10/*Term1*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(11/*Term1*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 41: // Term ::= Term1 
+          case 44: // Term ::= Term1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = p_1; 
-              CUP$parser$result = new java_cup.runtime.Symbol(9/*Term*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(10/*Term*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 40: // Term ::= Term _SYMB_27 Term1 
+          case 43: // Term ::= Term _SYMB_28 Term1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmInInt(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(9/*Term*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(10/*Term*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 39: // Term ::= Term _SYMB_26 Term1 
+          case 42: // Term ::= Term _SYMB_27 Term1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Term RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.TrmExInt(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(9/*Term*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(10/*Term*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 38: // Stm3 ::= _SYMB_24 Stm _SYMB_25 
+          case 41: // Stm3 ::= _SYMB_9 Stm _SYMB_10 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = p_2; 
-              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(9/*Stm3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 37: // Stm3 ::= Term 
+          case 40: // Stm3 ::= Term 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmTrm(p_1); 
-              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(9/*Stm3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 36: // Stm3 ::= Term _SYMB_24 ListTerm _SYMB_25 
+          case 39: // Stm3 ::= Term _SYMB_9 ListTerm _SYMB_10 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.ListTerm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmOp(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(9/*Stm3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 35: // Stm3 ::= Term _SYMB_23 Term 
+          case 38: // Stm3 ::= Term _SYMB_26 Term 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmInPp(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(9/*Stm3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 34: // Stm3 ::= Term _SYMB_22 Term 
+          case 37: // Stm3 ::= Term _SYMB_25 Term 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmProp(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(9/*Stm3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 33: // Stm3 ::= Term _SYMB_21 Term 
+          case 36: // Stm3 ::= Term _SYMB_24 Term 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmInst(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(9/*Stm3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 32: // Stm3 ::= Term _SYMB_20 Term 
+          case 35: // Stm3 ::= Term _SYMB_23 Term 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmSim(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(9/*Stm3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 31: // Stm3 ::= Term _SYMB_19 Term 
+          case 34: // Stm3 ::= Term _SYMB_22 Term 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Term p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Term)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmInher(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm3*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(9/*Stm3*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 30: // Stm2 ::= Stm3 
+          case 33: // Stm2 ::= Stm3 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = p_1; 
-              CUP$parser$result = new java_cup.runtime.Symbol(7/*Stm2*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm2*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 29: // Stm2 ::= _SYMB_40 Stm3 
+          case 32: // Stm2 ::= _SYMB_41 Stm3 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmFut(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(7/*Stm2*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm2*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 28: // Stm2 ::= _SYMB_43 Stm3 
+          case 31: // Stm2 ::= _SYMB_44 Stm3 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmPres(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(7/*Stm2*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm2*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 27: // Stm2 ::= _SYMB_42 Stm3 
+          case 30: // Stm2 ::= _SYMB_43 Stm3 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmPst(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(7/*Stm2*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm2*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 26: // Stm2 ::= _SYMB_41 Stm3 
+          case 29: // Stm2 ::= _SYMB_42 Stm3 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmNot(p_2); 
-              CUP$parser$result = new java_cup.runtime.Symbol(7/*Stm2*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(8/*Stm2*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 25: // Stm1 ::= Stm2 
+          case 28: // Stm1 ::= Stm2 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = p_1; 
-              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm1*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(7/*Stm1*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 24: // Stm1 ::= Stm1 _SYMB_18 Stm2 
+          case 27: // Stm1 ::= Stm1 _SYMB_21 Stm2 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmSeq(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm1*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(7/*Stm1*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 23: // Stm1 ::= Stm1 _SYMB_17 Stm2 
+          case 26: // Stm1 ::= Stm1 _SYMB_11 Stm2 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmPar(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm1*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(7/*Stm1*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 22: // Stm1 ::= Stm1 _SYMB_16 Stm2 
+          case 25: // Stm1 ::= Stm1 _SYMB_20 Stm2 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmDisj(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm1*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(7/*Stm1*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 21: // Stm1 ::= Stm1 _SYMB_15 Stm2 
+          case 24: // Stm1 ::= Stm1 _SYMB_19 Stm2 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmConj(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm1*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(7/*Stm1*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 20: // Stm ::= Stm1 
+          case 23: // Stm ::= Stm1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = p_1; 
-              CUP$parser$result = new java_cup.runtime.Symbol(5/*Stm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 19: // Stm ::= Stm _SYMB_14 Stm1 
+          case 22: // Stm ::= Stm _SYMB_18 Stm1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmEqvConc(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(5/*Stm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 18: // Stm ::= Stm _SYMB_13 Stm1 
+          case 21: // Stm ::= Stm _SYMB_17 Stm1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmEqvPred(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(5/*Stm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 17: // Stm ::= Stm _SYMB_12 Stm1 
+          case 20: // Stm ::= Stm _SYMB_16 Stm1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpConc(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(5/*Stm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 16: // Stm ::= Stm _SYMB_11 Stm1 
+          case 19: // Stm ::= Stm _SYMB_15 Stm1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpRet(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(5/*Stm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 15: // Stm ::= Stm _SYMB_10 Stm1 
+          case 18: // Stm ::= Stm _SYMB_14 Stm1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpPred(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(5/*Stm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 14: // Stm ::= Stm _SYMB_9 Stm1 
+          case 17: // Stm ::= Stm _SYMB_13 Stm1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmEquiv(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(5/*Stm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 13: // Stm ::= Stm _SYMB_8 Stm1 
+          case 16: // Stm ::= Stm _SYMB_12 Stm1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Stm RESULT = null;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
 		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.StmImpl(p_1,p_3); 
-              CUP$parser$result = new java_cup.runtime.Symbol(5/*Stm*/, RESULT);
+              CUP$parser$result = new java_cup.runtime.Symbol(6/*Stm*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 12: // Sentence ::= Stm TruthValue _SYMB_7 
+          case 15: // Budget ::= _SYMB_8 _SYMB_9 _DOUBLE_ _SYMB_11 _DOUBLE_ _SYMB_10 
+            {
+              com.googlecode.opennars.parser.loan.Loan.Absyn.Budget RESULT = null;
+		Double p_3 = (Double)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
+		Double p_5 = (Double)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
+		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD(p_3,p_5); 
+              CUP$parser$result = new java_cup.runtime.Symbol(5/*Budget*/, RESULT);
+            }
+          return CUP$parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 14: // Budget ::= _SYMB_8 _SYMB_9 _DOUBLE_ _SYMB_10 
+            {
+              com.googlecode.opennars.parser.loan.Loan.Absyn.Budget RESULT = null;
+		Double p_3 = (Double)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
+		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP(p_3); 
+              CUP$parser$result = new java_cup.runtime.Symbol(5/*Budget*/, RESULT);
+            }
+          return CUP$parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 13: // Budget ::= 
+            {
+              com.googlecode.opennars.parser.loan.Loan.Absyn.Budget RESULT = null;
+		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE(); 
+              CUP$parser$result = new java_cup.runtime.Symbol(5/*Budget*/, RESULT);
+            }
+          return CUP$parser$result;
+
+          /*. . . . . . . . . . . . . . . . . . . .*/
+          case 12: // Sentence ::= Stm TruthValue Budget _SYMB_7 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence RESULT = null;
-		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
-		com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
-		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal(p_1,p_2); 
+		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
+		com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
+		com.googlecode.opennars.parser.loan.Loan.Absyn.Budget p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Budget)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
+		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal(p_1,p_2,p_3); 
               CUP$parser$result = new java_cup.runtime.Symbol(4/*Sentence*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 11: // Sentence ::= Stm _SYMB_6 
+          case 11: // Sentence ::= Stm _SYMB_6 Budget 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence RESULT = null;
-		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
-		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest(p_1); 
+		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
+		com.googlecode.opennars.parser.loan.Loan.Absyn.Budget p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Budget)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-0)).value;
+		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest(p_1,p_3); 
               CUP$parser$result = new java_cup.runtime.Symbol(4/*Sentence*/, RESULT);
             }
           return CUP$parser$result;
 
           /*. . . . . . . . . . . . . . . . . . . .*/
-          case 10: // Sentence ::= Stm TruthValue _SYMB_1 
+          case 10: // Sentence ::= Stm TruthValue Budget _SYMB_1 
             {
               com.googlecode.opennars.parser.loan.Loan.Absyn.Sentence RESULT = null;
-		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
-		com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
-		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge(p_1,p_2); 
+		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm p_1 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Stm)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-3)).value;
+		com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue p_2 = (com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-2)).value;
+		com.googlecode.opennars.parser.loan.Loan.Absyn.Budget p_3 = (com.googlecode.opennars.parser.loan.Loan.Absyn.Budget)((java_cup.runtime.Symbol) CUP$parser$stack.elementAt(CUP$parser$top-1)).value;
+		 RESULT = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge(p_1,p_2,p_3); 
               CUP$parser$result = new java_cup.runtime.Symbol(4/*Sentence*/, RESULT);
             }
           return CUP$parser$result;
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/sym.java b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/sym.java
index c8290bc946a14104fa208a5e1669c6e6e760eb5e..f698b3da81c74d41f7caf53ea5cd67943e9d0e56 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/Loan/sym.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/Loan/sym.java
@@ -1,7 +1,7 @@
 
 //----------------------------------------------------
 // The following code was generated by CUP v0.10k
-// Fri Apr 04 18:55:20 BST 2008
+// Fri Apr 04 22:02:41 BST 2008
 //----------------------------------------------------
 
 package com.googlecode.opennars.parser.loan.Loan;
@@ -14,6 +14,7 @@ public class sym {
   public static final int _SYMB_16 = 18;
   public static final int _SYMB_15 = 17;
   public static final int _SYMB_14 = 16;
+  public static final int _SYMB_45 = 47;
   public static final int _SYMB_13 = 15;
   public static final int _SYMB_44 = 46;
   public static final int _SYMB_12 = 14;
@@ -25,7 +26,7 @@ public class sym {
   public static final int _SYMB_10 = 12;
   public static final int _SYMB_41 = 43;
   public static final int _SYMB_7 = 9;
-  public static final int URILit = 51;
+  public static final int URILit = 52;
   public static final int _SYMB_40 = 42;
   public static final int _SYMB_6 = 8;
   public static final int _SYMB_5 = 7;
@@ -34,9 +35,9 @@ public class sym {
   public static final int _SYMB_2 = 4;
   public static final int _SYMB_1 = 3;
   public static final int _SYMB_0 = 2;
-  public static final int _IDENT_ = 50;
-  public static final int _INTEGER_ = 48;
-  public static final int _STRING_ = 47;
+  public static final int _IDENT_ = 51;
+  public static final int _INTEGER_ = 49;
+  public static final int _STRING_ = 48;
   public static final int _SYMB_39 = 41;
   public static final int _SYMB_38 = 40;
   public static final int _SYMB_37 = 39;
@@ -59,7 +60,7 @@ public class sym {
   public static final int _SYMB_22 = 24;
   public static final int _SYMB_21 = 23;
   public static final int _SYMB_20 = 22;
-  public static final int _DOUBLE_ = 49;
+  public static final int _DOUBLE_ = 50;
   public static final int _SYMB_19 = 21;
 }
 
diff --git a/open-nars/src/com/googlecode/opennars/parser/loan/LoanParser.java b/open-nars/src/com/googlecode/opennars/parser/loan/LoanParser.java
index c663d962ccb4a005664e30291d925759f8cd267c..5253ae12deb330217321de4b3ed013b2e202abfe 100644
--- a/open-nars/src/com/googlecode/opennars/parser/loan/LoanParser.java
+++ b/open-nars/src/com/googlecode/opennars/parser/loan/LoanParser.java
@@ -68,6 +68,9 @@ import com.googlecode.opennars.parser.loan.Loan.PrettyPrinter;
 import com.googlecode.opennars.parser.loan.Loan.Yylex;
 import com.googlecode.opennars.parser.loan.Loan.parser;
 import com.googlecode.opennars.parser.loan.Loan.Absyn.BaseR;
+import com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE;
+import com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP;
+import com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD;
 import com.googlecode.opennars.parser.loan.Loan.Absyn.Doc;
 import com.googlecode.opennars.parser.loan.Loan.Absyn.DocBR;
 import com.googlecode.opennars.parser.loan.Loan.Absyn.Document;
@@ -543,6 +546,32 @@ public class LoanParser extends Parser {
 
 	public class ParserVisitor extends AbstractVisitor<Object, LoanParser> {
 
+		/* (non-Javadoc)
+		 * @see com.googlecode.opennars.parser.loan.Loan.AbstractVisitor#visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetE, java.lang.Object)
+		 */
+		@Override
+		public Object visit(BudgetE p, LoanParser arg) {
+			return super.visit(p, arg);
+		}
+
+		/* (non-Javadoc)
+		 * @see com.googlecode.opennars.parser.loan.Loan.AbstractVisitor#visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetP, java.lang.Object)
+		 */
+		@Override
+		public Object visit(BudgetP p, LoanParser arg) {
+			// TODO Auto-generated method stub
+			return super.visit(p, arg);
+		}
+
+		/* (non-Javadoc)
+		 * @see com.googlecode.opennars.parser.loan.Loan.AbstractVisitor#visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BudgetPD, java.lang.Object)
+		 */
+		@Override
+		public Object visit(BudgetPD p, LoanParser arg) {
+			// TODO Auto-generated method stub
+			return super.visit(p, arg);
+		}
+
 		/* (non-Javadoc)
 		 * @see com.googlecode.opennars.parser.loan.Loan.AbstractVisitor#visit(com.googlecode.opennars.parser.loan.Loan.Absyn.BaseR, java.lang.Object)
 		 */
@@ -1380,16 +1409,16 @@ public class LoanParser extends Parser {
 		com.googlecode.opennars.parser.loan.Loan.Absyn.Stm stm = (Stm) ((CompoundTerm) task.getContent()).accept(new SerialiseVisitor(), this);
 		if(task.isJudgment()) {
 			com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue tv = new com.googlecode.opennars.parser.loan.Loan.Absyn.TruthFC(Double.valueOf(task.getTruth().getFrequency()), Double.valueOf(task.getTruth().getConfidence()));
-			s = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge(stm, tv);
+			s = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentJudge(stm, tv, new BudgetE());
 			ss.add(s);
 		}
 		else if(task.isQuestion()) {
-			s = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest(stm);
+			s = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentQuest(stm, new BudgetE());
 			ss.add(s);
 		}
 		else if(task.isGoal()) {
 			com.googlecode.opennars.parser.loan.Loan.Absyn.TruthValue tv = new com.googlecode.opennars.parser.loan.Loan.Absyn.TruthFC(Double.valueOf(task.getTruth().getFrequency()), Double.valueOf(task.getTruth().getConfidence()));
-			s = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal(stm, tv);
+			s = new com.googlecode.opennars.parser.loan.Loan.Absyn.SentGoal(stm, tv, new BudgetE());
 			ss.add(s);
 		}