<html><head><style type="text/css"><!-- DIV {margin:0px;} --></style></head><body><div style="font-family:times new roman,new york,times,serif;font-size:12pt"><div>Yes, if you have 229 rules like that, breaking them up is advised. :)<br><br>The thing is, when you insert objects into working memory, with rules like that you're most likely doing way more criteria matches than you need to.&nbsp; And while I'm pretty sure drools does some rule optimization in the background (like breaking rules like one below into several subrules) it can only go so far. (And the devs will have to address exactly what drools is doing in that regard.)&nbsp; Also, I'm pretty sure drools treats &amp;&amp; and "," differently behind the scenes for separating rule conditions.&nbsp; Any reason why your rule doesn't look like this:<br><br><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"
 lang="EN-GB">$bookingRule : BTExecutionBookingRuleModel (</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; priority == 1,</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font><font color="olive" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: olive;" lang="EN-GB">//
when a criterion is not set, it is considered as satisfied. </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (traderCriterion == </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">null</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> || $dealModel.trader ==
traderCriterion),</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (portfolioCriterion == </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">null</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> || $dealModel.portfolio ==
portfolioCriterion),</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font><font color="olive" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: olive;" lang="EN-GB">//
when a product type criterion is set to unknown, it is considered as satisfied
whatever deal product type is. </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (productTypeStringCriterion == </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">null</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> || productTypeCriterion ==
ProductType.Unknown&nbsp; </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || $dealModel.product.productType ==
productTypeCriterion),</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (listedIndexCriterion == </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">null</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> || $dealProductRelatedIndexes.relatedIndexes
</span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">contains</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> listedIndexCriterion)</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; )</span></font></p><br>Search the drools-expert docs for "constraintGroup":<br><br><span><a target="_blank" href="https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/docs/drools-expert/html_single/index.html">https://hudson.jboss.org/hudson/job/drools/lastSuccessfulBuild/artifact/trunk/target/docs/drools-expert/html_single/index.html</a></span><br><br>I believe that behind the scenes, drools creates alpha nodes in the rete based on the constraint groups. So, as your big rules are structured now, you may be getting no benefit from drools' rete optimizations because you have one big group per <font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;"
 lang="EN-GB">BTExecutionBookingRuleModel constraint</span></font>. (Specifically, you may be losing the alpha node sharing, which would cause a big performance hit.) <br><br>Some other optimization considerations: <br>1) do your == checks use identity whenever possible?&nbsp; In the case of "<font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">productTypeCriterion ==
ProductType.Unknown" is </span></font><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">ProductType.Unknown an enum. (Or, less desirable, an int constant)<br>2) When you use collections for contains checks, are the collections Sets? (or better yet, EnumSets)<br></span></font></div><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><br><div style="font-family: times new roman,new york,times,serif; font-size: 12pt;"><font face="Tahoma" size="2"><hr size="1"><b><span style="font-weight: bold;">From:</span></b> Costigliola Joel (EXT) &lt;joel.costigliola-ext@natixis.com&gt;<br><b><span style="font-weight: bold;">To:</span></b> Rules Users List &lt;rules-users@lists.jboss.org&gt;<br><b><span style="font-weight: bold;">Sent:</span></b> Monday, September 28, 2009 9:57:49 AM<br><b><span style="font-weight: bold;">Subject:</span></b>
 [rules-users] Struggling to improve my rules performance !<br></font><br>


 



 
<style>
<!--
 
 _filtered {font-family:Wingdings;panose-1:5 0 0 0 0 0 0 0 0 0;}
 _filtered {font-family:"MS Mincho";panose-1:2 2 6 9 4 2 5 8 3 4;}
 _filtered {font-family:Verdana;panose-1:2 11 6 4 3 5 4 4 2 4;}
 _filtered {panose-1:2 2 6 9 4 2 5 8 3 4;}
 
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;margin-bottom:.0001pt;font-size:12.0pt;font-family:"Times New Roman";}
a:link, span.MsoHyperlink
        {color:blue;text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:purple;text-decoration:underline;}
span.EmailStyle17
        {font-family:Verdana;color:windowtext;font-weight:normal;font-style:normal;text-decoration:none none;}
 _filtered {margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.Section1
        {}
 
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {margin-left:39.75pt;}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {}
 _filtered {font-family:Symbol;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
-->
</style>


<div>
<div>

<div class="Section1">

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Hello,</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">I would like to improve the performance of my
Drools process, I have already done some enhancements like removing the use of “collect”
and “eval”.</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">I must say I’m a Drools newbie struggling to determine
what causes my performance problems. </span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Before asking, I need to explain in few words the
problem I want to solve with Drools :</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">My company is a bank where traders are making deals
on markets, these deals must be classified in book, this is what we call
“booking process”.</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Booking is done according to booking criteria : which
trader has made the deal ? on which product ? etc … </span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">A booking rule defines a set of criteria and the
target book where the deal will classified. </span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">I’m using Drools to :</span></font></p> 

<ol style="margin-top: 0cm;" start="1" type="1">
 <li class="MsoNormal" style=""><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">find all booking
     rules matching deals made by traders</span></font><span lang="EN-GB"> </span><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"></span></font></li> 
 <li class="MsoNormal" style=""><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">apply the right
     booking rule on the deal among the ones matching the deal (i.e. that is
     book the deal)</span></font></li> 
</ol>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">I’m testing the booking process with 1000
deals and 229 booking rule.</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">It takes 60 seconds for Drools to book the 1000
deals, which is too slow to be put in production. &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">On the 60 seconds, I have 7 seconds for facts
insertion and the remaining for process (after session.fireAllRules)</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Do you think such numbers are normal/expected ? </span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Like I said I don’t really know where the
performance bottlenecks are … I’m thinking of exploring the
following possibilities :</span></font></p> 

<ul style="margin-top: 0cm;" type="disc">
 <li class="MsoNormal" style=""><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">splitting my rules
     into very simple rules </span></font></li> 
 <li class="MsoNormal" style=""><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">starting the
     booking process with fewer data and running it several times (instead of one
     booking process on 1000, run 10 booking processes on 100 deals each)</span></font></li> 
</ul>

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">I have put my rules code below (for courageous people),
if you see some obvious performance problems or if you can give some hint to
explore, you would be very welcome. </span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Thanks in advance for your lights, </span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Regards,</span></font></p> 

<p class="MsoNormal"><font color="blue" face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana; color: blue;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Joël Costigliola</span></font><span lang="EN-GB"></span></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Ps : rules details </span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">I have defined a flow composed of 3 steps/rules
group, each group has one rule, here’s the flow and the rules.</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Flow : </span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">------</span></font></p> 

<p class="MsoNormal"><font color="green" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: green;" lang="EN-GB">"Find
matching booking rules" -&gt; "Refresh" -&gt; "Apply
booking rule group"</span></font></p> 

<p class="MsoNormal"><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">Rules :</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">------</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">The job of this rule is to store in </span></font><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">DealMatchingBookingRules </span></font><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">all
the booking rule matching a specific deal (each </span></font><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">DealMatchingBookingRules </span></font><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB">instance
has a unique Deal).</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal" style=""><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">rule</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> </span></font><font color="green" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: green;" lang="EN-GB">"Find
matching level 1 booking rules by deal"</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">salience</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> 10</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">no-loop</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">ruleflow-group</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> </span></font><font color="green" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: green;" lang="EN-GB">"Find
level 1 matching booking rules by deal group"</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">when</span></font></b><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; $dealMatchingBookingRules :
DealMatchingBookingRules($dealModel : deal, $dealProductRelatedIndexes :
dealProductRelatedIndexes)</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; $bookingRule : BTExecutionBookingRuleModel (</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; priority == 1</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font><font color="olive" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: olive;" lang="EN-GB">//
when a criterion is not set, it is considered as satisfied. </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; (traderCriterion == </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">null</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> || $dealModel.trader ==
traderCriterion)</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; (portfolioCriterion == </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">null</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> || $dealModel.portfolio ==
portfolioCriterion)</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font><font color="olive" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: olive;" lang="EN-GB">//
when a product type criterion is set to unknown, it is considered as satisfied
whatever deal product type is. </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; (productTypeStringCriterion == </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">null</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> || productTypeCriterion ==
ProductType.Unknown&nbsp; </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; || $dealModel.product.productType ==
productTypeCriterion)&nbsp; </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; (listedIndexCriterion == </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">null</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> || $dealProductRelatedIndexes.relatedIndexes
</span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">contains</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> listedIndexCriterion)</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; )</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">then</span></font></b><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; &nbsp;&nbsp;&nbsp; Logger log = LoggerFactory.getLogger(</span></font><font color="green" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: green;" lang="EN-GB">"Matching booking rules
LOGGER"</span></font><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">);</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; &nbsp;&nbsp;&nbsp; <a target="_blank" href="http://log.info">log.info</a>(</span></font><font color="green" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: green;" lang="EN-GB">"Found a level 1 matching rule for deal : "</span></font><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> + $dealModel + </span></font><font color="green" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: green;" lang="EN-GB">", rule is "</span></font><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> +
 $bookingRule);</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; $dealMatchingBookingRules.addMatchingBookingRule($bookingRule);</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">end</span></font></b><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal" style=""><font color="olive" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: olive;" lang="EN-GB">// used to tell Drools that our $dealMatchingBookingRules are
ready for next step in flow</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">rule</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> </span></font><font color="green" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: green;" lang="EN-GB">"Refresh
facts in level 1 booking rule process"</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">salience</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> 5</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">no-loop</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">ruleflow-group</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> </span></font><font color="green" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: green;" lang="EN-GB">"Refresh
facts in level 1 booking rule process group"</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">when</span></font></b><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; $dealMatchingBookingRules : DealMatchingBookingRules()</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">then</span></font></b><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">update</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">($dealMatchingBookingRules);</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">end</span></font></b><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">rule</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> </span></font><font color="green" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: green;" lang="EN-GB">"Apply
level 1 booking rule"</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">no-loop</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">ruleflow-group</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB"> </span></font><font color="green" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: green;" lang="EN-GB">"Apply
level 1 booking rule group"</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">when</span></font></b><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; $dealMatchingBookingRules :
DealMatchingBookingRules(hasSingleMatchingLevel1BookingRule == </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">true</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">)</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">then</span></font></b><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; BTExecutionBookingRuleModel effectiveBookingRuleModel =
$dealMatchingBookingRules.getSingleMatchingLevel1BookingRule();</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; effectiveBookingRuleModel.applyRuleOnDeal($dealMatchingBookingRules.getDeal());</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">&nbsp;&nbsp;&nbsp; </span></font><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;" lang="EN-GB">retract</span></font></b><font color="black" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: black;" lang="EN-GB">($dealMatchingBookingRules);</span></font><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;" lang="EN-GB"></span></font></p> 

<p class="MsoNormal" style=""><b><font color="#960000" face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;; color: rgb(150, 0, 0); font-weight: bold;">end</span></font></b><font face="Courier New" size="2"><span style="font-size: 10pt; font-family: &quot;Courier New&quot;;"></span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

<p class="MsoNormal"><font face="Verdana" size="2"><span style="font-size: 10pt; font-family: Verdana;" lang="EN-GB"> &nbsp;</span></font></p> 

</div>

 </div>
<div>
</div>
<div>
<hr>
</div>
<div>
<font color="gray" face="Arial" size="1"><span style="font-size: 12pt;"><font face="Arial">
<font color="#000000" face="Times New Roman" size="3">
</font>
</font></span></font>&nbsp;</div>
<div>
<font color="gray"><span style="font-size: 12pt;"><font color="#000000" size="2">Ce courriel et toutes les pièces jointes sont confidentiels et peuvent être couverts par un privilège ou une protection légale. Il est établi à l’attention exclusive de ses destinataires. Toute utilisation de ce courriel non conforme à sa destination, toute diffusion ou toute publication, totale ou partielle, est interdite, sauf autorisation expresse préalable. Toutes opinions exprimées dans ce courriel ne sauraient nécessairement refléter celle de Natixis, de ses filiales. Elles sont aussi susceptibles de modification sans notification préalable. Si vous recevez ce courriel par erreur, merci de le détruire et d’en avertir immédiatement l’expéditeur. L’Internet ne permettant pas d’assurer l’intégrité de ce courriel, Natixis décline toute responsabilité s’il a été altéré, déformé ou falsifié et chaque destinataire qui utilise ce mode de
 communication est supposé en accepter les risques.</font></span></font>
</div>
<div>
<font color="gray"><span style="font-size: 12pt;"></span></font>&nbsp;</div>
<div>
<font color="gray"><span style="font-size: 12pt;"></span></font>
<font color="gray"><span style="font-size: 12pt;"><font color="#000000" size="2">This email and any attachment are confidential and may be legally privileged or otherwise protected from disclosure. It is intended only for the stated addressee(s) and access to it by any other person(s) is unauthorised. Any use, dissemination or disclosure not in accordance with its purpose, either in whole or in part, is prohibited without our prior formal approval. Any opinion expressed in this email may not necessarily reflect the opinion of Natixis, its affiliates. It may also be subject to change without prior notice. If you are not an addressee, you must not disclose, copy, circulate or in any other way use or rely on the information contained in this email. If you have received it in error, please inform us immediately and delete all copies. The Internet can not guarantee the integrity of this email therefore Natixis shall not be liable for the email if altered,
 changed or falsified and anyone who communicates with us by e-mail is taken to accept these risks.</font></span></font>
</div>
<p class="MsoNormal">
</p><hr>

<p>
</p>
<p>
</p>

</div></div></div></div><br>

      </body></html>