<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Vanilla Java]]></title><description><![CDATA[Vanilla Java]]></description><link>https://vanilla-java.github.io</link><image><url>https://raw.githubusercontent.com/Vanilla-Java/vanilla-java.github.io/master/images/French-Vanilla-Java.jpg</url><title>Vanilla Java</title><link>https://vanilla-java.github.io</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 28 Nov 2018 15:25:30 GMT</lastBuildDate><atom:link href="https://vanilla-java.github.io/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[Best practices for Event Sourcing]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>David Schmitz presented <a href="https://www.youtube.com/watch?v=GzrZworHpIk">an excellent talk</a> on what he sees as best practices in using <a href="https://martinfowler.com/eaaDev/EventSourcing.html">Event Sourcing</a>.</p>
</div>
<div class="paragraph">
<p><a href="https://chronicle.software/">Chronicle Software</a> has two very different event sourcing frameworks <a href="https://chronicle.software/solutions/framework/">Chronicle Microservices Framework</a> (CMF) and <a href="https://github.com/OpenHFT/Chronicle-Decentred">Chronicle Decentred</a>. This talk is useful in highlighting how they differ with each other and other Event Sourcing solutions.</p>
</div>
<div class="paragraph">
<p>CMF is built on Chronicle Queue and is designed for low latency trading systems. Replication is typically asynchronous to minimise latency.</p>
</div>
<div class="paragraph">
<p>Chronicle Decentred is a framework for building a secure decentralised ledger e.g. a Blockchain. It focuses on high throughput rather than low latency and Byzantine Fault Tolerance.</p>
</div>
<div class="paragraph">
<p>David&#8217;s talk applies to all Event Driven systems, and up to 10 minutes into the talk it applies to Chronicle&#8217;s frameworks as well.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_re_deliveries">Re-Deliveries</h3>
<div class="paragraph">
<p>He notes that ensuring exactly one delivery is hard.</p>
</div>
<div class="paragraph">
<p>CMF approach is to assume every input of significance will have an output onto a known queue. This allows the service to restart immediately after the last successfully published message. The benefit of this approach is that:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>if the input message is delivered but the service dies before completion, it is reprocessed.</p>
</li>
<li>
<p>if the input message is processed but the output message is not written successfully, it assumes it should be reprocessed until it does.</p>
</li>
<li>
<p>it is assumed that any input message which has no output, has no side effects and can be replayed, or if it cannot, a dummy "success" message can be produced.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Chronicle Decentred is checkpointed on a regular basis, e.g. weekly. The state of any individual service can be recovered from this point by replaying all the events.</p>
</div>
<div class="paragraph">
<p>In both cases, events are not deleted by default and cannot be removed individually (without encryption, see below). The events are stored in files on a rolling basis and are removed when the file(s) are deleted.</p>
</div>
</div>
<div class="sect2">
<h3 id="_commands_vs_queries">Commands vs Queries</h3>
<div class="paragraph">
<p>CMF and Decentred are designed to execute commands in real time. To support queries you either need to maintain a "live" query you know in advance or for ad hoc queries, maintain an external database of your choice.</p>
</div>
</div>
<div class="sect2">
<h3 id="_performance">Performance</h3>
<div class="paragraph">
<p>This is one of the ways in which CMF and Decentred differ greatly.</p>
</div>
<div class="paragraph">
<p>In his talk, David gives an example of a service which performs 100 actions in 66 ms. This is an average latency of 0.66 ms.</p>
</div>
<div class="paragraph">
<p>CMF is designed for consistently low latency where the focus is on the worst latencies the system sees.  A key measure is often the 99.9%ile latency (worst 1 in 1,000) rather than the average or typical latencies.</p>
</div>
<div class="paragraph">
<p>We recently helped a Tier 1 banking client build an Order Management System with 3 microservices where the <em>wire to wire</em> latency was under <em>20 micro-seconds 99.9% of the time</em> for a throughput of 20,000 messages per second.</p>
</div>
<div class="paragraph">
<p>Chronicle Decentred is designed for high throughput. Each chain can process a large number of messages across a cluster of servers e.g. 50K/s to 400K/s depending on the hardware. However, the latency is the time to achieve a consensus, which might be 5 ms to 500 ms depending on the network between them.</p>
</div>
</div>
<div class="sect2">
<h3 id="_human_readable_formats">Human-readable formats</h3>
<div class="paragraph">
<p>To support schema changes, David proposes a <a href="https://en.wikipedia.org/wiki/Human-readable_medium">human-readable format</a> which makes translating different versions of <a href="https://en.wikipedia.org/wiki/Data_transfer_object">Data Transfer Objects</a> easier as your data model changes. <a href="https://www.json.org/">JSON</a> is a common choice for doing this, however, I find that is not as human-readable as <a href="http://yaml.org/">YAML</a>.</p>
</div>
<div class="paragraph">
<p>One downside of human-readable formats is that they are not as fast as binary formats, and for this reason, CMF and Decentred supports both a binary format of YAML, which can be automatically translated to YAML but is 2-3 times faster, and as lower level binary formats which are faster but not as easy to maintain.</p>
</div>
<div class="paragraph">
<p>Some advantages of YAML over JSON</p>
</div>
<div class="ulist">
<ul>
<li>
<p>more concise.</p>
</li>
<li>
<p>better support for complex data types.</p>
</li>
<li>
<p>direct support for types and comments.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Downside of YAML</p>
</div>
<div class="ulist">
<ul>
<li>
<p>more options for how to write the data.</p>
</li>
<li>
<p>human readability is in the eye of the beholder, making it harder to code.</p>
</li>
<li>
<p>a simpler spec with mroe consistent support across languages.</p>
</li>
<li>
<p>YAML is almost a super set of JSON but not exactlty. e.g after an attribute name you need colon-space in YAML where as a space is not required for JSON.</p>
</li>
</ul>
</div>
<div class="listingblock">
<div class="title">JSON Example from the talk</div>
<div class="content">
<pre class="highlight"><code class="language-json" data-lang="json">{
    "eventType": "MoneyTransfered",
    "aggredateId" : "1234",
    "iban": "DE12",
    "accountNumber": "12312312",
    "amount": 10,
    "currency": "EUR"
}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">YAML Example based on the previous example.</div>
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml">!MoneyTransfered: {
    aggredateId : 1234,
    iban: DE12,
    accountNumber: 12312312,
    amount: 10,
    currency: EUR
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Having a variety of serialization options available, we favour starting with the easiest to work with and optimise later once we have a working system. This allows us to identify the most performance sensitive messages which require optimisation e.g. orders and market data, and leave most messages including the more complex, but less latency sensitive messages easier to maintain e.g. static data and configuration.</p>
</div>
</div>
<div class="sect2">
<h3 id="_year_end_procedure">Year End Procedure</h3>
<div class="paragraph">
<p>David discusses <a href="http://www.learnac.co.uk/index.php/blog/30-year-end-accounting-procedures">Year End Procedure</a>. In trading systems, this is usually performed daily or weekly. This can be achieved by taking a snapshot in the form of events to load at the start of the new time period. Most trading systems have a long downtime window overnight or on the weekend.</p>
</div>
</div>
<div class="sect2">
<h3 id="_updating_events">Updating events</h3>
<div class="paragraph">
<p>Event-driven systems are not designed to edit an event once written. Either the event fails, in which case, a new correct event can be added, or the event is successful but incorrect, and one or more events need to be added to correct or reverse the action. There is no easy way to edit an event before it processed, by design.</p>
</div>
<div class="paragraph">
<p>It is fairly common to have a priority queue for control events, and this could be used to inject delete, cancel or correction events as long as the event modified hasn&#8217;t been processed yet.</p>
</div>
<div class="paragraph">
<p>Great care must be taken to avoid or manage any event which could be executed but cannot be reversed later.</p>
</div>
</div>
<div class="sect2">
<h3 id="_gdpr_and_encrypting_data">GDPR and encrypting data.</h3>
<div class="paragraph">
<p>One way to delete data without destroying the whole queue or stream is to encrypt all the data using a key relating to a user with a user-specific key. To "delete" the user you just need to delete the key.  Chronicle Queue has support for a plugin to encrypt and decrypt messages as they are written and read which can be integrated with your key management.</p>
</div>
<div class="paragraph">
<p>Another approach is to anonymize the data so there is nothing the stream which identifies a user, rather this is handled by other systems.</p>
</div>
</div>
<div class="sect2">
<h3 id="_trying_out_these_solutions">Trying out these solutions.</h3>
<div class="paragraph">
<p>Chronicle Microservices Framework is a commercial solution for which you can get an evaluation copy, you can also start by using <a href="https://github.com/OpenHFT/Chronicle-Queue">Chronicle Queue</a></p>
</div>
<div class="paragraph">
<p><a href="https://github.com/OpenHFT/Chronicle-Decentred">Chronicle Decentred</a> is an opensource projects with some example projects available on github.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/11/28/Best-practices-for-Event-Sourcing.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/11/28/Best-practices-for-Event-Sourcing.html</guid><category><![CDATA[Best Practices]]></category><category><![CDATA[Event Sourcing]]></category><dc:creator><![CDATA[Peter K Lawrey]]></dc:creator><pubDate>Wed, 28 Nov 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Some Java oddities]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>I was recently asked for some simple pieces of code which some unusual uses of Java.</p>
</div>
<div class="paragraph">
<p>Here are some of my favourites ;)</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_stateless_singleton_implementing_an_interface">Stateless Singleton implementing an interface</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">public enum RandomStrategy implements IntSupplier {
    INSTANCE;

    @Override
    public int getAsInt() {
        return ThreadLocalRandom.current().nextInt();
    }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>This is useful for creating multiple implementations of a strategy pattern which share an interface. E.g. I have TimeProvider with 4 implementations depending on usage.</p>
</div>
<div class="paragraph">
<p>An example of where I use this is a <a href="https://github.com/OpenHFT/Chronicle-Core/blob/master/src/main/java/net/openhft/chronicle/core/time/TimeProvider.java">TimeProvider</a> which is basically</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">@FunctionalInterface
 public interface TimeProvider {

     long currentTimeMillis();

     default long currentTimeMicros() {
         return currentTimeMillis() * 1000;
     }</code></pre>
</div>
</div>
<div class="paragraph">
<p>This has multiple <code>enum</code> implementations which share an interface so they can be used interchangably</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">TimeProvider</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Usage</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://github.com/OpenHFT/Chronicle-Core/blob/master/src/main/java/net/openhft/chronicle/core/time/SetTimeProvider.java">SetTimeProvider</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a set time for unit testing.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://github.com/OpenHFT/Chronicle-Core/blob/master/src/main/java/net/openhft/chronicle/core/time/SystemTimeProvider.java">SystemTimeProvider</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">uses the wall clock.</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock"><a href="https://github.com/OpenHFT/Chronicle-Decentred/blob/master/src/main/java/net/openhft/chronicle/decentred/util/UniqueMicroTimeProvider.java">UniqueMicroTimeProvider</a></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">use wall clock except for the micro-second time always increases</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">LinuxTimeProvider (TBD)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Uses a microsecond resolution system call</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect2">
<h3 id="_almost_final">Almost final</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">static final int l = printNM();
static final int n = 10;
static final int m = Math.min(10, 10);
static final int o = printNM();

static int printNM() {
    System.out.println(n + " " + m); // 10 0 then 10 10
    return 5;
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Before a variable is assigned a value it is <code>0</code>, <code>false</code> or <code>null</code> unless the value is known at compile time in which case it is also inlined.</p>
</div>
</div>
<div class="sect2">
<h3 id="_smiley_faces">Smiley faces</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">int ⁀‿⁀ = 0, ⁀⁔⁀ = 1, ¢ = 2;

if (⁀‿⁀ != ⁀⁔⁀)
    System.out.println(¢);</code></pre>
</div>
</div>
<div class="paragraph">
<p>As <code>_</code> and <code>$</code> are allowed characters so all continuation and currency symbols are allowed.</p>
</div>
</div>
<div class="sect2">
<h3 id="_getting_the_top_bit_whether_int_or_long">Getting the top bit whether int or long.</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">int i = -1;
long l = -1;
System.out.println("sign(i)=" + (i &gt;&gt; -1));
System.out.println("sign(l)=" + (l &gt;&gt; -1));</code></pre>
</div>
</div>
<div class="paragraph">
<p>The shift value is masked by the lower 5 bit for int or 6 bits for long.  The upshot is that a shift by -1 is either 31 or 63 depending on the type.</p>
</div>
</div>
<div class="sect2">
<h3 id="_a_throwable_for_tracing_only">A Throwable for tracing only</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">/**
 * Throwable created purely for the purposes of reporting a stack trace.
 * &lt;p&gt;
 * This is not an Error or an Exception and is not expected to be thrown or caught.
 * &lt;/p&gt;
 */
public class StackTrace extends Throwable {
    public StackTrace() {
        this(null);
    }

    public StackTrace(String message) {
        this(message, null);
    }

    public StackTrace(String message, Throwable cause) {
        super(message, cause, false, false);
    }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>We use this for tracing where resources are allocated and/or closed to reporting on multi-threaded resource management</p>
</div>
</div>
<div class="sect2">
<h3 id="_no_concurrentmodificationexception">No ConcurrentModificationException.</h3>
<div class="paragraph">
<p>The check for iterations == size happens before the modification count for CME.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">List&lt;Integer&gt; ints = new ArrayList&lt;Integer&gt;() {{
    add(1);
    add(2);
    add(3);
}};
for (int i : ints) // no exception
    if (i == 2)
        ints.remove(i);</code></pre>
</div>
</div>
<div class="paragraph">
<p>Wrapper pooling covers the range -128 to 127 for <code>Byte</code>, <code>Short</code>, <code>Character</code>, <code>Integer</code> and <code>Long</code>. (Possibly higher for <code>Integer</code> depending on command line options.)</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">Character a1 = 127, a2 = 127;
Character b1 = 128, b2 = 128;
System.out.println(a1 == a2); // true
System.out.println(b1 == b2); // false
Detected assertions are on.
boolean debug = false;
assert debug = true;
if (debug)
   System.out.println("Assertions are on");</code></pre>
</div>
</div>
<div class="paragraph">
<p>This shows you can easily determine is assertions are on for expensive checks. Another simple approach is:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">public void method() {
    assert validate();
}

private boolean validate() {
    if (expensiveCheck())
        throw new AssertionError("details");
    return true;
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Legacy arrays on methods are allowed as easier compilers allowed this.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">static int fun(int[] ints)[] { return ints; }

public static void main(String... args) {
    System.out.println(fun(new int[1]).length);
}</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_char_and_floating_point">char and floating point</h3>
<div class="paragraph">
<p>The compound assignment operator casts to the wider type and then narrows it implicitly.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">char ch = '1';
ch /= 0.9;
System.out.println(ch);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_int_and_float">int and float</h3>
<div class="paragraph">
<p>Wider types don&#8217;t always have more precision. A <code>float</code> is wider than an <code>int</code> or <code>long</code>, but has less precision for whole numbers inside the int and long ranges.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">int i = Integer.MAX_VALUE;
i += 0.0f;
System.out.println(i == Integer.MAX_VALUE);
i -= 63;
i += 0.0f;
System.out.println(i == Integer.MAX_VALUE);
i -= 64;
i += 0.0f;
System.out.println(i == Integer.MAX_VALUE);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_unknown_exit_code">Unknown exit code</h3>
<div class="paragraph">
<p>One of the threads in your <code>ForkJoinPool.commonPoll()</code> will be the first to call exit.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">IntStream.range(0, 128)
        .parallel()
        .forEach(System::exit);</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_windowstf">WindowsTF</h3>
<div class="paragraph">
<p>Windows treats certain file names as special devices, even if a path or file extension is provided.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code>C:\Users\peter&gt;more &gt; A.java
class Nul { }
class Con { String s = "\nHello World\n"; }
^Z

C:\Users\peter&gt;javac A.java <i class="conum" data-value="1"></i><b>(1)</b>
╩■║╛   4 
           s Ljava/lang/String; &lt;init&gt; ()V Code LineNumberTable
SourceFile A.java    
Hello World
   Con java/lang/Object                       
   #     *╖ *╡ ▒                
C:\Users\peter&gt;dir
 Volume in drive C is OS
 Volume Serial Number is 3EB6-6BBF

 Directory of C:\Users\peter

04/09/2018  13:51    &lt;DIR&gt;          .
04/09/2018  13:51    &lt;DIR&gt;          ..
04/09/2018  13:51                62 A.java <i class="conum" data-value="2"></i><b>(2)</b>
               1 File(s)             62 bytes
               2 Dir(s)  670,935,572,480 bytes free</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Compiling the code dumps the <code>.class</code> to the screen.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Note: no <code>.class</code> files are written.</td>
</tr>
</table>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/09/04/Some-Java-oddities.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/09/04/Some-Java-oddities.html</guid><category><![CDATA[Java]]></category><dc:creator><![CDATA[Peter K Lawrey]]></dc:creator><pubDate>Tue, 04 Sep 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Reducing network latency]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>A look <a href="https://idioms.thefreedictionary.com/go+down+the+rabbit+hole">down the rabbit hole</a> of reducing network <a href="https://whatis.techtarget.com/definition/latency">latency</a>.  How latency can be measured and what you can do about it in a Java application.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_ping_latency">Ping latency</h2>
<div class="sectionbody">
<div class="paragraph">
<p>A tool I used regularly when I was a Unix System Administrator was <a href="https://linux.die.net/man/8/ping">ping</a></p>
</div>
<div class="literalblock">
<div class="content">
<pre>ping -f hostname</pre>
</div>
</div>
<div class="paragraph">
<p>This sends a "flood" of packets across the network.  It only sends 5 per second, but it gives you an idea of the round trip latency of the network.</p>
</div>
<div class="paragraph">
<p>I have two servers which are close to each other, so I should be able to get their latencies pretty low.  <code>ping</code> reports an average latency of 107 μs (<a href="https://en.wikipedia.org/wiki/Microsecond">microseconds</a>) which seems reasonable to start with.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
All these timings are for <a href="https://en.wikipedia.org/wiki/Round-trip_delay_time">round trip time</a> (RTT) which is the time to go from a process in one machine to a process in a second machine and back again.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_java_to_java_latency_with_new_tcp_connections">Java to Java latency with new TCP connections</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Creating a new connection each time you want to send a request or a message is relatively expensive, however many applications still work this way so it is useful to get an idea of the latencies this incurs.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 1. Using NettyEchoServer and Chronicle&#8217;s EchoReconnectingClientMain via 1 Gb line</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Throughput, 1 client</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Typical</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">99.9%ile</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">200/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">290 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">510 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">500/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">280 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">692 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">260 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">670 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">260 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1,700 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3500/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">300 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6,500 μs</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>At this point, I found I couldn&#8217;t run the test for as long as the machine kept running out of resources. I could have given it more, but as you will see, opening connections each time isn&#8217;t efficient even with a bit of tuning.</p>
</div>
<div class="sect2">
<h3 id="_using_a_low_latency_connection">Using a low latency connection.</h3>
<div class="paragraph">
<p>One way to improve performance is to use a low latency network card such as the <a href="http://solarflare.com/Media/Default/PDFs/SF-116323-CD-LATEST_Solarflare_SFN8522-PLUS_Product_Brief.pdf">Solarflare 8522-PLUS</a>. It is a 10 Gb card designed for <a href="http://solarflare.com/xtremescale-nics">low latency</a></p>
</div>
<div class="paragraph">
<p>The ping time for this connection was 26 μs (as you will see, this is still pretty slow)</p>
</div>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 2. Using NettyEchoServer and Chronicle&#8217;s EchoReconnectingClientMain over 10 Gb Solarflare</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Throughput, 1 client</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Typical</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">99.9%ile</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">200/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">160 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">252 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">500/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">150 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">330 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">185 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">360 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">135 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">410 μs</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>This is a significant improvement without having to change the software.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_reusing_connections">Reusing connections</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Reusing connections for streaming messages can achieve much higher throughputs and lower latencies.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 3. Using NettyEchoServer and Chronicle&#8217;s EchoClientMain via 10 Gb line</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Throughput, 1 client</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Typical</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">99.9%ile</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">20,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">21 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">30,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">23 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">260 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">40,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">31 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1,600 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">50,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">110 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1,700 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">60,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">na</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">na</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>The <a href="https://github.com/OpenHFT/Chronicle-Network/blob/master/src/test/java/net/openhft/performance/tests/third/party/frameworks/netty/NettyEchoServer.java">Echo Server using Netty</a> was better than <a href="https://github.com/OpenHFT/Chronicle-Network">Chronicle Network</a> for thousands of connections, but in this test, we have just one connection.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 4. Using Chronicle&#8217;s EchoServer2Main and EchoClientMain via 10 Gb line</caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Throughput, 1 client</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Typical</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">99.9%ile</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">20,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">17 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">71 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">30,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">18 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">84 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">40,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">21 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">110 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">50,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">31 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">205 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">60,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">na</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">na</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>Lastly, to minimise latency, we use Solarflare&#8217;s <a href="http://solarflare.com/software-extensions#Onload">onload</a> which enables a userspace TCP driver, bypassing the kernel without having to change our Java application to use Solarflare&#8217;s library.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 5. Using Chronicle&#8217;s EchoServer2Main and EchoClientMain via 10 Gb line with <code>onload</code></caption>
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Throughput, 1 client</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Typical</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">99.9%ile</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">20,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5.6 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">13 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">30,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5.6 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">15 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">40,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5.6 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">16 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">50,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5.6 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">17 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">60,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5.6 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">18 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">80,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5.6 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">21 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">100,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5.6 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">24 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">120,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5.9 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">30 μs</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">150,000/s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8.9 μs</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">55 μs</p></td>
</tr>
</tbody>
</table>
<div class="sect2">
<h3 id="_what_if_the_services_are_on_the_same_machine">What if the services are on the same machine?</h3>
<div class="paragraph">
<p>I would recommend using a shared memory ring buffer e.g. <a href="https://github.com/real-logic/aeron">Aeron</a> or a durable <a href="https://github.com/OpenHFT/Chronicle-Queue">Chronicle Queue</a>. These solutions have lower latencies again and more consistent high percentile timings as well.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_conclusion">Conclusion</h2>
<div class="sectionbody">
<div class="paragraph">
<p>To reduce the latency, and increase the throughput, I suggest</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Reuse connections</p>
</li>
<li>
<p>Use a low latency network card</p>
</li>
<li>
<p>Use kernel bypass/userspace drivers.</p>
</li>
<li>
<p>Use our networking library designed for lower latencies</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>For the same servers, using the same version of Java, the throughput can increase from maybe 5,000 messages per second to 150,000 messages per second, while the round trip latency can drop from 300 μs to less than 6 μs.</p>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/08/28/Reducing-network-latency.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/08/28/Reducing-network-latency.html</guid><category><![CDATA[Network]]></category><category><![CDATA[Low Latency]]></category><category><![CDATA[Testing]]></category><dc:creator><![CDATA[Peter K Lawrey]]></dc:creator><pubDate>Tue, 28 Aug 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Looking at randomness and performance for hash codes]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>In these articles, <a href="https://vanilla-java.github.io/2018/07/26/Stringhash-Code-is-not-even-a-little-unique.html">String.hashCode() is not even a little unique</a> and <a href="https://vanilla-java.github.io/2018/08/12/Why-do-I-think-Stringhash-Code-is-poor.html">Why do I this String.hashCode() is poor</a>, I looked at how String.hashCode() might have been made better with little change at the time it was last updated (in Java 1.2). However, given the current solution has been in place for 20 years, the default behaviour is unlikely to change. Additionally, if we were to consider different a different algorithm I would prefer something much faster and more random than just changing the prime factor from 31 to 109.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_how_can_we_evaluate_randomness">How can we evaluate randomness?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>One way of looking at randomness is to change the input by one bit and see how many bits change in the resulting hash. The input is first populated with random data and the resulting hashes are compared for a large sample. In this case, I took one million samples and plotted it against what you get for a <code>Random.nextInt()</code> call.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The ideal hash changes half of the bits on average, more than half bits changed is also a bias.
</td>
</tr>
</table>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/randomness-64-bytes.png" alt="randomness 64 bytes">
</div>
<div class="title">Figure 1. The randomness of the hash code for different strategies for longer inputs compared with Random all have decent outcomes</div>
</div>
<div class="listingblock">
<div class="title">Harness to estimate the randomness distribution of a hashing strategy.</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">static double[] randomnessDistribution(ToIntFunction&lt;byte[]&gt; hashCode, int length) {
    double[] dist = new double[33];
    Random random = new Random(length);
    byte[] bytes = new byte[length];
    int tests = 0;
    for (int t = 0; t &lt; 1000000; t += length) {
        for (int i = 0; i &lt; length; i++)
            bytes[i] = (byte) (' ' + random.nextInt(96)); <i class="conum" data-value="1"></i><b>(1)</b>
        int base = hashCode.applyAsInt(bytes);

        for (int i = 0; i &lt; length; i++) {
            for (int j = 0; j &lt; 8; j++) {
                bytes[i] ^= 1 &lt;&lt; j;
                int val = hashCode.applyAsInt(bytes);
                int score2 = Integer.bitCount(base ^ val);
                dist[score2]++;
                tests++;
                bytes[i] ^= 1 &lt;&lt; j;
            }
        }
    }
    for (int i = 0; i &lt; dist.length; i++)
        dist[i] = Math.round(1000.0 * dist[i] / tests) / 10.0;
    return dist;
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>I assume the input is largely ASCII or positive bytes. This doesn&#8217;t change the results greatly.</td>
</tr>
</table>
</div>
<div class="listingblock">
<div class="title">Print the distribution of different strategies for charting.</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">for(double[] dist: new double[][] {
        randomnessDistribution(HashCodeBenchmarkMain::hashCode31, length),
        randomnessDistribution(Arrays::hashCode, length),
        randomnessDistribution(HashCodeBenchmarkMain::hashCode109, length),
        randomnessDistribution(HashCodeBenchmarkMain::nativeHashCode, length),
        randomnessDistribution(value -&gt; ThreadLocalRandom.current().nextInt(), length)}) {
    System.out.println(Arrays.toString(dist).replaceAll("(\\[|\\])", ""));
}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Modified form of the String.hashCode() using 109 as a prime.</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">static int hashCode109(byte[] value) {
    if (value.length == 0) return 0;
    int h = value[0]; <i class="conum" data-value="1"></i><b>(1)</b>
    for (int i = 1; i &lt; value.length; i++) {
        h = h * 109 + value[i];
    }
    h *= 109; <i class="conum" data-value="2"></i><b>(2)</b>
    return h;
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>On the first iteration don&#8217;t need to multiply the previous value.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Afterwards, multiply by the factor to improve the outcomes for short inputs.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The differences between hashing strategies are more obvious for shorter inputs.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/randomness-20-bytes.png" alt="randomness 20 bytes">
</div>
<div class="title">Figure 2. Most strategies tested do well for 20-byte inputs</div>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/randomness-8-bytes.png" alt="randomness 8 bytes">
</div>
<div class="title">Figure 3. For 8-byte inputs, some strategies are not ideal</div>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/randomness-4-bytes.png" alt="randomness 4 bytes">
</div>
<div class="title">Figure 4. For 4 byte inputs, String.hashCode() and Arrays.hashCode() are poor</div>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/randomness-2-bytes.png" alt="randomness 2 bytes">
</div>
<div class="title">Figure 5. For 2 byte inputs, String.hashCode() and Arrays.hashCode() are not great</div>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/randomness-1-byte.png" alt="randomness 1 byte">
</div>
<div class="title">Figure 6. For 1 byte inputs, String.hashCode() and Arrays.hashCode() might be fine as the number of possible keys is small.</div>
</div>
<div class="sect2">
<h3 id="_what_is_this_native_hashcode">What is this "native" hashCode?</h3>
<div class="paragraph">
<p>A technique we use to speed up the processing of bytes is to attempt to process groups of them at once i.e. 4 bytes or 8 bytes at a time. This can speed up processing by 2-4x. We also see a benefit in using a larger prime as we pass through fewer iterations.</p>
</div>
<div class="listingblock">
<div class="title">Hashing strategy which takes 4 bytes aa time</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">private static final int M2 = 0x7A646E4D;

// read 4 bytes at a time from a byte[] assuming Java 9+ Compact Strings
private static int getIntFromArray(byte[] value, int i) {
    return UnsafeMemory.INSTANCE.UNSAFE.getInt(value, BYTE_ARRAY_OFFSET + i); <i class="conum" data-value="0"></i><b>(0)</b>
}

public static int nativeHashCode(byte[] value) {
    long h = getIntFromArray(value, 0);
    for (int i = 4; i &lt; value.length; i += 4)
        h = h * M2 + getIntFromArray(value, i); <i class="conum" data-value="1"></i><b>(1)</b>
    h *= M2;
    return (int) h ^ (int) (h &gt;&gt;&gt; 25);
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>assess assumes all byte[] have zero byte padding at the end and aligned to a multiple of 4 bytes.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>in each iteration multiply by a large constant</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>agitate the results using some of the high bits</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_how_can_we_measure_how_they_perform">How can we measure how they perform?</h3>
<div class="paragraph">
<p>Using JMH, we can benchmark how long each operation takes on average.  To have reasonable coverage, the benchmark tried a number of sizes so this is the average for those sizes.</p>
</div>
<div class="listingblock">
<div class="title">Benchmark comparing the throughput of using String.hashCode with 31 or 109 and the native hashing strategy.</div>
<div class="content">
<pre>Benchmark                                      Mode  Cnt   Score   Error   Units
HashCodeBenchmarkMain.String_hashCode         thrpt   25  15.586 ± 0.433  ops/us
HashCodeBenchmarkMain.String_hashCode109      thrpt   25  13.480 ± 0.147  ops/us
HashCodeBenchmarkMain.String_hashCode31       thrpt   25  16.173 ± 0.205  ops/us
HashCodeBenchmarkMain.String_native_hashCode  thrpt   25  55.547 ± 2.051  ops/us</pre>
</div>
</div>
<div class="paragraph">
<p>The native implementation is around 3-4 times as it processes up to 4 bytes at a time.</p>
</div>
</div>
<div class="sect2">
<h3 id="_the_code">The code</h3>
<div class="paragraph">
<p>A maven module of code exploring how String is hashed is <a href="https://github.com/peter-lawrey/Java-Lost/tree/master/java-string-hashcode">HERE</a></p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>I believe it is possible to produce a hashing strategy which is both much faster and has a better hash distribution than the 20-year-old solution.  Changing the JVM is impractical however having a pluggable hashing strategy for XxxxHashMap might ensure backward compatibility while providing an option for a faster solution.</p>
</div>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/08/15/Looking-at-randomness-and-performance-for-hash-codes.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/08/15/Looking-at-randomness-and-performance-for-hash-codes.html</guid><category><![CDATA[String]]></category><category><![CDATA[hashCode]]></category><category><![CDATA[performance]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Wed, 15 Aug 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why do I think String.hashCode() is poor]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>In response to an article I wrote <a href="https://vanilla-java.github.io/2018/07/26/Stringhash-Code-is-not-even-a-little-unique.html">HERE</a>, a recent article <a href="http://sigpwned.com/2018/08/10/string-hashcode-is-plenty-unique/">HERE</a> pointed out a number of things which could have been clearer in my claim that String.hashCode() is poor. What does "poor" mean to me and does it even matter?</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_what_is_the_purpose_of_a_hashcode">What is the purpose of a hashcode?</h3>
<div class="paragraph">
<p>A hashcode attempts to produce a number for each input, in a somewhat random and unique way.  If the input already contains a significant amount of randomness the hashing strategy largely doesn&#8217;t matter. Even Integer.hashCode() works well for random (and even sequential numbers)
Long strings, for example, are likely to contain a significant amount of randomness so the behaviour for a hash for long strings isn&#8217;t a good test of the hash.  However, for that use case, it likely it doesn&#8217;t matter unless someone has planned a deliberate attack, in which case you have to do more than change the hashing strategy.</p>
</div>
</div>
<div class="sect2">
<h3 id="_how_might_we_test_whether_a_hash_code_is_good_or_not">How might we test whether a hash code is good or not?</h3>
<div class="paragraph">
<p>One approach is to score it compared to similar hashcode functions for an assumed use case.
In this case, I have used words from the dictionary, selecting words of lengths 1 to 16 and estimated their collision rate in a HashMap with default settings.</p>
</div>
<div class="paragraph">
<p>HashMap manipulates the hashcode in two ways.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>it agitates the hashcode to ensure the higher bits are used</p>
</li>
<li>
<p>it masks the hashcode by the capacity - 1 where the capacity is the number of buckets and a power of 2. A mask is used as it&#8217;s faster than division.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>String.hashCode() calculates the hashCode based iterating over the characters in a String and multiplying the hashcode by 31 each time.</p>
</div>
</div>
<div class="sect2">
<h3 id="_is_31_a_good_number_to_use">Is 31 a good number to use?</h3>
<div class="paragraph">
<p>It is widely regarded that prime numbers are better to use for hashcodes on  balance <a href="https://stackoverflow.com/questions/3613102/why-use-a-prime-number-in-hashcode" class="bare">https://stackoverflow.com/questions/3613102/why-use-a-prime-number-in-hashcode</a></p>
</div>
<div class="paragraph">
<p>However, lets test how it compares to other moderately sizes prime numbers. In the following test I look at the percentage of collisions a HashMap is likely to have for words of length 1 to 16. I take into account that HashMap agitates the hashcode and then masks it. The size to mask is based on the default size the HashMap would be for that many keys. I give extra weight for the worst outcome.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">public class Main {

    public static void main(String[] args) throws IOException {
        List&lt;String&gt; words = Files.readAllLines(Paths.get("/usr/share/dict/words")); <i class="conum" data-value="1"></i><b>(1)</b>
        Map&lt;Integer, List&lt;Integer&gt;&gt; scored = IntStream.range(2, 1024).parallel() <i class="conum" data-value="2"></i><b>(2)</b>
                .filter(Main::isPrime)
                .boxed()
                .collect(Collectors.groupingBy(i -&gt; scoreFor(words, i),
                                               TreeMap::new, Collectors.toList())); <i class="conum" data-value="3"></i><b>(3)</b>
        scored.entrySet().stream().forEach(System.out::println);

    }</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Read all the words from a file.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Try all the primes between 2 and 1024 in parallel</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Build a map of primes sorted by score</td>
</tr>
</table>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">    private static int scoreFor(List&lt;String&gt; words, int prime) {
        int score = 0;
        int max = 0;
        for (int length = 1; length &lt; 17; length++) {
            int finalLength = length;
            List&lt;String&gt; words2 = words.stream()
                                       .filter(l -&gt; l.length() == finalLength)
                                      .collect(Collectors.toList()); <i class="conum" data-value="1"></i><b>(1)</b>
            int leading = Integer.numberOfLeadingZeros(words2.size() * 10 / 7);
            int nextPowerOf2 = 1 &lt;&lt; -leading; <i class="conum" data-value="2"></i><b>(2)</b>

            Map&lt;Integer, List&lt;String&gt;&gt; collect = words2.stream()
                    .collect(Collectors.groupingBy(s -&gt; hash2(s, nextPowerOf2, prime)));
            int collisions = collect.values().stream()
                                             .mapToInt(l -&gt; l.size() - 1)
                                             .sum(); <i class="conum" data-value="3"></i><b>(3)</b>
            int perc = collisions * 100 / words2.size();
            score += perc; <i class="conum" data-value="4"></i><b>(4)</b>
            max = Math.max(perc, max);
        }
        score += max; <i class="conum" data-value="5"></i><b>(5)</b>
        return score;
    }</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>for all the words of a given length</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>take the next power of two (after considering a load factor of 0.7)</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>count the number of collisions</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>add the percentage</td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
<td>add the worst percentage twice.</td>
</tr>
</table>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">    static int hash2(String s, int n, int prime) {
        char val[] = s.toCharArray();
        int h = 0;
        for (int i = 0; i &lt; val.length; i++) {
            h = prime * h +  val[i];
        }
        // agitate like HashMap in Java 8.
        h ^= h &gt;&gt;&gt; 16;
        // select a bucket.
        return h &amp; (n - 1);
    }

    static boolean isPrime(long n) {
        if (n &gt; 2 &amp;&amp; (n &amp; 1) == 0) return false;
        if (n &gt; 3 &amp;&amp; n % 3 == 0) return false;
        if (n &gt; 5 &amp;&amp; n % 5 == 0) return false;
        for (int i = 7, max = (int) Math.sqrt(n); i &lt;= max; i++)
            if (n % i == 0)
                return false;
        return true;
    }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Not too surprisingly, 2 is the worst prime number to use for this test and has the highest score for collisions.  Given that there is 26 letters in the alphabet lets assume we could have ignored prime numbers less than 26. Let&#8217;s also assume that numbers over 256 (possible values for a byte) could have been discounted. Primes over 256 don&#8217;t find scores outside the range of those we get with 26 to 256. How does each of our prime numbers rank?</p>
</div>
<div class="listingblock">
<div class="content">
<pre>297=[109]
301=[103, 173]
302=[223]
304=[29, 73, 167, 179, 211, 251]
305=[79, 101]
308=[41, 83, 151, 199]
309=[37, 47, 67, 89, 139, 239] <i class="conum" data-value="1"></i><b>(1)</b>
310=[43, 97]
311=[149]
312=[163]
314=[53, 193]
316=[197]
317=[31, 131, 233] <i class="conum" data-value="2"></i><b>(2)</b>
318=[61, 71, 137]
319=[107]
320=[59]
322=[229]
323=[181]
324=[113]
330=[191]
331=[241]
343=[157]
364=[227]
374=[127]</pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Median score</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Score for 31 as a prime factor.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>For this test at least, 31 is in the worst half of the possible prime numbers to use. In my initial cut, 31 was the worst number to choose, but I felt the test wouldn&#8217;t be general enough.</p>
</div>
</div>
<div class="sect2">
<h3 id="_isn_t_there_another_implicit_factors">Isn&#8217;t there another implicit factors?</h3>
<div class="paragraph">
<p>The main computation line could be written like this.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">    h = (prime * h +  1 * val[i]) &amp; 0xFFFFFFFF;</code></pre>
</div>
</div>
<div class="paragraph">
<p>How much difference does it make to change one of these factors instead?</p>
</div>
<div class="sect3">
<h4 id="_trying_different_multipliers">Trying different multipliers</h4>
<div class="paragraph">
<p>Say we make the search of this nature</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">    h = (31 * h +  prime * val[i]) &amp; 0xFFFFFFFF;</code></pre>
</div>
</div>
<div class="paragraph">
<p>and you get results like this</p>
</div>
<div class="listingblock">
<div class="content">
<pre>311=[5]
312=[23, 89]
313=[3]
315=[13, 61]
316=[71, 239]
317=[1, 7, 31, 241]
....</pre>
</div>
</div>
<div class="paragraph">
<p>So in this case, using 5 instead of 1 might have been better, however, this adds computational cost. What if we use 109 as the prime</p>
</div>
<div class="listingblock">
<div class="content">
<pre>297=[1, 3]
299=[5]
302=[19]
303=[11]
306=[13, 23]</pre>
</div>
</div>
<div class="paragraph">
<p>Now, a multiplier of 1 is a good choice.</p>
</div>
<div class="paragraph">
<p>How about we change the use of an int to a long. This could be slower on some systems, but does it make much difference?</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">    static int hash2(String s, int n, int prime) {
        char val[] = s.toCharArray();
        long h = 0;
        for (int i = 0; i &lt; val.length; i++) {
            h = prime * h + val[i];
        }
        h ^= h &gt;&gt;&gt; 32;
        // agitate like HashMap in Java 8.
        h ^= h &gt;&gt;&gt; 16;
        // select a bucket.
        return (int) (h &amp; (n - 1));
    }</code></pre>
</div>
</div>
<div class="paragraph">
<p>produces a scores like this</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">298=[179]
301=[109, 251]
302=[103, 173, 223]
303=[167, 211]
304=[79, 101]
305=[73, 151]
....</code></pre>
</div>
</div>
<div class="paragraph">
<p>I couldn&#8217;t say this is any better, but it might be slower, so I would say it is best to leave it with an int calculation.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_comparing_the_number_of_collisions_for_a_two_character_ascii_string">Comparing the number of collisions for a two character ASCII string</h3>
<div class="paragraph">
<p>We can generate all the possible two character String and compare the number of collisions using 31 and 109 as the prime number.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">public class CollisionsMain {
    public static void main(String[] args) {
        {
            Map&lt;Integer, List&lt;String&gt;&gt; freqMap = IntStream.range(' ', 127)
                    .mapToObj(i -&gt; Character.toString((char) i))
                    .flatMap(c -&gt; IntStream.range(' ', 127)
                            .mapToObj(c2 -&gt; c + (char) c2))
                    .collect(Collectors.groupingBy(String::hashCode));
            long collision = freqMap.values().stream().mapToInt(l -&gt; l.size() - 1).sum();
            System.out.println("with prime = 31, there are " + collision + " collisions");
        }
        {
            Map&lt;Integer, List&lt;String&gt;&gt; freqMap = IntStream.range(' ', 127)
                    .mapToObj(i -&gt; Character.toString((char) i))
                    .flatMap(c -&gt; IntStream.range(' ', 127)
                            .mapToObj(c2 -&gt; c + (char) c2))
                    .collect(Collectors.groupingBy(s -&gt; hash2(s)));
            long collision = freqMap.values().stream().mapToInt(l -&gt; l.size() - 1).sum();
            System.out.println("with prime = 109, there are " + collision + " collisions");
        }
    }

    static int hash2(String s) {
        int h = 0;
        for (int i = 0; i &lt; s.length(); i++) {
            h = h * 109 + s.charAt(i);
        }
        return h;
    }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>This prints</p>
</div>
<div class="listingblock">
<div class="content">
<pre>with prime = 31, there are 5952 collisions
with prime = 109, there are 0 collisions</pre>
</div>
</div>
<div class="paragraph">
<p>And for 3 character strings</p>
</div>
<div class="listingblock">
<div class="content">
<pre>with prime = 31, there are 755968 collisions
with prime = 109, there are 0 collisions</pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
For this use case, 109 is so much better as the range of ASCII characters I am using is 32 to 126 inclusive which is a range of fewer than 109 values. Using 109 has no collisions for 4 characters either but takes to many resources to run this way.
</td>
</tr>
</table>
</div>
<div class="quoteblock">
<blockquote>
<div class="paragraph">
<p>But because String.hashCode()‘s hash space is small and it runs so fast,</p>
</div>
</blockquote>
</div>
<div class="paragraph">
<p>There is plenty of int values to allow every 0 to 4 letter ASCII String to have a unique hashcode.</p>
</div>
<div class="quoteblock">
<blockquote>
<div class="paragraph">
<p>I have always found (anecdotally) that String.hashCode() manages collisions quite well for Real World Data.</p>
</div>
</blockquote>
</div>
<div class="paragraph">
<p>I agree that in general, it does it&#8217;s job quite well and HashMap degrading to a tree instead of a list for collisions (in Java 8) mitigates this significantly.</p>
</div>
<div class="paragraph">
<p>However, let&#8217;s say that using 109 instead of 31 is 5% better, imagine how much processing power has been wasted on the millions of devices over the decades for the change of one number.</p>
</div>
<div class="quoteblock">
<blockquote>
<div class="paragraph">
<p>So what does a “poor” hash function look like? And what does a “good” hash function look like? And where does String.hashCode() fall on that spectrum?</p>
</div>
</blockquote>
</div>
<div class="paragraph">
<p>I would say that in terms of prime factors that could have reasonably been chosen, it&#8217;s on the "poor" end of the scale.</p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>In conclusion, I feel the String.hashCode() is poor as most prime numbers between 26 and 256 would have been a better choice than 31. The nearest prime 29 is likely to be better and 109 might be even better.
A more extensive study of a range of use cases would be needed to settle on one number better in most cases.</p>
</div>
<div class="paragraph">
<p>I would favour, the hashing strategy for HashMap should be configurable (like Comparator for TreeMap)</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/08/12/Why-do-I-think-Stringhash-Code-is-poor.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/08/12/Why-do-I-think-Stringhash-Code-is-poor.html</guid><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Sun, 12 Aug 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making blockchains simple]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>One of the challenges of building blockchain solutions is testing it.  Chronicle Accelerate has a framework to make adding custom transactions with the state using data-driven tests. i.e. without the need to write code.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_example_appreciation">Example: Appreciation</h3>
<div class="paragraph">
<p>The following application allows participants to show appreciation for each other by giving "likes".  They have a fixed number of likes to give each other each week on a use or lose it basis.  Users with the most likes might get a reward on a monthly basis, which halves their likes.</p>
</div>
<div class="paragraph">
<p>The data-driven tests are available here <a href="https://github.com/OpenHFT/Chronicle-Accelerate/tree/master/examples/appreciation/src/test/resources/give">Appreciation Give tests</a></p>
</div>
<div class="listingblock">
<div class="title">setup.yaml sets up the test, giving it an initial state</div>
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml">openingBalance: {
  publicKey: !!binary RWUHCYzTzADL+4kJ9r90rWHBo6J/Wng5FmlXFjv8bd8=, <i class="conum" data-value="1"></i><b>(1)</b>
  amount: 100.0
}
---
openingBalance: {
  publicKey: !!binary Sq1s3liIh6LkceZYP+qh6MlMRRqCNJ5Dvl9oyAiZHe8=, <i class="conum" data-value="2"></i><b>(2)</b>
  amount: 10.0
}
---</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Public key of account 1</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Public key of account 2</td>
</tr>
</table>
</div>
<div class="listingblock">
<div class="title">in.yaml defines the messages whose outputs are tested</div>
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml">startBatch: {
  batchKey: !!binary RWUHCYzTzADL+4kJ9r90rWHBo6J/Wng5FmlXFjv8bd8=, <i class="conum" data-value="1"></i><b>(1)</b>
  batchTimeUS: "1970-01-01T00:00:00"
}
---
give: { <i class="conum" data-value="2"></i><b>(2)</b>
  publicKey: !!binary Sq1s3liIh6LkceZYP+qh6MlMRRqCNJ5Dvl9oyAiZHe8=, <i class="conum" data-value="3"></i><b>(3)</b>
  amount: 20.0 <i class="conum" data-value="4"></i><b>(4)</b>
}
---
endBatch: ""
---</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Account 1</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>gives</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Account 2</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>20.0 likes</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>produces an output of</p>
</div>
<div class="listingblock">
<div class="title">output.yaml describes the extends outputs</div>
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml">---
to: !!binary RWUHCYzTzADL+4kJ9r90rWHBo6J/Wng5FmlXFjv8bd8= <i class="conum" data-value="1"></i><b>(1)</b>
onBalance: { <i class="conum" data-value="2"></i><b>(2)</b>
  publicKey: !!binary RWUHCYzTzADL+4kJ9r90rWHBo6J/Wng5FmlXFjv8bd8=,
  amount: 80.0 <i class="conum" data-value="3"></i><b>(3)</b>
}
to: !!binary Sq1s3liIh6LkceZYP+qh6MlMRRqCNJ5Dvl9oyAiZHe8= <i class="conum" data-value="4"></i><b>(4)</b>
onBalance: { <i class="conum" data-value="5"></i><b>(5)</b>
  publicKey: !!binary Sq1s3liIh6LkceZYP+qh6MlMRRqCNJ5Dvl9oyAiZHe8=,
  amount: 30.0 <i class="conum" data-value="6"></i><b>(6)</b>
}
---
---</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Account 1</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>is notified that it&#8217;s balances is now</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>80.0 likes</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>Account 2</td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
<td>is notified that it&#8217;s balance is now</td>
</tr>
<tr>
<td><i class="conum" data-value="6"></i><b>6</b></td>
<td>30.0 likes</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The two key classes are the gateway class</p>
</div>
<div class="paragraph">
<p><a href="https://github.com/OpenHFT/Chronicle-Accelerate/blob/master/examples/appreciation/src/main/java/town/lost/examples/appreciation/VanillaAppreciationGateway.java">VanillaAppreciationGateway.java</a></p>
</div>
<div class="paragraph">
<p>and the post blockchain class is</p>
</div>
<div class="paragraph">
<p><a href="https://github.com/OpenHFT/Chronicle-Accelerate/blob/master/examples/appreciation/src/main/java/town/lost/examples/appreciation/VanillaAppreciationTransactionListener.java">VanillaAppreciationTransactionListener.java</a></p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<code>lost.town</code> is a domain I use for examples and games I write.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>If you would like to get updates on Chronicle Accelerate, <a href="https://twitter.com/ChronicleXCL">join us on Twitter</a></p>
</div>
<div class="paragraph">
<p>If you would like to see how our platform can be used to build your blockchain solution <a href="mailto:sales@chronicle-software.com">Contact us on <a href="mailto:sales@chronicle-software.com">sales@chronicle-software.com</a></a></p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/07/31/Making-blockchains-simple.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/07/31/Making-blockchains-simple.html</guid><category><![CDATA[Blockchain]]></category><category><![CDATA[Accelerate]]></category><category><![CDATA[Testing]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Tue, 31 Jul 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Publishing tens of millions of messages per second]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Welcome to our first newsletter from Chronicle giving you updates on developments at Chronicle Software plus tips and case studies around how Chronicle have helped clients to maximise value from their implementation.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_case_study">Case Study</h3>
<div class="paragraph">
<p>We have many examples where we have helped clients who are using our open source software to optimise their solution below is a recent example:-</p>
</div>
<div class="paragraph">
<p>We helped a client achieve a 12.5x throughput improvement for Chronicle Queue with minimal changes to their solution going from millions of messages per second to tens of millions of events per second.</p>
</div>
<div class="paragraph">
<p>A large Petrochemical company engaged us to help with performance issues they were seeing writing market data to our Chronicle Queue. The way they were using queue with an older version was limited to about 3.5 million messages per second (per queue). Rather than use more queues they needed to improve the throughput of each one.  After tuning their solution and using the last version of Chronicle Queue, they were able to achieve 8.5 million messages per second from Java.  What they really needed was a faster, low level way to write from C++ so we produced a bespoke solution for their use case which achieved 44 million messages per second.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
This was the throughput just to write the messages and didn’t include their logic.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_commercial_update">Commercial Update</h3>
<div class="paragraph">
<p>Due to ongoing success and growth within the Chronicle business, we have grown our Commercial team recruiting 2 experienced sales and business development professionals Rob Hunt and Andrew Twigg.  Rob has over 20 years experience within the financial markets, starting as a hedge fund trader he subsequently moved into software sales successfully selling to both buyside and sellside institutions. Andrew joins us from BGC where he was selling market data to financial institutions across Europe prior to that he worked in various senior sales roles within the financial markets at organisations including Thomson Reuters and Dow Jones.</p>
</div>
<div class="paragraph">
<p>Rob and Andrew in conjunction with Commercial Director Paul Hienkens are here to help you with any enquiries you may have around consulting or licensing our software solutions.</p>
</div>
<div class="paragraph">
<p>If you wish to discuss how our Chronicle Software experts can help you or wish to receive ongoing selected updates from Chronicle please contact us <a href="mailto:sales@chronicle-software.com">sales@chronicle-software.com</a></p>
</div>
<div class="paragraph">
<p>Chronicle Software were founded in 2013 by Peter Lawrey the technical architect behind our software stack, as the company has grown Peter has assembled some of the best Java engineers and subject matter experts in the industry. The company’s heritage is firmly rooted in financial services, our business experts and developers are renowned for their proven track records</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/07/30/Publishing-tens-of-millions-of-messages-per-second.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/07/30/Publishing-tens-of-millions-of-messages-per-second.html</guid><category><![CDATA[Consulting]]></category><category><![CDATA[News Letter]]></category><category><![CDATA[Case Study]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Mon, 30 Jul 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[String.hashCode() is not even a little unique]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Some have a misconception that a 32-bit hashCode() can be unique for even complex data. Many realise that String.hashCode() is not unique, but might not realise how bad it is. While it is true that all one character Strings have a unique hashCode, this breaks down for two character Strings.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_two_character_ascii_strings_with_common_hashcodes">Two character ASCII strings with common hashCodes</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">hashCode()</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">String 1</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">String 2</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">String 3</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">String 4</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1149</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1180</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1211</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1242</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1273</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1304</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1335</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1366</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1397</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1428</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1459</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1490</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1521</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">._</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1552</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1583</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1614</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1645</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1676</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1707</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1738</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1769</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1800</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1831</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1862</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1893</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1924</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1955</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1986</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2017</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2048</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2079</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2110</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2141</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2172</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2203</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2234</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2265</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2296</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2327</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2358</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2389</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2420</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2451</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2482</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2513</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2544</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2575</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2606</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2637</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2668</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2699</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2730</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2761</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2792</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2823</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2854</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2885</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2916</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2947</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2978</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3009</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3040</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3071</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3102</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3133</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3164</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3195</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3226</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3257</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3288</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3319</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3350</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3381</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3412</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3443</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3474</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3505</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3536</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3567</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3598</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3629</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3660</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3691</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3722</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3753</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3784</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3815</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3846</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3877</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3908</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">3939</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">~!</p></td>
</tr>
</tbody>
</table>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
When strings have the same hashCode and combination of them, of the same length appended together also have the same hashCode.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_three_character_strings_with_the_most_common_hashcodes">Three character strings with the most common hashCodes</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1428%;">
<col style="width: 7.1436%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">35652</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">35683</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">35714</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">35745</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">!~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">36613</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">36644</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">36675</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">36706</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">"~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">37574</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">37605</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">37636</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">37667</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">#~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">38535</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">${~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">38566</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">38597</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">38628</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">$~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">39496</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">39527</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">("!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">39558</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">("@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">39589</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">%~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">("_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">($!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">40457</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">']_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">40488</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">']~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">40519</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">40550</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&amp;~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">41418</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">41449</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">41480</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">41511</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">'~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">42379</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">({~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">42410</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">42441</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">42472</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">(~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">43340</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">){~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">43371</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">43402</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">43433</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">)~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">44301</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">44332</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">44363</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">44394</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">*~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">45262</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&#8594;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">45293</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&#8594;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">."!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">45324</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">."@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">45355</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">+~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">."_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">46223</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">46254</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">46285</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">46316</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">,~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">47184</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">._!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">47215</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">._@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">47246</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">47277</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">-~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">._~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">48145</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">48176</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">48207</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">48238</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">.~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">49106</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">49137</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">49168</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">49199</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">/~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">50067</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">50098</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">50129</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">50160</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">0~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">51028</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">51059</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">51090</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">51121</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">51989</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">52020</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">52051</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">52082</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">52950</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">52981</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">53012</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">53043</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">53911</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">53942</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">53973</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">54004</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">4~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">54872</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">54903</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">54934</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">54965</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">55833</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">55864</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">55895</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">55926</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">6~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">56794</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">56825</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">56856</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">56887</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">57755</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">57786</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">57817</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">57848</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">8~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">58716</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">58747</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">58778</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">58809</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">59677</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&#8656;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">59708</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">="!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">59739</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">="@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">59770</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">:~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">="_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">60638</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">==~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&#8658;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">60669</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&#8658;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">60700</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">60731</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">;~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">61599</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">61630</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">61661</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">61692</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt;~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">62560</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">={~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">??@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">62591</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">??_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">62622</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">??~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">62653</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">=~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">63521</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">63552</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">63583</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">63614</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&gt;~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">64482</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">64513</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">AA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">64544</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">AA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">AB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">64575</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">?~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">AA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">AB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">AC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">65443</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">65474</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">BA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">65505</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Aa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">BA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">BB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">65536</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">@~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Aa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ab!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">BA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">BB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">BC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">66404</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">66435</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">66466</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ba!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">66497</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">A~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ba@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Bb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">CC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">67365</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">67396</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">67427</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ca!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">67458</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">B~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ca@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Cb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">DC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">68326</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">68357</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">EA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">68388</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Da!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">EA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">EB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">68419</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">C~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Da@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Db!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">EA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">EB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">EC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">69287</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">69318</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">FA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">69349</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ea!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">FA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">FB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">69380</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">D~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ea@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Eb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">FA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">FB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">FC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">70248</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">70279</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">GA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">70310</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Fa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">GA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">GB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">70341</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">E~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Fa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Fb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">GA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">GB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">GC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">71209</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">71240</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">71271</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ga!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">71302</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">F~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ga@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Gb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">HC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">72170</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">72201</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">IA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">72232</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ha!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">IA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">IB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">72263</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">G~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ha@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Hb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">IA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">IB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">IC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">73131</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">73162</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">JA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">73193</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ia!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">JA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">JB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">73224</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">H~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ia@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ib!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">JA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">JB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">JC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">74092</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">74123</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">KA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">74154</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ja!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">KA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">KB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">74185</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">I~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ja@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Jb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">KA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">KB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">KC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">75053</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">75084</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">LA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">75115</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ka!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">LA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">LB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">75146</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">J~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ka@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Kb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">LA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">LB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">LC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">76014</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">76045</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">MA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">76076</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">La!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">MA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">MB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">76107</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">K~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">La@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Lb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">MA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">MB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">MC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">76975</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">77006</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">77037</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ma!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">77068</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">L~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ma@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Mb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">NC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">77936</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">77967</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">OA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">77998</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Na!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">OA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">OB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">78029</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">M~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Na@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Nb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">OA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">OB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">OC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">78897</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">78928</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">78959</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Oa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">78990</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">N~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Oa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ob!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">PC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">79858</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">79889</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">QA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">79920</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Pa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">QA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">QB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">79951</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">O~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Pa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Pb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">QA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">QB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">QC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">80819</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">80850</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">RA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">80881</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Qa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">RA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">RB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">80912</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">P~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Qa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Qb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">RA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">RB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">RC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">81780</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">81811</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">SA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">81842</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ra!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">SA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">SB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">81873</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Q~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ra@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Rb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">SA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">SB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">SC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">82741</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">82772</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">TA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">82803</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">TA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">TB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">82834</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">R~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">TA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">TB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">TC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">83702</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">83733</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">UA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">83764</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ta!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">UA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">UB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">83795</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">S~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ta@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Tb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">UA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">UB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">UC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">84663</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">84694</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">VA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">84725</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ua!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">VA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">VB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">84756</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">T~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ua@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ub!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">VA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">VB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">VC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">85624</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">85655</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">85686</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Va!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">85717</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">U~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Va@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Vb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">WC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">86585</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">86616</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">XA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">86647</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Wa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">XA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">XB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">86678</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">V~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Wa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Wb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">XA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">XB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">XC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">87546</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">87577</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">87608</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Xa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">87639</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">W~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Xa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Xb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">YC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">88507</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">88538</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ZA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">["!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">88569</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ya!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ZA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ZB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">["@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">88600</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">X~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Ya@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Yb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ZA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ZB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ZC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">["_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">89468</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">89499</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">89530</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Za!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">89561</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Y~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Za@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Zb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">90429</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">90460</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">90491</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">90522</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Z~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">91390</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">91421</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">91452</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">91483</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">[~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">92351</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">92382</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">92413</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>!</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">92444</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">\~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>"</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">93312</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>&gt;</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">93343</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>?</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">93374</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>@</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">93405</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">]~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>A</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">94273</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>]</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">__!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">94304</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>^</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">__@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">94335</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>_</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">94366</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">^~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">__~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>`</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">95234</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>|</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">95265</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>}</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">``!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">aA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">95296</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><em>~</em></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">``@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">aA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">aB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">95327</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">_~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">``_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">aA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">aB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">aC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">96195</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">96226</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">bA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">96257</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">aa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">bA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">bB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">96288</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">`~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">aa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ab!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">bA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">bB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">bC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">97156</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">97187</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">cA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">97218</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ba!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">cA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">cB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">97249</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">a~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ba@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">bb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">cA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">cB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">cC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">98117</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">98148</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">dA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">98179</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ca!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">dA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">dB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">98210</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">b~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ca@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">cb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">dA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">dB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">dC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">99078</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">99109</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">eA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">99140</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">da!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">eA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">eB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">99171</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">c~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">da@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">db!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">eA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">eB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">eC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">100039</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">100070</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">fA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">100101</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ea!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">fA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">fB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">100132</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">d~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ea@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">eb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">fA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">fB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">fC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">101000</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">101031</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">gA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">101062</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">fa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">gA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">gB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">101093</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">e~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">fa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">fb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">gA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">gB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">gC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">101961</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">101992</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">hA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">102023</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ga!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">hA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">hB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">102054</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">f~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ga@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">gb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">hA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">hB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">hC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">102922</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">102953</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">iA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">102984</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ha!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">iA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">iB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">103015</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">g~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ha@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">hb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">iA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">iB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">iC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">103883</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">103914</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">jA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">103945</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ia!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">jA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">jB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">103976</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">h~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ia@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ib!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">jA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">jB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">jC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">104844</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">104875</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">kA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">104906</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ja!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">kA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">kB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">104937</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">i~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ja@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">jb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">kA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">kB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">kC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">105805</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">105836</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">lA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">105867</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ka!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">lA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">lB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">105898</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">j~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ka@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">kb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">lA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">lB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">lC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">106766</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">106797</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">mA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">106828</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">la!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">mA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">mB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">106859</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">k~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">la@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">lb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">mA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">mB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">mC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">107727</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">107758</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">nA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">107789</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ma!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">nA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">nB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">107820</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">l~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ma@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">mb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">nA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">nB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">nC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">108688</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">108719</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">oA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">108750</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">na!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">oA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">oB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">108781</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">m~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">na@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">nb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">oA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">oB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">oC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">109649</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">109680</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">pA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">109711</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">oa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">pA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">pB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">109742</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">n~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">oa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ob!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">pA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">pB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">pC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">110610</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">110641</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">qA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">110672</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">pa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">qA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">qB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">110703</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">o~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">pa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">pb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">qA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">qB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">qC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">111571</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">111602</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">rA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">111633</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">qa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">rA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">rB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">111664</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">p~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">qa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">qb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">rA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">rB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">rC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">112532</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">112563</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">sA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">112594</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ra!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">sA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">sB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">112625</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">q~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ra@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">rb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">sA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">sB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">sC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">113493</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">113524</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">tA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">113555</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">sa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">tA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">tB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">113586</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">r~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">sa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">sb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">tA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">tB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">tC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">114454</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">114485</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">uA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">114516</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ta!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">uA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">uB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">114547</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">s~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ta@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">tb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">uA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">uB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">uC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">115415</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">115446</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">vA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">115477</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ua!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">vA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">vB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">115508</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">t~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ua@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ub!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">vA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">vB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">vC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">116376</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">116407</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">wA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">116438</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">va!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">wA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">wB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">116469</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">u~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">va@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">vb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">wA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">wB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">wC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">117337</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">117368</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">xA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">117399</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">wa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">xA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">xB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">117430</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">v~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">wa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">wb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">xA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">xB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">xC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">118298</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">118329</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">yA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">118360</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">xa!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">yA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">yB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">118391</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">w~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">xa@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">xb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">yA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">yB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">yC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">119259</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">119290</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">zA!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">119321</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ya!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">zA@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">zB!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">119352</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">x~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">ya@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">yb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">zA_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">zB@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">zC!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">120220</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">120251</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">120282</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">za!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">120313</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">y~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">za@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">zb!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">121181</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">121212</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">121243</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">121274</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">z~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}!~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}$!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">122142</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{{~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{|_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{}@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{~!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|\~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|]_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|^@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|_!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}=~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}&gt;_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}?@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}@!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">~!!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">122173</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{|~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{}_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{~@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|]~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|^_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|_@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|`!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}&gt;~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}?_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}@@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}A!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">~!@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">~"!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">122204</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{}~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{~_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|^~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|__</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|`@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|a!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}?~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}@_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}A@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}B!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">~!_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">~"@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">~#!</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">122235</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">{~~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|_~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|`_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|a@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">|b!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}@~</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}A_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}B@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">}C!</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><sub>!</sub></p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">~"_</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">~#@</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">~$!</p></td>
</tr>
</tbody>
</table>
</div>
<div class="sect1">
<h2 id="_conclusion">Conclusion</h2>
<div class="sectionbody">
<div class="paragraph">
<p>No matter what hashing strategy is used, collisions are inevitable however, some hashes are worse than others. You can expect String&#8217;s hashCode() to be fairly poor.</p>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/07/26/Stringhash-Code-is-not-even-a-little-unique.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/07/26/Stringhash-Code-is-not-even-a-little-unique.html</guid><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Thu, 26 Jul 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Keeping a blockchain decentralised]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>This article proposes a Proof of IP (PoIP) to favour diversity of IP addresses over large number of server concentrated by IP address.</p>
</div>
<div class="paragraph">
<p>While blockchain solutions using Proof of Work (PoW) and Proof of Stake (PoS) can be decentralised, individuals or companies which are more efficient, or better funded to grow than others will naturally push out smaller players.  This can lead to a centralisation of those providing the service to those who have the most capital.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_blockchain_lakes">Blockchain lakes</h3>
<div class="paragraph">
<p>When a company achieves greater economies of scale, it push out the competition which is less efficient.  This leads to a small number of big players, who can offer a service at a lower price.  This become a problem when a small number of players can start to dictate terms even increasing the cost of service.</p>
</div>
<div class="paragraph">
<p>For PoW, access to cheap power and specialised hardware gives those companies an advantage.  This create lakes of processing power centralised around these locations and companies.  Companies with significant investment need to ensure they maintain their advantage, which might not always be in the best interest of the users.</p>
</div>
<div class="paragraph">
<p>For PoS, access to capital determines who can provide the service.  This has its advantages, but also means the direction of solution will be determined by companies and individuals with significant capital who want to protect their investment.</p>
</div>
</div>
<div class="sect2">
<h3 id="_proof_of_ip">Proof of IP</h3>
<div class="paragraph">
<p>Proof of IP uses verified IP address for each running node. Voting for each of the ~56,000 /16 domains is equal, ensuring that even a company with 65,000 servers doesn&#8217;t have a significant advantage.</p>
</div>
</div>
<div class="sect2">
<h3 id="_consensus">Consensus</h3>
<div class="paragraph">
<p>Each node can add a block of transaction per round. This enables a high degree of concurrency.  Voting is required to determine which blocks are added to the chain (and thus in what order)  Voting is balanced by the top bits of the IP making it much harder to buy up significant portions of the voting rights.</p>
</div>
</div>
<div class="sect2">
<h3 id="_want_to_know_more">Want to know more</h3>
<div class="paragraph">
<p><a href="https://github.com/OpenHFT/RFC/blob/master/Proof-of-IP/Proof-of-IP-1.0.adoc">Proof of IP RFC</a></p>
</div>
</div>
<div class="sect2">
<h3 id="_can_i_play_with_it">Can I play with it?</h3>
<div class="paragraph">
<p>A working implementation of a block chain which both records the IP verifications and can be extended to support other transactions is in active development.</p>
</div>
<div class="paragraph">
<p>The github project is <a href="https://github.com/OpenHFT/Chronicle-Accelerate">Chronicle Accelerate on GitHub</a></p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/07/19/Keeping-a-blockchain-decentralised.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/07/19/Keeping-a-blockchain-decentralised.html</guid><category><![CDATA[Decentralised]]></category><category><![CDATA[Blockchain]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Thu, 19 Jul 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Microsecond latency Microservice Benchmarked]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>It is common for a vendor to publish benchmarks with synthetic loads and code.  However, what can be reasonably achieve in a real application?  In this post, I discuss what we achieve with Chronicle Services for a client&#8217;s use case, a framework for low latency microservices.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_what_are_we_benchmarking">What are we benchmarking?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>In Chronicle Services we favour a high level interface where a publisher makes a method call, and the consumer is called back on the same method. This is slower than more direct access approaches but easier to maintain, esp for Java developers who want to develop in natural Java.</p>
</div>
<div class="listingblock">
<div class="title">Microservice interface</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public interface NewOrderSingleListener {
    void newOrderSingle(NewOrderSingle newOrderSingle);
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>A simple interface for messages in and a simple interface for messages out makes writing mocking services, creating data driven and integration tests natural and simple.</p>
</div>
<div class="paragraph">
<p>When used in the framework, every message is persisted in a logged/replayable manner and the publisher and consumer can be different JVMs or even different machines.</p>
</div>
<div class="paragraph">
<p>In this performance test, we include the time to:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>mock the interface</p>
</li>
<li>
<p>serialize the NewOrderSingle with 28 FIX fields, including String(s).</p>
</li>
<li>
<p>write to shared memory</p>
</li>
<li>
<p>read from shared memory in another microservice</p>
</li>
<li>
<p>deserialize a NewOrderSingle</p>
</li>
<li>
<p>make a method call to the component in the service.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>A significant portion of the time spent is in string handling.  The class for NewOrderSingle was generated for the FIX protocol schema using <a href="https://chronicle.software/products/fix/">Chronicle FIX</a></p>
</div>
<div class="paragraph">
<p>The test was run for 10,000,000 orders at a rate of 10,000 per second on a dual CPU E5-2650 v4 @ 2.20GHz server running Centos 7.  Each service was single threaded. Higher throughputs can be achieved by adding more threads, or with poorer latency profiles i.e the 99.9% is higher.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/NOS-latency.png" alt="NOS latency">
</div>
</div>
<div class="paragraph">
<p>The worst latency was 9.7 ms.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
In this test, no minor or major GCs were triggered.
</td>
</tr>
</table>
</div>
<div class="sect2">
<h3 id="_what_about_co_ordinated_ommission">What about co-ordinated ommission?</h3>
<div class="paragraph">
<p>For more information on what is co-ordinated ommission <a href="https://www.infoq.com/presentations/latency-pitfalls">How NOT to measure latency</a> by Gil Tene.</p>
</div>
<div class="paragraph">
<p>In our case, it doesn&#8217;t show in these results as we</p>
</div>
<div class="ulist">
<ul>
<li>
<p>have a low throughput compared with latency. The messages are 100 micro-seconds apart but typically have pass each message in around 1 micro-second.</p>
</li>
<li>
<p>in higher percentiles, it&#8217;s factor however they are not included here as they are very hard to reproduce from one system to another (OS/filesystem/CPU/Vendor/Java version). Even power settings and temperature are factors.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>In short, for the region of the chart shown, co-ordinated ommission isn&#8217;t a factor.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_how_does_this_compare_to_other_messaging_solutions">How does this compare to other messaging solutions?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>It is hard to find comparable benchmark results on the latency of messaging solutions.  One good option might be to use a benchmark like <a href="https://github.com/openmessaging/openmessaging-benchmark" class="bare">https://github.com/openmessaging/openmessaging-benchmark</a> although this doesn&#8217;t consider the serialization cost which can be relatively high, esp in Java if it triggers GCs. I couldn&#8217;t find any published benchmark results other than to say that Pulsar was faster than Kafka.</p>
</div>
<div class="paragraph">
<p>Most messaging solutions do not include the cost of serialization which can be higher than the cost of messaging.  Some only consider the time to publish or consume a message.  It is important to choose a benchmark which is representative of your use case.</p>
</div>
<div class="paragraph">
<p>Many messaging tests only consider throughput, or message latencies in milli-seconds.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_how_much_is_open_source">How much is open source?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>A good place to start is the <a href="https://github.com/OpenHFT/Chronicle-Queue" class="bare">https://github.com/OpenHFT/Chronicle-Queue</a> which has 1.4k stars and is a key library in building micro services.</p>
</div>
<div class="paragraph">
<p>If you are intrested in our low latency micro services framework which supports distribution and data driven testing of these micro-services contact <a href="mailto:sales@chronicle.software">sales@chronicle.software</a></p>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/06/14/Microsecond-latency-Microservice-Benchmarked.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/06/14/Microsecond-latency-Microservice-Benchmarked.html</guid><category><![CDATA[Low Latency]]></category><category><![CDATA[Microservices]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Thu, 14 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Chronicle downloads exceed 6 million in a month]]></title><description><![CDATA[<div class="paragraph">
<p>In the last three months we have seen a significant increase in downloads of our libraries.  Wider adoption of our libraries into popular frameworks appears to be driving this growth in downloads.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/chronicle-downloads-2018-05.png" alt="chronicle downloads 2018 05">
</div>
</div>
<div class="paragraph">
<p>A total of 6.3 million downloads across 450 thousand unique IPs is a huge increase for us. If you are not familar with all our open source products, these are our most popular:</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Java Thread Affinity <a href="https://chronicle.software/products/affinity/" class="bare">https://chronicle.software/products/affinity/</a></p>
</li>
<li>
<p>Zero Allocation Hashing <a href="https://chronicle.software/products/zeroallocationhashing/" class="bare">https://chronicle.software/products/zeroallocationhashing/</a></p>
</li>
<li>
<p>Chronicle Core (Low level JVM access) <a href="https://github.com/OpenHFT/Chronicle-Core" class="bare">https://github.com/OpenHFT/Chronicle-Core</a></p>
</li>
<li>
<p>Java Runtime Compiler <a href="https://github.com/OpenHFT/Java-Runtime-Compiler" class="bare">https://github.com/OpenHFT/Java-Runtime-Compiler</a></p>
</li>
<li>
<p>Chronicle Bytes (Thread safe native memory access for text and binary) <a href="https://github.com/OpenHFT/Chronicle-Bytes" class="bare">https://github.com/OpenHFT/Chronicle-Bytes</a></p>
</li>
<li>
<p>Chronicle Wire (Low GC serialization of text/binary to native memory) <a href="https://github.com/OpenHFT/Chronicle-Wire" class="bare">https://github.com/OpenHFT/Chronicle-Wire</a></p>
</li>
<li>
<p>Chronicle Threads <a href="https://github.com/OpenHFT/Chronicle-Threads" class="bare">https://github.com/OpenHFT/Chronicle-Threads</a></p>
</li>
<li>
<p>Chronicle Queue (Low latency journalled IPC) <a href="https://chronicle.software/products/queue/" class="bare">https://chronicle.software/products/queue/</a></p>
</li>
<li>
<p>Chronicle Map (Low latency peristed key-value store) <a href="https://chronicle.software/products/map/" class="bare">https://chronicle.software/products/map/</a></p>
</li>
</ol>
</div>
<div class="paragraph">
<p>If you have trouble getting started, ask us on <a href="https://stackoverflow.com/questions/tagged/chronicle" class="bare">https://stackoverflow.com/questions/tagged/chronicle</a></p>
</div>
<div class="paragraph">
<p>Chronicle also provides consulting, custom execution engines, and commercial support and well as enterprise extensions to many of these libraries. You can check out our new web site <a href="https://chronicle.software">chronicle.software</a> Email <a href="mailto:sales@chronicle.software">sales@chronicle.software</a> for more details.</p>
</div>]]></description><link>https://vanilla-java.github.io/2018/06/13/Chronicle-downloads-exceed-6-million-in-a-month.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/06/13/Chronicle-downloads-exceed-6-million-in-a-month.html</guid><category><![CDATA[Downloads]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Wed, 13 Jun 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[High throughput Consensus]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>When achieving consensus across a distributed network, the latency of that network is an important constraint. How can we increase throughput? How does Little&#8217;s law help?</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_time_to_consensus">Time to consensus</h3>
<div class="paragraph">
<p>To achieve <a href="https://en.wikipedia.org/wiki/Consensus_(computer_science)">consensus</a>, each node on a network needs to send information to each other.  Depending on your consensus model, it may have to send multiple series of messages to achieve consensus.</p>
</div>
<div class="sect3">
<h4 id="_minimum_latency">Minimum latency</h4>
<div class="paragraph">
<p>In latency sensitive trading systems, you send every message <a href="https://en.wikipedia.org/wiki/Message_queue#Synchronous_vs._asynchronous">asynchronously</a> and wait for acknowledgments as little as possible. The goal is to minimise the cost of recovery after a failure, with the expectation some data will be lost, no guarantee each node see messages in the same order (each producers messages should be ordered)</p>
</div>
<div class="paragraph">
<p>A constraint on the time to get a copy of the data is the network <a href="https://en.wikipedia.org/wiki/Latency_(engineering)">latency</a> one way, or half the round trip time (link). The delay is apparent only to systems receiving a copy of the data rather than the system producing the data.</p>
</div>
</div>
<div class="sect3">
<h4 id="_using_sequencer">Using  sequencer</h4>
<div class="paragraph">
<p>If you need to have total ordering between nodes, a "sequencer" can be added.  This centralised service listens for messages and broadcasts the order it has chosen for the messages.  Typically this is the order it sees them, but it could order them in any manner.  This node has a key/trusted role and the impact of going down is significant.  Provided the sequencer is simple and on reliable hardware, the likelihood of failure can be minimised.</p>
</div>
<div class="paragraph">
<p>Using a sequencer adds latency to all message processing, even messages processed on the same node as the producer as the sequencer needs to order the messages before they are processed.</p>
</div>
</div>
<div class="sect3">
<h4 id="_decentralised_consensus">Decentralised consensus</h4>
<div class="paragraph">
<p>What if you don’t have one trusted, centralised sequencer? What if you need to protect against <a href="https://en.wikipedia.org/wiki/Byzantine_fault_tolerance">Byzantine Failures</a>?</p>
</div>
<div class="paragraph">
<p>In this situation, each of the nodes need to play a role and achieving consensus where trust is in the super majority rather than any individual node.</p>
</div>
<div class="paragraph">
<p>This is more complicated and requires multiple rounds of messages to achieve agreement, however it handles random failure best as it assumes from the start that nodes are actively trying to disrupt the system.</p>
</div>
<div class="paragraph">
<p>In the case of <a href="http://www.chronicle-accelerate.com/">Chronicle Accelerate</a>, it has 4 phases to achieve consensus, meaning the time to consensus is a minimum of 4x the networks latency. In the design we assume the minimum round time is 5x the round trip time to include transmission and processing delays.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 1. Round time depending on network latency</caption>
<colgroup>
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 60%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Network Latency</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Round time (5x)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Example</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">0.2 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Multiple servers in the same data centre</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">0.6 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Multiple data centres close together</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Within a modest sized city</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">6 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">30 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Across a large city</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">20 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Across cities in the same country</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">60 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">300 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Europe to North Amercia</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">200 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1000 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Across continents with slower links</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">600 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3000 ms</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">World wide, hetrogenous network</p></td>
</tr>
</tbody>
</table>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
600 ms is twice as long as quality network between London and Japan. This is likely to be an up limit on the sort of network which might be used.
</td>
</tr>
</table>
</div>
</div>
<div class="sect3">
<h4 id="_little_s_law_and_achieving_high_throughputs">Little’s law and achieving high throughputs</h4>
<div class="paragraph">
<p>A common technique for increasing the throughput when latency is a concern, is to increase the batch (or block) size. To paraphrase Little’s law:</p>
</div>
<div class="paragraph">
<p>Average number of messages = processing throughput * average time to process</p>
</div>
<div class="paragraph">
<p>This determines how large the block size needs to achieve a desire throughput for a given latency.</p>
</div>
<table class="tableblock frame-topbot grid-all" style="width: 60%;">
<caption class="title">Table 2. Batch size needed to achieve a given throughput</caption>
<colgroup>
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-right valign-top">Consensus Latency</th>
<th class="tableblock halign-right valign-top">100/s</th>
<th class="tableblock halign-right valign-top">1 K/s</th>
<th class="tableblock halign-right valign-top">10 K/s</th>
<th class="tableblock halign-right valign-top">100 K/s</th>
</tr>
</thead>
<tfoot>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">3000 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">300 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">3K txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">30K txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">300K txn</p></td>
</tr>
</tfoot>
<tbody>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">10 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">1 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">10 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">100 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">1K txn</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">30 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">3 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">30 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">300 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">3K txn</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">100 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">10 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">100 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">1K txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">10K txn</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">300 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">30 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">300 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">3K txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">30K txn</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">1000 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">100 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">1K txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">10K txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">100K txn</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>IMHO, I feel more comfortable with batch size of 1 to 1000 as larger sizes have proven to be cumbersome in the past.</p>
</div>
<div class="paragraph">
<p>This all assumes that in each round, only one block is added, as most blockchain solutions do this.  In Accelerate’s case, each node can add one block in a round significantly reducing the size each block needs to be. (You could consider the collection of blocks produced across each node to be one batch making the difference somewhat semantic.)</p>
</div>
<table class="tableblock frame-topbot grid-all" style="width: 60%;">
<caption class="title">Table 3. Batch size needed with 25 servers in a cluster</caption>
<colgroup>
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
<col style="width: 20%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-right valign-top">Consensus Latency</th>
<th class="tableblock halign-right valign-top">100/s</th>
<th class="tableblock halign-right valign-top">1 K/s</th>
<th class="tableblock halign-right valign-top">10 K/s</th>
<th class="tableblock halign-right valign-top">100 K/s</th>
</tr>
</thead>
<tfoot>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">3000 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">12 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">120 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="orange">1.2K txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="orange">12K txn</span></p></td>
</tr>
</tfoot>
<tbody>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">10 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">1 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">1 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">4 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">40 txn</span></p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">30 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">1 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">2 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">12 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">120 txn</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">100 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">1 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">4 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">40 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">400 txn</p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">300 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">2 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">12 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">120 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="orange">1.2K txn</span></p></td>
</tr>
<tr>
<td class="tableblock halign-right valign-top"><p class="tableblock">1000 ms</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">4 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="green">40 txn</span></p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock">400 txn</p></td>
<td class="tableblock halign-right valign-top"><p class="tableblock"><span class="orange">4K txn</span></p></td>
</tr>
</tbody>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>Latency is a constraint but using larger batch sizes can increase the throughput which can be achieved within reason.  As batches get larger they add to transmission time increasing latency further placing a practical constraints on the batch size.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/04/25/High-throughput-Consensus.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/04/25/High-throughput-Consensus.html</guid><category><![CDATA[Blockchain]]></category><category><![CDATA[Consensus]]></category><category><![CDATA[Latency]]></category><category><![CDATA[Throughput]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Wed, 25 Apr 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Java Puzzles]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Here are some odd quiz questions in Java which might have interesting answers.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_questions">Questions</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_void_arrays">void arrays</h3>
<div class="paragraph">
<p>Which of the following doesn&#8217;t compile</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">void[] voids = new void[1]; <i class="conum" data-value="1"></i><b>(1)</b>
Void[] voids = new Void[1]; <i class="conum" data-value="2"></i><b>(2)</b>
Void[] voids = { }; <i class="conum" data-value="3"></i><b>(3)</b>
Object voids = Array.newInstance(void.class, 1); <i class="conum" data-value="4"></i><b>(4)</b></code></pre>
</div>
</div>
<div class="paragraph">
<p>See the answer at the end.</p>
</div>
</div>
<div class="sect2">
<h3 id="_null_reference">null reference</h3>
<div class="paragraph">
<p>What does this do?</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">Thread t = null;
t.yield();</code></pre>
</div>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>A compiler error</p>
</li>
<li>
<p>A runtime error</p>
</li>
<li>
<p>The JVM crashes</p>
</li>
<li>
<p>The JVM pauses briefly</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>What does this do?</p>
</div>
</div>
<div class="sect2">
<h3 id="_creating_an_array_of_generic">Creating an array of generic</h3>
<div class="paragraph">
<p>Which of the following creates an array of a generic type <code>T</code> which extends Object.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">T[] ts = new T[1]; <i class="conum" data-value="1"></i><b>(1)</b>
T[] ts = { new T(); }; <i class="conum" data-value="2"></i><b>(2)</b>
T[] ts = (T[]) new Object[1]; <i class="conum" data-value="3"></i><b>(3)</b>
T[] ts = Array.newArray(T.class, 1); <i class="conum" data-value="4"></i><b>(4)</b></code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_multiplying_characters">Multiplying characters</h3>
<div class="paragraph">
<p>The following code compiles but what does it print?</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">char ch = '1';
ch /= 0.9;
System.out.println(ch);</code></pre>
</div>
</div>
<div class="paragraph">
<p>prints</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>1</p>
</li>
<li>
<p>1.111111111111111</p>
</li>
<li>
<p>1.9</p>
</li>
<li>
<p>6</p>
</li>
</ol>
</div>
</div>
<div class="sect2">
<h3 id="_decimals">Decimals</h3>
<div class="paragraph">
<p>Which of the following prints <code>0.3</code></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">int x = 3;
System.out.println(x / 10); <i class="conum" data-value="1"></i><b>(1)</b>
System.out.println(x * 0.1); <i class="conum" data-value="2"></i><b>(2)</b>
System.out.println(x / 10.0); <i class="conum" data-value="3"></i><b>(3)</b>
System.out.println(0 + '.' + x); <i class="conum" data-value="4"></i><b>(4)</b>
System.out.println(0 + "." + x); <i class="conum" data-value="5"></i><b>(5)</b></code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_try_with_null">try with null</h3>
<div class="paragraph">
<p>What is NOT true about this code?</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">    public static void main(String... args) {
        try (PrintWriter pw = null) { }
    }</code></pre>
</div>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>It compiles but it doesn&#8217;t if you replace <code>PrintWriter</code> with <code>Writer</code>.</p>
</li>
<li>
<p>It produces no error at compile time or runtime.</p>
</li>
<li>
<p>The code won&#8217;t compile if <code>{ }</code> is replaced with <code>;</code>.</p>
</li>
<li>
<p>It doesn&#8217;t compile.</p>
</li>
</ol>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_answers">Answers</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_void_arrays_2">void arrays</h3>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">void[] voids = new void[1]; <i class="conum" data-value="1"></i><b>(1)</b>
Void[] voids = new Void[1]; <i class="conum" data-value="2"></i><b>(2)</b>
Void[] voids = { }; <i class="conum" data-value="3"></i><b>(3)</b>
Object voids = Array.newInstance(void.class, 1); <i class="conum" data-value="4"></i><b>(4)</b></code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>a <code>void[]</code> isn&#8217;t allowed.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>An array of any class is allowed even the <code>Void</code> class</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Also creates an empty <code>Void[]</code></td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>This triggers a runtime error, but not a compile error. The compiler has very little knowledge of how libraries work and doesn&#8217;t pick this up as an issue.</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_null_reference_2">null reference</h3>
<div class="paragraph">
<p>This code</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">Thread t = null;
t.yield();</code></pre>
</div>
</div>
<div class="paragraph">
<p>is the same as</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">Thread t = null;
Thread.yield(); // the method is static</code></pre>
</div>
</div>
<div class="paragraph">
<p>So the answer is 4 as it just pauses briefly.</p>
</div>
</div>
<div class="sect2">
<h3 id="_creating_an_array_of_generic_2">Creating an array of generic</h3>
<div class="paragraph">
<p>Which of the following creates an array of a generic type <code>T</code> which extends Object.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">T[] ts = new T[1]; <i class="conum" data-value="1"></i><b>(1)</b>
T[] ts = { new T(); }; <i class="conum" data-value="2"></i><b>(2)</b>
T[] ts = (T[]) new Object[1]; <i class="conum" data-value="3"></i><b>(3)</b>
T[] ts = Array.newArray(T.class, 1); <i class="conum" data-value="4"></i><b>(4)</b></code></pre>
</div>
</div>
<div class="paragraph">
<p>Only option (3) compiles. This makes it clear that the raw array is an Object array not the runtime type of <code>T[]</code></p>
</div>
</div>
<div class="sect2">
<h3 id="_multiplying_characters_2">Multiplying characters</h3>
<div class="paragraph">
<p>The following code compiles but what does it print?</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">char ch = '1';
ch /= 0.9;
System.out.println(ch);</code></pre>
</div>
</div>
<div class="paragraph">
<p>prints <code>6</code>.</p>
</div>
<div class="paragraph">
<p>Each <code>char</code> is an unsigned 16-bit value which holds the unicode of the character. <code>'1'</code> has a unicode of 49. <code>49 / 0.9</code> is <code>54.4444444</code> however this is cast back to a <code>char</code> in the <code>/=</code> operation so <code>ch = (char) 54</code> which is the unicode for <code>'6'</code></p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Each assignment operator implicitly converts the result back to the type of the variable so <code>ch /= 0.9</code> is like <code>ch = (char) ((double) ch / 0.9);</code>
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_decimals_2">Decimals</h3>
<div class="paragraph">
<p>Which of the following prints <code>0.3</code></p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">int x = 3;
System.out.println(x / 10); <i class="conum" data-value="1"></i><b>(1)</b>
System.out.println(x * 0.1); <i class="conum" data-value="2"></i><b>(2)</b>
System.out.println(x / 10.0); <i class="conum" data-value="3"></i><b>(3)</b>
System.out.println(0 + '.' + x); <i class="conum" data-value="4"></i><b>(4)</b>
System.out.println(0 + "." + x); <i class="conum" data-value="5"></i><b>(5)</b></code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>This uses integer division; 3 / 10 is 0 with 3 remainder.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>0.1 has a representation error which means it is slight larger than 0.1 and when multipied with 3 gets <code>0.30000000000000004</code></td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>This prints 0.3 as 10.0 can be represented without error.</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>This uses integer addition i.e. <code>0 + (int) '.' + x</code>	which is <code>49</code></td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
<td>This uses String addition so is ok.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>In short, lines 3 and 5 print <code>0.3</code></p>
</div>
</div>
<div class="sect2">
<h3 id="_try_with_null_2">try with null</h3>
<div class="paragraph">
<p>What is NOT true about this code?</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">    public static void main(String... args) {
        try (PrintWriter pw = null) { }
    }</code></pre>
</div>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>It compiles but it doesn&#8217;t if you replace <code>PrintWriter</code> with <code>Writer</code>. True as <code>Writer.close()</code> throws an <code>IOException</code> but <code>PrintWriter.close()</code> doesn&#8217;t</p>
</li>
<li>
<p>It produces no error at compile time or runtime. True as a <code>null</code> Closeable is silently ignored at runtime.</p>
</li>
<li>
<p>The code won&#8217;t compile if <code>{ }</code> is replaced with <code>;</code>. True as <code>;</code> is not allowed as a nexted statement of a try-with-resource block unlike <code>while</code>, <code>if</code> or <code>for</code></p>
</li>
<li>
<p>It doesn&#8217;t compile. False, it compiles.</p>
</li>
</ol>
</div>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/04/20/Java-Puzzles.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/04/20/Java-Puzzles.html</guid><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Fri, 20 Apr 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[When is using a Blockchain compelling]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>I was recently asked, when is using a Blockchain really needed?</p>
</div>
<div class="paragraph">
<p>IMHO the main benefit is <strong>ease of provider integration</strong> Blockchain allows providers to join a system, with a much lower barrier to entry. If you are looking to build a network of new and innovative providers, which don&#8217;t have to trust each other, instead they trust the protocol, a blockchain is a compelling solution.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_when_is_blockchain_not_a_compelling_reason">When is Blockchain not a compelling reason?</h3>
<div class="paragraph">
<p>First I feel I should debunk some reasons often stated.</p>
</div>
<div class="sect3">
<h4 id="_blockchain_doesn_t_make_everything_better">Blockchain doesn&#8217;t make everything better</h4>
<div class="paragraph">
<p>In many cases, when a blockchain is proposed, it is used as little more than a log of changes in a database. In some cases, a distributed ledger could be used when a centralised database isn&#8217;t enough. Blockchain projects are easier to get approved these days as companies and individuals want to improve their blockchain skill sets but this doesn&#8217;t make it compelling from a technical point of view IMHO.</p>
</div>
</div>
<div class="sect3">
<h4 id="_blockchain_is_unlikely_to_make_things_faster">Blockchain is unlikely to make things faster</h4>
<div class="paragraph">
<p>In most cases you will still need a database for reporting services, so adding a blockchain is highly likely to make it more complicated and slower, not simpler and faster than a database alone. <a href="https://www2.deloitte.com/nl/nl/pages/financial-services/articles/5-blockchain-use-cases-in-financial-services.html">See this article which mention speeding up payments</a></p>
</div>
<div class="paragraph">
<p>Blockchain can make a system faster if it can replace enough of an existing system which already implements the features a blockchain offers, but in a less efficient manner.</p>
</div>
</div>
<div class="sect3">
<h4 id="_blockchain_doesn_t_address_all_security_concerns">Blockchain doesn&#8217;t address all security concerns</h4>
<div class="paragraph">
<p>To compromise a cluster of nodes you can employ a <a href="https://learncryptography.com/cryptocurrency/51-attack">51% attack</a>. If you control a majority of nodes, you control the whole system.  This could happen by adding or hacking enough nodes. A state level organisation could do this, potentially even with the most popular crypto currencies, however most governments have easier/cheaper ways of exercising policy or influence.</p>
</div>
<div class="paragraph">
<p>Many cryptocurrencies are public which is a real privacy concern when some of the bank balances are very high (or at least high to the individuals holding them).</p>
</div>
<div class="paragraph">
<p>At the time of writing <a href="https://bitinfocharts.com/bitcoin/address/3D2oetdNuZUqQHPJmcMDDHYoqkyNVsFk9r">This bitcoin address</a> has $1.5 bn, and this <a href="https://etherscan.io/address/0x281055afc982d96fab65b3a49cac8b878184cb16">ethereum address</a> has around $770 m which makes them targets for hackers and organised crime.</p>
</div>
<div class="paragraph">
<p>Making this information private is likely to be highly desirable. However it could still be obtained through a hack though that is harder.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_when_is_blockchain_compelling">When is Blockchain compelling?</h3>
<div class="paragraph">
<p>When participants trust a protocol, they don&#8217;t have to trust each other as much. This makes inclusion of new participants easier and allow existing ones to be more innovative.</p>
</div>
<div class="sect3">
<h4 id="_security">Security</h4>
<div class="paragraph">
<p>Reduced security impacts via a <a href="https://www.forbes.com/sites/bernardmarr/2017/08/10/practical-examples-of-how-blockchains-are-used-in-banking-and-the-financial-services-sector/">immutable ledger</a> This means a new provider can join without all the existing providers needing to be fully comfortable with their security setup.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
A high percentage of hacks involve disgruntled former employees. If you trust every node from every provider you have to trust every person operating it.
</td>
</tr>
</table>
</div>
</div>
<div class="sect3">
<h4 id="_innovative_solutions">Innovative solutions</h4>
<div class="paragraph">
<p>Using sub-chains, different providers can offer innovative solutions, without everyone else in the system needing to be comfortable with those solutions. By the time every participant is comfortable with a new solution, it&#8217;s probably not that innovative/disruptive. If every node needs to be trusted, you can&#8217;t offer a solution/transaction type unless every provider is comfortable with the risk associated with it.</p>
</div>
</div>
<div class="sect3">
<h4 id="_built_in_fee_support">Built in fee support</h4>
<div class="paragraph">
<p>As the system controls the flow of value, it can also include settlement of fees and cut off participants as a result of exceeding some limit. e.g. if a participant, for whatever reason, starts spamming the system, this will cost them and result in them being cut off.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_does_a_blockchain_need_to_have_its_own_currency">Does a blockchain need to have its own currency?</h3>
<div class="paragraph">
<p>A blockchain offers a virtualisation of currencies.  These can be backed by fiat or another digital currencies, or a new currency or both.  If the system has fees to cover the cost of running the service, it needs to be in a supported currency.  This could be in USD or EUR rather a new currency, however a crypto currency has the advantage that the actual cost can have a floating exchanging rate with fiat currencies. e.g. each transaction could cost 1 TXN and the value of this can be determined by an exchange.</p>
</div>
<div class="paragraph">
<p>New currencies can have novel features such as only being usable after a future date. You could have a 1000 USD token which is only usable after 1st Jan 2020, but can be bought now at a discount.</p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>While I feel than many blockchain solutions could have used a database instead, there are some compelling use cases which allow multiple providers to offer innovating solutions to customers.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/04/16/When-is-using-a-Blockchain-compelling.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/04/16/When-is-using-a-Blockchain-compelling.html</guid><category><![CDATA[Block Chain]]></category><category><![CDATA[Use Case]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Mon, 16 Apr 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Blockchain Design considerations]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>After I announced the release of Chronicle Accelerate, a high throughput blockchain solution in Java. One of the questions which came up was; What were the design considerations that went into the solution, particularly around throughput vs latency?</p>
</div>
<div class="paragraph">
<p>Many of these design considerations are not specific to Blockchain or Java, but general performance tuning.</p>
</div>
<div class="paragraph">
<p>If you have any questions, please AMA <a href="https://t.me/ChronicleXCL" class="bare">https://t.me/ChronicleXCL</a></p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_why_use_java">Why use Java?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>If you want maximum performance, why use Java?</p>
</div>
<div class="paragraph">
<p>This has two assumptions; what are you maximising the performance of, and is the Java portion a bottleneck anyway.</p>
</div>
<div class="paragraph">
<p>In most IT solutions, the cost of the hardware is small compared with the cost of IT development, esp if you don&#8217;t use a solution which is designed to be expensive such as Proof of Work.  Use a lower CPU model, and the resource you want to maximise is development of the solution ie people. Most of the cost of development is actually in integration with existing systems. So you want to spend most of your time designing a system which is easy to develop and integrate with.
Java is one of the most widely used languages, and one of the easiest to master all it&#8217;s lean set of features. By supporting multiple common APIs from the start, you make sure ease of integration is a priority in the design.</p>
</div>
<div class="paragraph">
<p>In terms of the blockchain solution we chose, the key bottleneck CPU wise is the Ed25519 signature and verification.  The core of this algorithm is actually written in assembly to maximise performance. In designing a "maxed out" node to get the highest throughput per sub chain I would estimate the number of CPUs to be</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Code type</th>
<th class="tableblock halign-left valign-top">CPUs</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Assembly (Ed25519)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;40</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Operating System (Mostly TCP)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;24</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Java</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;&nbsp;4</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>While all the interesting custom development and business logic will be in Java, most of the CPU will be consumed by code already written and optimised in another language.</p>
</div>
<div class="paragraph">
<p>In short, we want to maximise developer efficiency, and most of the CPU consumed isn&#8217;t written in Java anyway.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_why_develop_a_blockchain">Why develop a Blockchain?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Many solutions which are blockchain based, when they optimise the CPU consumed end up taking away some of the reason for having a blockchain in the first place.  If all you end up developing is a distributed ledger or a simple database, I don&#8217;t see the point as these solutions already exist.</p>
</div>
<div class="paragraph">
<p>An essential feature which makes a blockchain different is; not needing to trust individual nodes are not fraudulent. If we optimise the solution but lose this feature in the process, we really have a distributed ledger (sometimes called a "Private Blockchain")  Basically if you have a blockchain which can&#8217;t be run/mined publically I don&#8217;t see the use case, though it might be a good marketting strategy.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_ways_of_protecting_against_fraud">Ways of protecting against fraud</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Fraud protection should prevent creating unathorized messages. Note: preventing a message from being falsified doesn&#8217;t prevent it from being read.</p>
</div>
<div class="paragraph">
<p>In our case, we use cryptographic signatures to transactions so that only the holder of a private key can create or modify the the transaction.  For this case we use Ed25519 as one of the fastest 256-bit signatures.</p>
</div>
<div class="paragraph">
<p>Use of such a signature and verification, adds significantly to latency.  The backend blockchain add about 2.5 micro-seconds latency however the verification and signing needed adds about 100 micro-seconds.  While we can add CPUs to increase throughput, they won&#8217;t help in reducing latency.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_optimising_for_throughput">Optimising for throughput</h2>
<div class="sectionbody">
<div class="paragraph">
<p>While most systems are optimized for throughput, trading systems tend to optimise for latency.  Reduce latency enough and you will also get the throughput you need.  Whether you optimise for throughput or latency depends on the type of problem you have. If many portions of the work can be done at once without having to work together, you can optimise for throughput with concurrent processing, esp as this is usually easier.  If you have have key portions of work which must be performed in order such as transactions, you have to reduce the latency of each transaction to increase throughput.</p>
</div>
<div class="paragraph">
<p>As we have identified, most of the work is CPU bound, and independant. To optimise the system, we need to examine which pieces of work are serial by nature.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_identifying_serial_bottlenecks">Identifying serial bottlenecks</h2>
<div class="sectionbody">
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top">Concurrent</th>
<th class="tableblock halign-left valign-top">Serial</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Sign/verify</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Consensus</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Client TCP</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Transaction processing</p></td>
</tr>
</tbody>
</table>
<div class="sect2">
<h3 id="_consensus">Consensus</h3>
<div class="paragraph">
<p>The cost of consensus increases with the rate at which this happens O(N), and the number of nodes in the cluster O(M ln M). In the later case, M nodes have M times the processing power so the overhead is just O(ln M)</p>
</div>
<div class="paragraph">
<p>However, both of these are in our control. We determine how often consensus is reached. We decide if its 10 ms, 1 second or 1 minute. Obviously we want this to be low, as this largely determines the latency of each transaction, however we can adjust it to suit our needs and the enviroment the nodes are running in.</p>
</div>
<div class="paragraph">
<p>The number of nodes in the cluster is also something we have some control over.  We don&#8217;t want too few nodes, but we get diminishing returns and increasing cost on having more nodes.</p>
</div>
<div class="paragraph">
<p>In our case, we are looking to split the chain to improve efficiency once we have more nodes than we need in a chain.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The cost of consensus doesn&#8217;t increase with throughput, and is largely constant. i.e. when there is no transactions, confirming nothing is happening is all the nodes will do.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_transaction_processing">Transaction processing</h3>
<div class="paragraph">
<p>The cost of processing transactions increases with throughput, and this determines the limit as to how much each sub-chain can do. Our aim is to make processing each transaction as lightweight as possible. Currently each transaction takes around 2.5 micro-seconds, which means the throughput achievable is 400K per second per sub-chain (1/2.5 us)  We believe this can be improved, however with the option of having thousands of sub-chains, we might never need to do this.</p>
</div>
</div>
<div class="sect2">
<h3 id="_chain_splitting">Chain splitting</h3>
<div class="paragraph">
<p>A straight forward way to split a chain is by address. We could use a bit of the address to determine which chain the address will be managed by.  However, if we have a random arrangement of addresses, as we split, it gets increasingly unlikely that a transaction with only involve one sub-chain.  Ideally we want a high proportion of transaction to involve just one chain to maximise concurrency and reduce overhead.</p>
</div>
<div class="paragraph">
<p>Another approach is to attempt to regionalise the addresses.  For this purpose we have chosen the <a href="https://en.wikipedia.org/wiki/ISO_3166">ISO 3166</a> standard for country and region codes around the world, giving us around 4000 regions which have some meaning geographically.  This follows the assumption that most transactions a person or local business has, will involve other people or businesses in their local area.  A person or business can hold multiple addresses to benifit from local transactions across multiple sub-chains.</p>
</div>
<div class="paragraph">
<p>For example, if I live in New York, or do some business there, I could have an New York address.  The blockchain address in base 32 appears as @usny6897dh38d. The <strong>usny</strong> is the region code. I can trade with any address on the same chain quickly and efficiently.  If I need to send money to another region, this will take longer, but it might take seconds instead of being sub-second.</p>
</div>
</div>
<div class="sect2">
<h3 id="_weekly_checkpointing">Weekly checkpointing</h3>
<div class="paragraph">
<p>Some blockchain solutions require every transaction from the genesis block to be available to work out if any given transaction was successful. The cost of doing this grows both with the number of transactions over time.  This is fine provided that computing power grows faster, however what works for say 10 transactions per second won&#8217;t scale to beyond 100,000 transactions per second.</p>
</div>
<div class="paragraph">
<p>So based on how foriegn exchange systems work, we will be using a weekly cycle.  This has a number of benefits.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>it reduces the volume of data which needs to be retained to the state at the start of the week and each transaction which has happened in the week.</p>
</li>
<li>
<p>GDPR includes the right to be forgotten. However if a blockchain requires your transaction to be remembered forever, it&#8217;s not clear how this can work.  If you use weekly cycles, your transactions can be forgotten after N weeks (data may need to be retained for legal reasons, but not more than that)</p>
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_conclusion">Conclusion</h2>
<div class="sectionbody">
<div class="paragraph">
<p>There are many design consideration is how to layout a blockchain solution.  My focus is on the sort of problem only a blockchain could solve i.e. with untrusted nodes running the service.  I firmly believe these problems are solvable.</p>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/04/03/Blockchain-Design-considerations.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/04/03/Blockchain-Design-considerations.html</guid><category><![CDATA[Blockchain]]></category><category><![CDATA[Architecture Design]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Tue, 03 Apr 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[Blockchain basics]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>The key difference between blockchain and traditional databases is the level of trust needed in those running the service.  With blockchain you trust the protocol, not those running it.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_what_does_a_blockchain_do">What does a blockchain do?</h3>
<div class="paragraph">
<p>A blockchain records transactions without needing to trust any individual, organisation or computer, in a tamper proof way (or pretty close).  This serves the same purpose as the record of transactions for your bank account, without needing to trust a bank.</p>
</div>
</div>
<div class="sect2">
<h3 id="_what_is_a_blockchain">What is a blockchain</h3>
<div class="paragraph">
<p>A <strong>blockchain</strong> is a <strong>chain</strong> of transactions. This chain records which transactions occured and in what order.  The order matters when trying to prevent double spend (spending the same money twice) The servers running a blockchain agree on this order in rounds which can be sub second, up to minutes.  Bitcoin for example has a round every 10 minutes.</p>
</div>
<div class="paragraph">
<p>If the blockchain could only agree on one transaction every ten minutes, this would be impractially slow.  Instead they agree on a <strong>block</strong> of transactions, which is like a page of thousands of transactions. By agreeing on blocks at a time, they can process many transactions per second on average.</p>
</div>
<div class="paragraph">
<p>A blockchain is a chain of blocks of transactions.</p>
</div>
</div>
<div class="sect2">
<h3 id="_how_does_it_differ_from_a_database">How does it differ from a database?</h3>
<div class="paragraph">
<p>A traditional database can also record transactions. Traditional databases require trust between servers, which isn&#8217;t usually a problem within an organisation. Traditional databases are designed to recover from accidental failure, but cannot protect against deliberate attack by one of the  servers. Banks use databases as they provide every server involved and ensure they are secure enough not to be compremised.</p>
</div>
<div class="paragraph">
<p>From my experience, many blockchain projects could have used a database as there is an assumption of trust between servers running the database. One reason blockchain might have been used as it is a more desirable technology to have experience and expertise in.</p>
</div>
</div>
<div class="sect2">
<h3 id="_characteristics_of_a_blockchain">Characteristics of a blockchain</h3>
<div class="paragraph">
<p>How nodes running a blockchain come to concensus is important to;</p>
</div>
<div class="ulist">
<ul>
<li>
<p>how much power they consume.</p>
</li>
<li>
<p>how much trust is required between nodes.</p>
</li>
<li>
<p>how fast it can process transactions</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Ideally you want is; low power consumption, low level of trust and a high throughput.  Newer blockchain solutions are looking to achieve these three in combination.</p>
</div>
<div class="paragraph">
<p>Power consume is a concern in some cases as blockchains like Bitcoin can use more power than a modest sized country like Ireland.</p>
</div>
<div class="paragraph">
<p>The level of trust required is important as the low the level required the easier it is add the blockchain and join it.</p>
</div>
<div class="paragraph">
<p>The transaction rate is key to keeping up with demand and a low transaction rate limits what it can be used for.</p>
</div>
</div>
<div class="sect2">
<h3 id="_private_blockchains">Private blockchains</h3>
<div class="paragraph">
<p>Private blockchains can have a lower overhead, and not publically expose your data, however they generally assume that each of the servers is trusted to a high degree and don&#8217;t look to protect against actively fraudulent behaviour.</p>
</div>
<div class="paragraph">
<p>This doesn&#8217;t mean you shouldn&#8217;t have private blockchains, rather that they could have just used a traditional database.</p>
</div>
</div>
<div class="sect2">
<h3 id="_public_blockchains">Public blockchains</h3>
<div class="paragraph">
<p>Public blockchains are ones which could be run by anyone with appropriate hardware (and possibly money for Proof of Stake) trusting the protocol, without needing to trust individuals however they are not completely safe and can be changed.</p>
</div>
</div>
<div class="sect2">
<h3 id="_the_50_1_attack">The 50% + 1 attack</h3>
<div class="paragraph">
<p>If you control 50% + 1 of the nodes of a blockchain, you can override the behaviour of the blockchain just through majority, however you don&#8217;t need that many to stop one running.</p>
</div>
<div class="paragraph">
<p>It is possible that a nation state could have the resources to control a public blockchain.</p>
</div>
</div>
<div class="sect2">
<h3 id="_the_1_3_attack">The 1/3 attack</h3>
<div class="paragraph">
<p>If you have a <a href="https://en.wikipedia.org/wiki/Byzantine_fault_tolerance">Byzantine Fault</a> i.e. nodes actively trying to prevent the running of a service, controlling just 1/3 of the nodes can prevent operation of the service.</p>
</div>
<div class="paragraph">
<p>Some care needs to be taken to prevent 1/3 of the nodes actively trying to stop operation.</p>
</div>
</div>
<div class="sect2">
<h3 id="_blockchain_doesn_t_have_to_be_complicated">Blockchain doesn&#8217;t have to be complicated</h3>
<div class="paragraph">
<p>The ecosystem around blockchain is complex and rapidly evolving, however the core of the solution needs to be simple to be easy to verify that it&#8217;s trustworthy.</p>
</div>
<div class="paragraph">
<p>In the future, like databases, we will see a variety of solutions to suit different use cases, and many more solution built on top of them to provide services and fill customer needs.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2018/03/21/Blockchain-basics.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2018/03/21/Blockchain-basics.html</guid><category><![CDATA[Blockchain]]></category><category><![CDATA[Guide]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Wed, 21 Mar 2018 00:00:00 GMT</pubDate></item><item><title><![CDATA[StringBuffer and how hard it is to get rid of legacy code]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>In 2006, Java 5.0 was released with StringBuilder, a more light weight and sane version of StringBuffer. The <a href="https://docs.oracle.com/javase/1.5.0/docs/api/java/lang/StringBuffer.html">Javadoc for Java 5.0 for StringBuffer</a> notes</p>
</div>
<div class="listingblock">
<div class="content">
<pre>As of release JDK 5, this class has been supplemented with an equivalent class designed for use by a single thread, StringBuilder. The StringBuilder class should generally be used in preference to this one, as it supports all of the same operations but it is faster, as it performs no synchronization.</pre>
</div>
</div>
<div class="paragraph">
<p>Having <code>synchronized</code> on <code>StringBuffer</code> was never a good idea. The basic problem is that one operation is never enough. A single <code>.append(x)</code> is not useful without another <code>.append(y)</code> and a <code>.toString()</code>. While individual methods were thread safe, you couldn&#8217;t make multiple calls to StringBuffer without race conditions.  Your only option is external synchronized or using <code>ThreadLocal</code> StringBuilders (or more obviously create them on demand)</p>
</div>
<div class="paragraph">
<p>So more than ten years later, no one uses StringBuffer!? Certainly not for new functionality!?</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_how_many_objects_does_this_create">How many objects does this create?</h3>
<div class="paragraph">
<p>As I have noted before, the JVM creates many objects on start up or starting core libraries.  Much more than you might expect making question like the following are a bit meaningless;</p>
</div>
<div class="listingblock">
<div class="title">How many objects does this create?</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">public class Main {
    public static void main(String... args) {
        System.out.println("Hello " + "world");
    }
}</code></pre>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2017/04/13/String-Buffer-and-how-hard-it-is-to-get-rid-of-legacy-code.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2017/04/13/String-Buffer-and-how-hard-it-is-to-get-rid-of-legacy-code.html</guid><category><![CDATA[Pet Hates]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Thu, 13 Apr 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Object Pools revisited]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Object pools were popular before Java 5.0 however more efficient allocation made most of these pools a needless complication. Can a Object Pool still make sense and how fast do they need to be?</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_overview">Overview</h3>
<div class="paragraph">
<p>Up to Java 5.0 using object pools could significantly improve performance.  However from Java 5.0, the cost of using naive object pools was often worse (and more complicated) than just allocating new objects all the time.  However, if you work in a low latency environment and you want to keep allocations low, is there a way to make an object pool light weight enough to make sense.</p>
</div>
<div class="paragraph">
<p>A common use of a low level object is in the creation of Strings esp as input.  Whether you have a service reading data from the network, or loading data from a database or file, you are likely to use a lot of Strings. While there are tricks to avoid using Strings, most of the alternatives lead to unnatural Java code which is ugly and harder to maintain.  It would be much better if there was an efficient way to reuse Strings (assuming a high rate of duplication)</p>
</div>
</div>
<div class="sect2">
<h3 id="_the_test">The test</h3>
<div class="paragraph">
<p>This test assume we have some data in native memory (from a TCP socket or a file), and we have the option to avoid copying the data into a byte[] before creating a String.</p>
</div>
<div class="paragraph">
<p>For different lengths of bytes (1, 2, 4, 8, 16, 32) we use JMH to benchmark how long it takes to provide a matching String.</p>
</div>
<div class="paragraph">
<p>"Object Pool" uses an object pool for the bytes converted into a String.</p>
</div>
<div class="paragraph">
<p>"new String US-ASCII" copies the data to a byte[] and uses US-ASCII encoding to create the String.</p>
</div>
<div class="paragraph">
<p>"new String hibyte=0" copies the data to a byte[] and uses a deprecated constructor to set the hi byte to 0 create the String.</p>
</div>
<div class="paragraph">
<p>The Source code is available here <a href="https://github.com/OpenHFT/Chronicle-Wire/blob/master/microbenchmarks/src/main/java/net/openhft/chronicle/wire/benchmarks/ObjectPoolMain.java">ObjectPoolMain.java</a></p>
</div>
</div>
<div class="sect2">
<h3 id="_the_results">The results</h3>
<div class="paragraph">
<p>The average time to use the Object Pool was around 9 nano-seconds for short strings of up to 8 characters. About half the saving comes from avoiding the need to copy the data to a byte[] first. Also avoiding the use of even a trivial Charset character encoding also saved a significant amount.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/bytesToString.png" alt="bytesToString">
</div>
</div>
</div>
<div class="sect2">
<h3 id="_why_use_an_object_pool_at_all">Why use an Object Pool at all?</h3>
<div class="paragraph">
<p>In this case the main reason is to avoid creating objects. If the String can be reused, it can dramatically reduce the garbage produced. Most of the time, only new Strings take space, rather than every String your use and this can be a 90% reduction in memory use and garbage production.</p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>For some use cases, an Object Pool is fast enough, possibly faster when it is has been optimised to minimise copies and supporting functions like character encoding.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The library used only supports ISO-8859-1 and UTF-8, so if you need another character encoding it would be significant work or use would have to use the standard functions.
</td>
</tr>
</table>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2017/03/12/Object-Pools-revisited.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2017/03/12/Object-Pools-revisited.html</guid><category><![CDATA[Low Latency]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Sun, 12 Mar 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Can you have encryption and low latency in Java]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>While using encryption is slower than writing raw messages, how much slower is it and does it have to be a performance problem?</p>
</div>
<div class="paragraph">
<p>In this post, I look at Chronicle Queue, with and without encryption to see how much difference it makes to latency.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_the_test">The test</h2>
<div class="sectionbody">
<div class="paragraph">
<p>In this test, there is one writer or Appender, writing data at regular intervals using a Marshallable object, containing a nano-second timestamp. Another reader or "Tailer" is reading those messages.
The timestamp used is the time the message should have been written rather than when it was written to avoid co-ordinated omission.</p>
</div>
<div class="paragraph">
<p>The message is 32 bytes in length, and 5 million messages were sent in each case after ignoring the first 100 thousand to allow the JVM to warmup.</p>
</div>
<div class="paragraph">
<p>The computer used is a Dell XPS 15 with an i7-6700HQ with 8 GB memory running Windows 10.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_salted_aes_encryption">Salted AES encryption.</h2>
<div class="sectionbody">
<div class="paragraph">
<p>AES128 is a fast 128 bit encryption, though it has one weekness. If all the messages start the same (and in this test and is often the case) the first bytes become predictable.  This makes cracking the key easier.</p>
</div>
<div class="paragraph">
<p>A standard soluton is to use a "salt", which is a random block at the start of the message. In our case we use a 64-bit psedo random number with the System.nanoTime() (also 64-bit)</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_the_latency_distribution">The latency distribution</h2>
<div class="sectionbody">
<div class="paragraph">
<p>In throughput tests, the machine can write/read over one million messages per second with encryption, however the latency distribution is poor in this range.
For the purposes of this test we are looking at what throughput do we get low latency as well .</p>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2017/03/03/Can-you-have-encryption-and-low-latency-in-Java.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2017/03/03/Can-you-have-encryption-and-low-latency-in-Java.html</guid><category><![CDATA[Encryption]]></category><category><![CDATA[Low Latency]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Fri, 03 Mar 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Low latency encrypted messages with Chronicle Queue Enterprise]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Chronicle Queue Enterprise supports replication in a cluser and system monitoring. We recently added encrypted messages and the inital results are encouraging.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_what_did_we_test">What did we test?</h3>
<div class="paragraph">
<p>This test s similar to our previous non-encrypted version: <a href="https://vanilla-java.github.io/2017/02/06/Improving-percentile-latencies-in-Chronicle-Queue.html">Latency tests with Chronicle Queue</a>, except we added Salted AES 128 encryption.  We chose AES as a fast encryption, and we added salting to make it harder to obtain the key</p>
</div>
</div>
<div class="sect2">
<h3 id="_why_use_salting">Why use Salting?</h3>
<div class="paragraph">
<p>Most messages start with the same bytes. Whether the message is XML, JSON, FIX, Java Serialization, the first few bytes are predictable.  The start of every encrypted message can end up the same. This makes brute force cracking of the key easier because you know what you are looking for.</p>
</div>
<div class="paragraph">
<p>To avoid this we add a 64 bit random number to the start of every message using SecureRandom, which makes brute force attack harder.</p>
</div>
</div>
<div class="sect2">
<h3 id="_the_results">The results.</h3>
<div class="paragraph">
<p>In short the 99%ile latencies were great, the 99.9%ile latencies were also good if you ignore co-ordinated omission as a problem. Unfortunately, with co-ordinated omission correction, the 99.9%ile numbers need to be improved.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/AES128-latency.png" alt="AES128 latency">
</div>
</div>
<div class="paragraph">
<p>Nevertheless, the early results look good.  We can achieve throughputs of 400K/s and still get latencies around 2 micro-seconds 99% of the time. In addition, at 1.1 million messages per second we can get around 10 microseconds, 99% of the time.</p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>Using encryption is slower, however it might still be fast enough for your needs.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2017/02/07/Low-latency-encrypted-messages-with-Chronicle-Queue-Enterprise.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2017/02/07/Low-latency-encrypted-messages-with-Chronicle-Queue-Enterprise.html</guid><category><![CDATA[Chronicle Queue]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Tue, 07 Feb 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Improving percentile latencies in Chronicle Queue]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Compared to a year ago, we have significantly improved the throughput at which we can achieve the 99%ile (worst one in 100).
What tools and tricks did we use to achieve that?</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_what_are_we_testing">What are we testing?</h3>
<div class="paragraph">
<p>Chronicle Queue appends messages to a file while another thread or process can be reading it.  This gives you persisted IPC (InterProcess Communication).</p>
</div>
<div class="paragraph">
<p>For our clients with higher expectations for latency, they are looking to have the whole service which is under 100 micro-seconds 99% of the time.</p>
</div>
<div class="paragraph">
<p>For our test, we have chosen to find the throughput you can achieve and still be under 10 micro-seconds 99% of the time. The test writes 20 million 40 bytes messages, which contains the time the message should have been sent to avoid co-ordinated omission, and read by another thread. The difference in time is recorded.</p>
</div>
<div class="paragraph">
<p>We have also added encryption support for our enterprise solution. We test here a salted AES 128-bit encryption.</p>
</div>
</div>
<div class="sect2">
<h3 id="_the_improvement">The improvement</h3>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Test</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Throughput where 99%ile is 10 microseconds</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">March 2016, unencrypted<br>
Centos 7 server</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;&nbsp;&nbsp;100 K/s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">February 2017, encrypted<br>
Centos 7 server</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">&nbsp;&nbsp;&nbsp;700 K/s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">February 2017, unencrypted<br>
Windows 10 Laptop</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1,200 K/s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">February 2017, unencrypted<br>
Centos 7 server</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2,400 K/s</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>What makes this improvement significant, is that we added correction for co-ordinated omission.</p>
</div>
</div>
<div class="sect2">
<h3 id="_sampling_tool">Sampling tool</h3>
<div class="paragraph">
<p>While profilers are very useful, one thing they struggle with is helping you find the cause of latency outliers.  This is because profilers show you averages, and unless your outliers are really large, they don&#8217;t show up as significant.</p>
</div>
<div class="paragraph">
<p>To address this we added a class which acts as a basic stack sampler.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">package net.openhft.chronicle.core.threads;

import java.util.concurrent.locks.LockSupport;

/**
 * Created by peter on 04/02/17.
 */
public class StackSampler {
    private final Thread sampler;
    private volatile Thread thread = null;
    private volatile StackTraceElement[] stack = null;

    public StackSampler() {
        sampler = new Thread(this::sampling, "Thread sampler");
        sampler.setDaemon(true);
        sampler.start();
    }

    void sampling() {
        while (!Thread.currentThread().isInterrupted()) {
            Thread t = thread;
            if (t != null) {
                StackTraceElement[] stack0 = t.getStackTrace();
                if (thread == t)
                    stack = stack0;
            }
            LockSupport.parkNanos(10_000);
        }
    }

    public void stop() {
        sampler.interrupt();
    }

    public void thread(Thread thread) {
        this.thread = thread;
    }

    public StackTraceElement[] getAndReset() {
        StackTraceElement[] stack = this.stack;
        thread = null;
        this.stack = null;
        return stack;
    }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>We can accumulate the results in a <code>Map&lt;String, Integer&gt;</code> which is nothing special. Except we can filter only those which contributed to an outlier e.g. a delay of over 10 microseconds.</p>
</div>
<div class="paragraph">
<p>The results are pretty crude, however we found issues in code that the profile didn&#8217;t show.  The issue which came up again and again was <code>default</code> methods. As of Java 8 update 121, they just don&#8217;t seem to be optimised as well as methods in classes. We found that copying the default method to selected classes and only for the selected methods in this sampler, we saw a reduction in outliers which allowed us to increase the throughput further.</p>
</div>
<div class="paragraph">
<p>There were other optimisations more specific to our problem, but using class methods instead of default methods is a trick we have used before.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Not all default methods are bad, we still use them often without a problem. Only override a default method for performance if you can show this helps.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_charting_the_99_ile_latency">Charting the 99%ile latency.</h3>
<div class="paragraph">
<p>For the unencrypted messages we achieve reasonable (less than 10 micro-seconds) latencies in the 99.9%ile up to 1.4 million messages per second and in the 99%ile up to 2.3 million per second.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://github.com/Vanilla-Java/vanilla-java.github.io/blob/master/images/latency-for-throughput.png?raw=true" alt="latency for throughput">
</div>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>It is possible to have low latency encrypted messages where the 99%ile is less than 10 microseconds, however we need to have a throughput of less than 700K messages per second (or use multiple threads / queues).</p>
</div>
<div class="paragraph">
<p>While minimising the latency of outliers is tricky, reducing the 99%ile latency can improve the consistency dramatically and increase the throughput you can safely sustain.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2017/02/06/Improving-percentile-latencies-in-Chronicle-Queue.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2017/02/06/Improving-percentile-latencies-in-Chronicle-Queue.html</guid><category><![CDATA[Chronicle Queue]]></category><category><![CDATA[Low Latency]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Mon, 06 Feb 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Chronicle Queue storing 1 TB in virtual memory on a 128 GB machine]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>If you use a standard JVM like the Oracle JVM, or the OpenJDK, you might find that as the heap size grows the performance of your JVM can drop as GC pause time escalates.  This tends to be a problem around 32 GB of heap, but it often depends on the application at which point the size of you heap becomes a problem.</p>
</div>
<div class="paragraph">
<p>One way around this is to use an always concurrent collector such as <a href="https://www.azul.com/products/zing/">Azul Zing</a> which is designed to both scale to much larger heap sizes and even reduce the GC pause times for smaller heap consistently.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_data_set_larger_than_main_memory">Data set larger than main memory?</h3>
<div class="paragraph">
<p>What if your data set sizes are larger than main memory?  At this point using the heap doesn&#8217;t scale and you need a data store off heap. This could be a database, NoSQL, but these can be dramatically slower depending on what you are doing.</p>
</div>
</div>
<div class="sect2">
<h3 id="_chronicle_supports_a_huge_persisted_dataset">Chronicle supports a huge, persisted dataset.</h3>
<div class="paragraph">
<p>Chronicle Queue and Chronicle Map allows you to have a persisted store which can be embedded into multiple JVMs on the same server.  How does it perform when you exceed main memory size.  In this page, we look at Chronicle Queue with favouring for sequential access, scales very well, and shows a little slow down.</p>
</div>
<div class="paragraph">
<p>What does a JVM which is over 1 TB in virtualsize look like?</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/JVM-1TB.png" alt="JVM 1TB">
</div>
<div class="title">Figure 1. top on a machine with 128 GB of memory, and a JVM with 1 TB of queue data</div>
</div>
<div class="paragraph">
<p>In this example, the JVM with 1 TB of data reports that 0.111t or 111 G is in memory, though the virtual size is 1.281t or 1,281 GB (with heaps and indexes)</p>
</div>
</div>
<div class="sect2">
<h3 id="_but_how_does_it_perform_it_must_get_slower">But how does it perform? It must get slower.</h3>
<div class="paragraph">
<p>If you attempted to create and use a 1 TB heap on a machine with 128 GB of memory, it would either fail to start, or with some tuning, start but make your machine unusable.  How much does using Chronicle Queue to store the data slow down?</p>
</div>
<div class="paragraph">
<p>In this test, it writes a bursts of 2 million 512 bytes messsage (1024^3 bytes of data), it then reads the data and waits 8 seconds to let the disk catch up. While the burst rate is about 1 GB/s, the underlying disk doesn&#8217;t have the write speed and for this test it averages about 100 MB/s.  It takes about 2.5 hours to write 1 TB.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/read-time-1gb.png" alt="read time 1gb">
</div>
<div class="title">Figure 2. The read time is fairly consistent for this test</div>
</div>
<div class="paragraph">
<p>We would expect reads to be consistent as we are always reading something we just wrote.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
While the machine has 128 GB of memory, it has two NUMA regions of 64 GB.  This shows around 64 GB has been written.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The write performance is more dramatic.  There is also significant variation as it has to find new memory to write to.  This can be mitigated by using a pretouch() call to pre-allocate memory to write to.  Normally, this would be run in a background thread, but for the purposes of this test it was run in the same thread but not timed.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/write-time-1gb.png" alt="write time 1gb">
</div>
<div class="title">Figure 3. The write time is fairly consistent beyond 192 GB</div>
</div>
<div class="paragraph">
<p>The average time to write a GB for the first 64 GB was 885 ms.  From 256 GB in size this takes an average of 1,084 ms which is an increase of 22%.</p>
</div>
<div class="paragraph">
<p>However, let us consider that the alternative is to pump 2 million records (1 GB) of data to a database, and query it to get the data back. By having it in the JVM, we can read 2 million record in as little as 200 ms using just one thread.</p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>Chronicle Queue performs very well up to the limit of main memory and beyond. It uses very little heap and has only a notional impact on GC pause times even if the dat set size is many times main memory.</p>
</div>
<div class="paragraph">
<p>You can try this test yourself here <a href="https://github.com/OpenHFT/Chronicle-Queue/blob/master/src/test/java/net/openhft/chronicle/queue/RunLargeQueueMain.java">RunLargeQueueMain</a></p>
</div>
<div class="paragraph">
<p>For more information on Chronicle Queue <a href="https://github.com/OpenHFT/Chronicle-Queue">GitHub source</a> <a href="http://chronicle.software/products/chronicle-queue/">Chronicle Queue Product page</a></p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Having a queue larger than main memory only works on Unix at the moment. On Windows, a cycle e.g. a day, has to fit into main memory.  This is something we would like to fix in the future.
</td>
</tr>
</table>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2017/01/27/Chronicle-Queue-storing-1-TB-in-virtual-memory-on-a-128-GB-machine.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2017/01/27/Chronicle-Queue-storing-1-TB-in-virtual-memory-on-a-128-GB-machine.html</guid><category><![CDATA[Chronicle Queue]]></category><category><![CDATA[Off Heap]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Fri, 27 Jan 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[Choosing Chronicle FIX Engine]]></title><description><![CDATA[<div class="sect1">
<h2 id="_overview">Overview</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The FIX Trading Community web site has posted a <a href="http://www.fixtradingcommunity.org/pg/structure/tech-specs/implementation-guide/choosing-a-fix-engine">list of common questions about FIX Engines</a>. This page brings together our answers for these questions.</p>
</div>
<div class="paragraph">
<p>For more details on <a href="http://chronicle.software/products/chronicle-fix/">Chronicle FIX</a></p>
</div>
<div class="sect2">
<h3 id="_capabilities_throughput">Capabilities/throughput</h3>
<div class="paragraph">
<p>Chronicle FIX supports;</p>
</div>
<div class="ulist">
<ul>
<li>
<p>100,000 messages per second per core. (NewOrderSingle / ExecutionReport sized messages)</p>
</li>
<li>
<p>FIX Services which need to have a 30 micro-seconds tick to trade.</p>
</li>
<li>
<p>FIX 4.0, 4.1, 4.2, 4.3, 4.4, 5.0, 5.0 sp 1, 5.0 sp2, FIXT 1.1 is planned.</p>
</li>
<li>
<p>failover of a FIX server to a hot spare via replication</p>
</li>
<li>
<p>encryption of all message logged and replicated.</p>
</li>
<li>
<p>zero copy between the FIX message and your data model. An intermediate data model is provided for convenience but is not required.</p>
</li>
<li>
<p>designed for ultra low GC systems (minor GC less than once a day)</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_technologies_used">Technologies used</h3>
<div class="ulist">
<ul>
<li>
<p>Core Java 8.</p>
</li>
<li>
<p>Build on largely Open Source libraries, also from Chronicle.</p>
</li>
<li>
<p>YAML for configuration.</p>
</li>
<li>
<p>QuickFIX style XML Schema files.</p>
</li>
<li>
<p>Source on GitHub.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_support_and_services_offered">Support and services offered</h3>
<div class="paragraph">
<p>Chonicle Software offers Silver support (long London day, 5 days a week) and Gold support (24/7)</p>
</div>
</div>
<div class="sect2">
<h3 id="_versions_supported">Versions supported</h3>
<div class="paragraph">
<p>Q: Does the engine support all current FIX versions<br>
A: FIX 4.0, 4.1, 4.2, 4.3, 4.4, 5.0, 5.0 sp 1, 5.0 sp2, FIXT 1.1 is planned.</p>
</div>
<div class="paragraph">
<p>Q: Does it support all tags of each version<br>
A: All tags for these version are supported.</p>
</div>
<div class="paragraph">
<p>Q: Can it support more than one version at once<br>
A: An Engine supports being an acceptor and an intiliator and each session can have a different FIX version and/or custom FIX schema.</p>
</div>
<div class="paragraph">
<p>Q: What is involved in supporting new versions of FIX?<br>
A: You start with an XML Schema to generate the code for that schema. You can customise the behaviour further in plugin code. You could add a version of FIX which which we don&#8217;t have on our supported list.</p>
</div>
</div>
<div class="sect2">
<h3 id="_support_for_asset_classes_other_than_equities">Support for asset classes other than equities</h3>
<div class="paragraph">
<p>Q: Can the engine support fixed income, derivatives, FX etc.<br>
A: We support all the standard messages/field/components, for any asset class.</p>
</div>
<div class="paragraph">
<p>Q: What is involved in adding support for additional products?<br>
A: The level of support you need is orthogonal to the products you want. If you have Gold SUpport that covers the open source products and any licensed products. You can have Gold Support for the open source products alone.</p>
</div>
</div>
<div class="sect2">
<h3 id="_high_availability_load_balancing_and_scalability">High availability, load balancing, and scalability</h3>
<div class="paragraph">
<p>Q: Does the FIX engine support a software-based high availability option for high-volume, many-connection implementations<br>
A: We support failover to a hot spare using replication. When a message is published we can choose to wait for the message to be replicated/acknowledge before sending it to ensure it isn&#8217;t lost. We don&#8217;t offer a load balancing facility at the moment, however one dual socket server can comfortably handle one million messages per second.</p>
</div>
</div>
<div class="sect2">
<h3 id="_speed_and_robustness">Speed and robustness</h3>
<div class="paragraph">
<p>Q: How many messages a second can the engine process<br>
A: Chronicle FIX can comfortably handle 100,000 messages per second per core and one million message per second per server.</p>
</div>
<div class="paragraph">
<p>Q: What fall-back and redundancy options are available<br>
A: You can set a hot spare using Chronicle Queue Entperise to provide replication of the logs.</p>
</div>
</div>
<div class="sect2">
<h3 id="_encryption_options">Encryption options</h3>
<div class="paragraph">
<p>Q: Does the engine support common encryption methodologies, Is SSL supported<br>
A: Not currently, but this could be added if you need it.</p>
</div>
</div>
<div class="sect2">
<h3 id="_ability_to_implement_per_connection_business_logic">Ability to implement per-connection business logic</h3>
<div class="paragraph">
<p>Q: Each FIX connection tends to be slightly different. Can you embed counterparty specific logic within the engine rather than having to implement from outside within your systems?<br>
A: You can have per session</p>
</div>
<div class="ulist">
<ul>
<li>
<p>data model for storing messages</p>
</li>
<li>
<p>custom parser</p>
</li>
<li>
<p>message validation</p>
</li>
<li>
<p>message handling</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>You can also share this logic to minimise the overhead of managing different providers. e.g. Youc an combine the custom schema of 20 providers into a single Uber schema even if they use different versions of FIX. This allows you to code to one aggregate data model.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
It is assumed each session will have at most one connection.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_platforms_supported">Platforms supported</h3>
<div class="paragraph">
<p>Q: Not all FIX engines run on all platforms. Some FIX engines sell themselves on the basis that they will run on all platforms, others take the opposite view and market themselves on the basis that they are optimized to run on one platform only.<br>
A: Chronicle FIX only supports Oracle Java 8, OpenJDK 8, Azul Zing/Zulu 8 on x64 processors. We support Linux, Windows and MacOSX.</p>
</div>
</div>
<div class="sect2">
<h3 id="_architectural_flexibility">Architectural flexibility</h3>
<div class="paragraph">
<p>Q: Does the engine restrict your implementation to a specific architecture<br>
A: Realistically it has to be in Java.</p>
</div>
<div class="paragraph">
<p>Q: Are you forced to use a database for persistence or a particular type of middleware for example<br>
A: Your must data store must be accessible from Java.</p>
</div>
</div>
<div class="sect2">
<h3 id="_provided_as_a_set_of_class_libraries_or_a_fix_in_a_box_solution">Provided as a set of class libraries or a FIX-in-a-box solution</h3>
<div class="paragraph">
<p>While we offer a set of class libraries you could customise heavily (we use the same libraries to implement our non FIX Engine) most clients use it as FIX-in-a-box.  We feel the like the fact they could take it apart and build it however they need covers potential technical risks.</p>
</div>
<div class="paragraph">
<p>Q: FIX engines supplied as class libraries (APIs) offer complete flexibility over your implementation but you have to do the work.<br>
A: We want to offer complete flexability even if you won&#8217;t use a fraction of the flexability. As the product matures we want to reduce the amount of work you need to do, but teher will always be some customisation you will need to do to suit your soluton.</p>
</div>
<div class="paragraph">
<p>Q: FIX-in-a-box solutions provide ready-made functionality for many commonly used activities and seamlessly handle network connectivity. They are easier to implement but aren&#8217;t so flexible.<br>
A: We attempt to handle all the session messages and details automatically from configuration. You should only have to worry about the application messages most of the time. We support custom session messages as well.</p>
</div>
</div>
<div class="sect2">
<h3 id="_access_to_source_code">Access to source code</h3>
<div class="paragraph">
<p>Q: Some FIX engine vendors make available the source-code so that you can modify their product. Typically this is only done for a fee and for the largest clients.<br>
A: Our FIX engine is in a closed source repository on GitHub.  Once you have a license and have access you can fork the code, issue Pull Request and add issue just as you can on GitHub. Out support agreements includes some days a month for bespoke development so you can get us to make the changes if you prefer.</p>
</div>
</div>
<div class="sect2">
<h3 id="_support_offered">Support offered</h3>
<div class="paragraph">
<p>Q: What level of support is offered and at what times.<br>
A: Silver support is a long London day, 5 days a week. Gold is 24/7 and &#8230;&#8203;</p>
</div>
<div class="paragraph">
<p>Q: Is on-site support available<br>
A: Platnium support includes three months a year on site on days of your choice.</p>
</div>
</div>
<div class="sect2">
<h3 id="_upgrades_and_updates">Upgrades and updates</h3>
<div class="paragraph">
<p>Q: How many updates and upgrades does your license entitle you to<br>
A: The perpetual license alone entitles you to updates/upgrades for 120 days. If you get support it includes updates for the period under support.</p>
</div>
<div class="paragraph">
<p>Q: Does the vendor charge a license fee for an engine in a disaster recovery / stand-by environment<br>
A: How you use the product doesn&#8217;t affect the price.</p>
</div>
</div>
<div class="sect2">
<h3 id="_cost_and_pricing_options">Cost and pricing options</h3>
<div class="paragraph">
<p>Q: Is the cost reasonable? Is the vendor flexible around how you would like to pay?<br>
A: We can be flexable for smaller clients. To date we have only had real interest and sales for business unit license covering a development team.</p>
</div>
</div>
<div class="sect2">
<h3 id="_monitoring_tools">Monitoring tools</h3>
<div class="paragraph">
<p>Q: Does the engine come with tools that allow monitoring of your FIX sessions. A good error translator can prevent you spending of a great deal of time trying to find an error message.<br>
A: We have a HTML5 GUI for monitoring sessions and querying logs of messages.</p>
</div>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2017/01/20/Choosing-Chronicle-FIX-Engine.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2017/01/20/Choosing-Chronicle-FIX-Engine.html</guid><category><![CDATA[Chronicle FIX]]></category><category><![CDATA[FAQ]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Fri, 20 Jan 2017 00:00:00 GMT</pubDate></item><item><title><![CDATA[IT experts you should follow on twitter]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>When I read lists like this they always seem to be male dominated, so here is a list of experts I follow which isn&#8217;t.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_dr_sue_black_obe">Dr Sue Black OBE</h3>
<div class="paragraph">
<p>UK Govt Advisor @gdsteam | Tech Evangelist | Hon Prof Comp Sci @UCL | Author @SavingBletchley | Founder @techmumsHQ @BCSWomen | Agents: @NoelGay19 @TobyMundy 39K followers</p>
</div>
<div class="paragraph">
<p><a href="https://blackse.wordpress.com/">Dr Sure Black&#8217;s Home Page</a></p>
</div>
<div class="paragraph">
<p>#CMTV speaks to Dr Sue Black; Award-Winning Computer Scientist <a href="https://www.youtube.com/watch?v=eqcYiVECYFk">Part One</a> <a href="https://www.youtube.com/watch?v=DVmgpS34K04">Part Two</a></p>
</div>
<div class="paragraph">
<p><a href="https://unbound.com/books/saving-bletchley-park">Saving Bletchley Park</a> "The story of the saving of the home of modern computing by Sue Black"</p>
</div>
<div class="paragraph">
<p><a href="http://techmums.co/">Tech Mums</a> "Empowering mums, their families and communities through technology"</p>
</div>
<a href="https://twitter.com/Dr_Black" class="twitter-follow-button" data-show-count="false">Follow @Dr_Black</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_sara_rey_chipps">Sara Rey Chipps</h3>
<div class="paragraph">
<p>Just a girl, standing in front of a microprocessor, asking it to love her. I made @girldevelopit. I&#8217;m making @jewelbots. Pull requests welcomed. 30 K followers</p>
</div>
<div class="paragraph">
<p><a href="http://sarajchipps.com/">Sara Rey Chipps' Blog</a></p>
</div>
<a href="https://twitter.com/SaraJChipps" class="twitter-follow-button" data-show-count="false">Follow @SaraJChipps</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_kelly_sommers">Kelly Sommers</h3>
<div class="paragraph">
<p>4x Windows Azure MVP &amp; Former 2x DataStax MVP for Apache Cassandra, Backend brat, big data, distributed diva. Relentless learner. I void warranties. 25.7K followers</p>
</div>
<div class="paragraph">
<p><a href="http://kellabyte.com/">Kellabyte&#8217;s blog</a></p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/user/kellabyte">Kelly Sommers YouTube Channel</a></p>
</div>
<a href="https://twitter.com/kellabyte" class="twitter-follow-button" data-show-count="false">Follow @kellabyte</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_julie_lerman">Julie Lerman</h3>
<div class="paragraph">
<p>Vermont Geekette, DDD, .NET (&amp; EF) Mentor, Author, MS MVP, MS Regional Director, VTdotNET, Pluralsight, MSDN Mag. Talk to me about mentoring your dev team! 22.5K</p>
</div>
<div class="paragraph">
<p><a href="http://thedatafarm.com/blog/">The Data Farm</a> "Julie Lerman&#8217;s World of Data"</p>
</div>
<div class="paragraph">
<p><a href="https://channel9.msdn.com/Events/Speakers/Julie-Lerman">Julie Lerman&#8217;s Channel 9</a> "Julie Lerman is a Microsoft MVP, mentor and consultant who lives in the hills of Vermont. You can find Julie presenting on Entity Framework , Domain-Driven Design and other topics at user groups and conferences around the world"</p>
</div>
<a href="https://twitter.com/julielerman" class="twitter-follow-button" data-show-count="false">Follow @julielerman</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_jessfraz">jessfraz</h3>
<div class="paragraph">
<p>I contribute to open source software for fun and as my job. 'Weird sun beam of awesome.' <a href="http://git.j3ss.co" class="bare">http://git.j3ss.co</a> 21.7k followers</p>
</div>
<div class="paragraph">
<p><a href="https://blog.jessfraz.com/">Jessie Frazelle&#8217;s Blog</a></p>
</div>
<a href="https://twitter.com/jessfraz" class="twitter-follow-button" data-show-count="false">Follow @jessfraz</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_jennmoneydollars">jennmoneydollars</h3>
<div class="paragraph">
<p>my father&#8217;s strongest most handsome daughter. i came to win, 19K followers</p>
</div>
<div class="paragraph">
<p><a href="http://jennmoney.biz/">Jenn Schiffer&#8217;s Blog</a></p>
</div>
<div class="paragraph">
<p><a href="https://youtu.be/wewAC5X_CZ8">No one expects the lady code troll</a> "@jennschiffer’s hilarious talk on how and why she satirizes the tech industry." - @xoxo</p>
</div>
<div class="paragraph">
<p><a href="https://society6.com/jennmoneydollars">Jenn Schiffer&#8217;s Pixel Art</a></p>
</div>
<a href="https://twitter.com/jennschiffer" class="twitter-follow-button" data-show-count="false">Follow @jennschiffer</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_iris_classon">Iris Classon</h3>
<div class="paragraph">
<p>The world’s happiest .NET developer &amp; Microsoft C# MVP! More energy than a 5 year old, talks more than your grandmother, and does anything to make you smile! 18.7K followers</p>
</div>
<div class="paragraph">
<p><a href="http://irisclasson.com/">Iris Classon&#8217;s Blog</a></p>
</div>
<div class="paragraph">
<p><a href="http://stackoverflow.com/users/984153/iris-classon">Iris Classon&#8217;s StackOverflow profile</a></p>
</div>
<a href="https://twitter.com/IrisClasson" class="twitter-follow-button" data-show-count="false">Follow @IrisClasson</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_jessica_kerr">Jessica Kerr</h3>
<div class="paragraph">
<p>Functional developer, speaker, mother, crazy nut. Stripe. Learning and growing. All tweets are mine, licensed CC0. she/her. 16.6K followers</p>
</div>
<div class="paragraph">
<p><a href="http://blog.jessitron.com/">Jessitron&#8217;s Blog</a></p>
</div>
<div class="paragraph">
<p><a href="https://www.infoq.com/author/Jessica-Kerr">Jessica Ker&#8217;s InfoQ videos</a></p>
</div>
<div class="paragraph">
<p><a href="http://jessitron.com/">Jessitron&#8217;s Home Page</a></p>
</div>
<a href="https://twitter.com/jessitron" class="twitter-follow-button" data-show-count="false">Follow @jessitron</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_jen_myers">Jen Myers</h3>
<div class="paragraph">
<p>Technologist &amp; writer. Curriculum director at @pluralsight. Advisor at @girldevelopit. Founder of @codecupcakeschi. Likes adventure, changing the world, otters. 15.7K followers</p>
</div>
<div class="paragraph">
<p><a href="http://jenmyers.net/">Jen Myer&#8217;s Home Page</a></p>
</div>
<a href="https://twitter.com/antiheroine" class="twitter-follow-button" data-show-count="false">Follow @antiheroine</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_lucy_leiderman">Lucy Leiderman</h3>
<div class="paragraph">
<p>Funnier than you&#8217;d expect. Full-stack growth marketer. Building @helloretreaver. Scrum master. I have 5 minutes, come say hi. 13.2K followers</p>
</div>
<div class="paragraph">
<p><a href="http://lucyleiderman.com/">Lucy Leidrman&#8217;s Home Page</a></p>
</div>
<div class="paragraph">
<p><a href="https://plus.google.com/LucyLeiderman[Lucy Leiderman's Google" class="bare">https://plus.google.com/LucyLeiderman[Lucy Leiderman's Google</a> page]</p>
</div>
<a href="https://twitter.com/lucyleid" class="twitter-follow-button" data-show-count="false">Follow @lucyleid</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_bodil">☭ 🚀 🐶 Bodil  🐶 🚀☭</h3>
<div class="paragraph">
<p>The Hound of the SJWs. 11.1K followers</p>
</div>
<div class="paragraph">
<p><a href="https://bodil.lol/">Bodil&#8217;s Home Page</a></p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=SPgPhKLE1wg">Bodil Stokke - The Miracle of Generators</a></p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=3_YzTL5yrFQ">Bodil Stokke - Reactive Game Development For The Discerning Hipster</a></p>
</div>
<a href="https://twitter.com/bodil" class="twitter-follow-button" data-show-count="false">Follow @bodil</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_femgineer">Femgineer</h3>
<div class="paragraph">
<p>We empower techies and provide courses and workshops to: educate, empower, and encourage professionals in the high-tech industry. 10K followers</p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/channel/UCr3v8cEC5IGfWBS03PpsfKw">Femginerr&#8217;s YouTube Channel</a></p>
</div>
<a href="https://twitter.com/femgineer" class="twitter-follow-button" data-show-count="false">Follow @femgineer</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_caitie_mccaffrey">Caitie McCaffrey</h3>
<div class="paragraph">
<p>Backend Brat &amp; Distributed Systems Diva @twitter Formerly #343i building @Halo Services with @projectorleans. Valkyrie AF. 9.7K followers</p>
</div>
<div class="paragraph">
<p><a href="https://caitiem.com/">CaitieM&#8217;s Blog</a></p>
</div>
<div class="paragraph">
<p><a href="https://speakerdeck.com/caitiem20">Talks by Caitie McCaffrey</a></p>
</div>
<a href="https://twitter.com/caitie" class="twitter-follow-button" data-show-count="false">Follow @caitie</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_trisha_gee">Trisha Gee</h3>
<div class="paragraph">
<p>Coder/blogger/speaker, working for JetBrains. Human. More or less. 7.7K followers</p>
</div>
<div class="paragraph">
<p><a href="https://trishagee.github.io/">Trisha Gee&#8217;s Home Page</a></p>
</div>
<div class="paragraph">
<p><a href="http://mechanitis.blogspot.co.uk/">Trisha Gee&#8217;s Blog</a></p>
</div>
<div class="paragraph">
<p><a href="https://www.infoq.com/author/Trisha-Gee">Trisha Gee&#8217;s content on InfoQ</a></p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=XOWZ0Zr0HGY">Interview with Trisha Gee</a></p>
</div>
<a href="https://twitter.com/trisha_gee" class="twitter-follow-button" data-show-count="false">Follow @trisha_gee</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_jen_golbeck">Jen Golbeck</h3>
<div class="paragraph">
<p>Prof at Univ. of MD., Computer Scientist. Tweets about social media, research, zombies. My new book is Social Media Investigation -how to track people online! 5.9K followers</p>
</div>
<div class="paragraph">
<p><a href="http://jengolbeck.com/">Jen Golbeck&#8217;s Home Page</a></p>
</div>
<div class="paragraph">
<p><a href="http://www.cs.umd.edu/~golbeck/">Jennifer Golbeck&#8217;s Work Page</a></p>
</div>
<div class="paragraph">
<p><a href="https://en.wikipedia.org/wiki/Jen_Golbeck">Jen Golbeck&#8217;s Wikipedia Page</a></p>
</div>
<a href="https://twitter.com/jengolbeck" class="twitter-follow-button" data-show-count="false">Follow @jengolbeck</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_yara_m_h_senger">Yara M H Senger</h3>
<div class="paragraph">
<p>Yara is President of SouJava and co-founder and director of GlobalCode, the largest Java training company in Latin America, currently based in 13 different cities. 5.7K followers</p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/channel/UCdgpYryLQ8I5ZqNRb010K0g">GlobalCode YouTube Channel</a></p>
</div>
<a href="https://twitter.com/yarasenger" class="twitter-follow-button" data-show-count="false">Follow @yarasenger</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_lynn_langit">Lynn Langit</h3>
<div class="paragraph">
<p>Cloud architect who also codes, prefers AWS &amp; GCP.  5.3K followers</p>
</div>
<div class="paragraph">
<p><a href="https://lynnlangit.com/">Lynn Langit&#8217;s Blog</a></p>
</div>
<div class="paragraph">
<p><a href="http://www.slideshare.net/lynnlangit">Lynn Langit&#8217;s presentations</a></p>
</div>
<a href="https://twitter.com/lynnlangit" class="twitter-follow-button" data-show-count="false">Follow @lynnlangit</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_maxime_chevalier">Maxime Chevalier</h3>
<div class="paragraph">
<p>PhD in compiler design, dynamic languages and optimization. Interested in programming languages, graphics, electronics, music and DIY. All opinions are my own. 4.7K followers</p>
</div>
<div class="paragraph">
<p><a href="https://pointersgonewild.com/">Maxime Chevalier&#8217;s Blog</a> "Pointers Gone Wild A blog about compilers, programming and technology."</p>
</div>
<a href="https://twitter.com/Love2Code" class="twitter-follow-button" data-show-count="false">Follow @Love2Code</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_fabianenardon">fabianenardon</h3>
<div class="paragraph">
<p>Data Scientist, Java Champion and impossible projects expert. Founder of <a href="http://toolscloud.com" class="bare">http://toolscloud.com</a>  and partner at <a href="http://tailtarget.com" class="bare">http://tailtarget.com</a> 4.1K followers</p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=9rO6qnBTpOI">Fabiane Nardon - Java Champion Brasil &amp; impossible projects expert</a></p>
</div>
<a href="https://twitter.com/fabianenardon" class="twitter-follow-button" data-show-count="false">Follow @fabianenardon</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_susan_potter">Susan Potter</h3>
<div class="paragraph">
<p>Post-postmodern infrastructure engineer (Scala, Haskell, Nix) obsessed with finance, Charlotte Brontë, bad pop, and abstract algebra. 4.0K followers</p>
</div>
<div class="paragraph">
<p><a href="http://susanpotter.net/">Susan Petter&#8217;s Home Page</a></p>
</div>
<a href="https://twitter.com/SusanPotter" class="twitter-follow-button" data-show-count="false">Follow @SusanPotter</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_script_kitty">script kitty</h3>
<div class="paragraph">
<p>I write the softest software you&#8217;ve ever touched @uber engineering. I wanna be an indie game dev when I grow up. oh, and kelly is my middle name 4.0K followers</p>
</div>
<a href="https://twitter.com/marthakelly" class="twitter-follow-button" data-show-count="false">Follow @marthakelly</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_stacey_mason">Stacey Mason</h3>
<div class="paragraph">
<p>Researcher/creator of games &amp; playable stories. Twitch critic. Contributor: @cerebralarcade, @ScholarsPlay, @igdafoundation Prev: @zynga, @eastgate 3.8K followers</p>
</div>
<div class="paragraph">
<p><a href="http://www.staceymason.net/">Stacey Mason&#8217;s Home Page</a></p>
</div>
<a href="https://twitter.com/stcymsn" class="twitter-follow-button" data-show-count="false">Follow @stcymsn</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_wendydevolder">wendydevolder</h3>
<div class="paragraph">
<p>Helping #community learn and share skills to write better software by producing talks, conferences, magazine, workshops, skillscasts on #agile #opensource 3.7 K followers</p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=uSRzhe_fzzk">What is Skills Matter</a> Wendy Devolder is the CEO of Skills Matter.</p>
</div>
<a href="https://twitter.com/wendydevolder" class="twitter-follow-button" data-show-count="false">Follow @wendydevolder</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_mathilde_lemee">Mathilde Lemee</h3>
<div class="paragraph">
<p>CoFounder @SoFizzApp - L&#8217;appli pour partager tes activités à proximité avec de nouvelles personnes ! CoFounder @duchessfr - Réseau de femmes devs 2.8K followers</p>
</div>
<div class="paragraph">
<p><a href="http://www.duchess-france.org/">Duchess France - Women in Tech</a> "Mathilde Rigabert Lemée [is a] co-founder and active member of Duchess France"</p>
</div>
<a href="https://twitter.com/MathildeLemee" class="twitter-follow-button" data-show-count="false">Follow @MathildeLemee</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_andrea_mcats">Andrea McAts</h3>
<div class="paragraph">
<p>All tweets about Programming. For everything else @roundcrisis 2.7K followers</p>
</div>
<div class="paragraph">
<p><a href="http://www.roundcrisis.com/">Andrea McAts' Blog</a></p>
</div>
<a href="https://twitter.com/silverSpoon" class="twitter-follow-button" data-show-count="false">Follow @silverSpoon</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_tiffany_conroy">Tiffany Conroy</h3>
<div class="paragraph">
<p>Interaction designer. Developer. Cutter of bullshit. Made @weareallawesome. Micro diary: @whattiffanydid. she/her. Has strong opinions, loosely held.</p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=f_J8mXgavBs">Tiffany Conroy: Workplace confidence</a></p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=_qzLmsaUwOs">Tiffany Conroy, Beautiful authentication: Tear down the barbed wire</a></p>
</div>
<div class="paragraph">
<p><a href="https://speakerdeck.com/theophani">Talks by Tiffany Conroy</a></p>
</div>
<a href="https://twitter.com/theophani" class="twitter-follow-button" data-show-count="false">Follow @theophani</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_karen_catlin">Karen Catlin</h3>
<div class="paragraph">
<p>Advocate for women in tech. Leadership coach, TEDx speaker, co-author of Present! Board member @TheCLUBSV. Former VP @Adobe. Happy mom. 2.6K followers</p>
</div>
<div class="paragraph">
<p><a href="https://karencatlin.com/">Karen Catlin&#8217;s Home Page</a> "Advocating for women in the tech industry"</p>
</div>
<div class="paragraph">
<p><a href="http://www.slideshare.net/KarenCatlin">Karen Catlin&#8217;s presentations</a></p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=VTBWPTp1Rrk">Poornima Vijayashanker &amp; Karen Catlin on Mentoring</a></p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=7_EeG0vLCi8">A Techie&#8217;s Guide to Public Speaking Karen Catlin</a></p>
</div>
<a href="https://twitter.com/kecatlin" class="twitter-follow-button" data-show-count="false">Follow @kecatlin</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_ludwine_probst">Ludwine Probst</h3>
<div class="paragraph">
<p>Data Engineer / Scientist 💻 open source contributor @@ousmotards 🏍 @L@diesCodeParis co-founder 🌍 Tech blogger #TechBeyondBorders 2.6K followers</p>
</div>
<div class="paragraph">
<p><a href="https://nivdul.wordpress.com/">Ludwine Probst&#8217;s Blog</a></p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=wfSIpkRaEPM">Tech Beyond Borders by Ludwine Probst</a></p>
</div>
<a href="https://twitter.com/nivdul" class="twitter-follow-button" data-show-count="false">Follow @nivdul</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_amy_chen">Amy Chen</h3>
<div class="paragraph">
<p>Ramblings of a 20 something software engineer. 2.0K followers</p>
</div>
<div class="paragraph">
<p><a href="https://medium.com/@amy">Amy Chen&#8217;s Blog</a></p>
</div>
<a href="https://twitter.com/TheAmyDance" class="twitter-follow-button" data-show-count="false">Follow @TheAmyDance</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_amira_lakhal">Amira LAKHAL</h3>
<div class="paragraph">
<p>#Agile #Java #Scala #Developer at @Valtech_fr || one of @duchessfr leaders || running addict #WomenInTech #yesWeCode</p>
</div>
<div class="paragraph">
<p><a href="https://www.youtube.com/watch?v=EkXhPG1U6zk">IOT, timeseries and prediction with Android, Cassandra and Spark</a></p>
</div>
<div class="paragraph">
<p><a href="http://nighthacking.com/amira-lakhal-iot-timeseries-and-prediction/">Nighhacker Interview</a></p>
</div>
<a href="https://twitter.com/MiraLak" class="twitter-follow-button" data-show-count="false">Follow @MiraLak</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect1">
<h2 id="_1_k_followers">1+K followers</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_claude_falguière">Claude Falguière</h3>
<div class="paragraph">
<p>Java, Performance, DevOps, Clojure, DataScience, funny ways to learn programming, Devoxx4Kids, ParisJUG, Devoxx, Duchess</p>
</div>
<a href="https://twitter.com/cfalguiere" class="twitter-follow-button" data-show-count="false">Follow @cfalguiere</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_stéphanie_hertrich">Stéphanie Hertrich</h3>
<div class="paragraph">
<p>Developer Evangelist Girl @Microsoft, Technical Angel for #startup ❤️, I&#8217;m a coder and a speaker for Tech event, Proud @duchessfr</p>
</div>
<a href="https://twitter.com/stepheUp" class="twitter-follow-button" data-show-count="false">Follow @stepheUp</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_agnès_crepet">Agnès Crepet</h3>
<div class="paragraph">
<p>Java Champion &amp; JS Newbie, @ninjasquad Co-Founder, @MINES_StEtienne CS Teacher &amp; Agile Learning Facilitator, @mixIT_lyon Co-Founder, @duchessfr Leader</p>
</div>
<a href="https://twitter.com/agnes_crepet" class="twitter-follow-button" data-show-count="false">Follow @agnes_crepet</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_heather_vancura">Heather VanCura</h3>
<div class="paragraph">
<p>Community Builder, Connector, Java Connoisseur (for JCP tweets see @jcp_org); Women &amp; Girls in Tech, Open Source, Fitness, Fashion, Fun.</p>
</div>
<a href="https://twitter.com/heathervc" class="twitter-follow-button" data-show-count="false">Follow @heathervc</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_aysylu_greenberg">Aysylu Greenberg</h3>
<div class="paragraph">
<p>Programmer, Artist, Lifelong Learner, distributed infrastructure @google</p>
</div>
<a href="https://twitter.com/aysylu22" class="twitter-follow-button" data-show-count="false">Follow @Aysylu22</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_holly_cummins">Holly Cummins</h3>
<div class="paragraph">
<p>IBMer, developer, author, hat-hacker and duvet-cover-maker. My views are my own.</p>
</div>
<a href="https://twitter.com/holly_cummins" class="twitter-follow-button" data-show-count="false">Follow @holly_cummins</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_kasia_mrowca">Kasia Mrowca</h3>
<div class="paragraph">
<p>Product magician, IT passionate, agile &amp; lean enthusiast, PhD candidate, conference junkie. Love skiing and hiking :)</p>
</div>
<a href="https://twitter.com/MrowcaKasia" class="twitter-follow-button" data-show-count="false">Follow @MrowcaKasia</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_katia_aresti">Katia Aresti</h3>
<div class="paragraph">
<p>Freelance Developer, Open-source enthusiast, drama and dance passionate. @duchessfr Paris MUG</p>
</div>
<a href="https://twitter.com/karesti" class="twitter-follow-button" data-show-count="false">Follow @karesti</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_monica_beckwith">Monica Beckwith</h3>
<div class="paragraph">
<p>(Java/JVM/GC) performance consultant. Mother of 2 awesome kids. Enjoys country living. Java community editor for InfoQ.</p>
</div>
<a href="https://twitter.com/mon_beck" class="twitter-follow-button" data-show-count="false">Follow @mon_beck</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_anne_gabrillagues">Anne Gabrillagues</h3>
<div class="paragraph">
<p>Agile coach / CSM / CSPO at @ippontech - interested in everything about #agile #lean #designThinking #devops #ux &#8230;&#8203; - member of @LeanKanbanFr team</p>
</div>
<a href="https://twitter.com/agabrillagues" class="twitter-follow-button" data-show-count="false">Follow @agabrillagues</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div class="sect2">
<h3 id="_amelia_eiras">Amelia Eiras</h3>
<div class="paragraph">
<p>Ecuatoriana-Española-American, #badass #usualsuspect #iloveourITcommunity. Brutal honesty trumps hypocritical politeness. The backbone @Tomitribe</p>
</div>
<a href="https://twitter.com/ameliaeiras" class="twitter-follow-button" data-show-count="false">Follow @ameliaeiras</a><script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>
<p/>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
For now, I have limited the list to those with at least 1000 followers, but I will continue to update it.
</td>
</tr>
</table>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_groups_supporting_women_in_tech">Groups supporting women in tech</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_ieee_women_in_engineering">IEEE Women in Engineering</h3>
<div class="paragraph">
<p><a href="https://www.youtube.com/channel/UClrcXvuwAbpdE6o9NUXaLxA">IEEE Women in Engineering YouTube page</a></p>
</div>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/09/03/IT-experts-you-should-follow-on-twitter.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/09/03/IT-experts-you-should-follow-on-twitter.html</guid><category><![CDATA[Twitter]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Sat, 03 Sep 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Why don't I get the throughput I benchmarked?]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>In synthetic benchmarks, you can achieve a high throughput for your system by throwing lots of independant tasks/clients at it to see what the theoretical limit of your system is, however in real world situations, the throughput you achieve is often much, much lower.  One of of the explanations for this comes from <a href="https://en.wikipedia.org/wiki/Little%27s_law">Little&#8217;s Law</a></p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_what_is_little_s_law">What is Little&#8217;s Law?</h3>
<div class="paragraph">
<p>This law comes from queuing theory, an example being the number of  <a href="https://en.wikipedia.org/wiki/Little%27s_law#Customers_In_The_Store">customers in a store</a>.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Little's Law tells us that the average number of customers in the store L, is the effective arrival rate λ, times the average time that a customer spends in the store W</pre>
</div>
</div>
<div class="paragraph">
<p><strong class="big">L=&lambda; &times; W</strong></p>
</div>
<div class="paragraph">
<p>For a given latency, the higher the throughput you need to achieve, the higher the number of independant tasks you need. Say you have a shop where checking out at an automatic till takes 10 minutes on average. To achieve, a given throughput, how many tills, and people wanting to check out do you need?</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Throughput</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">People trying to check out at once</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 every 10 minutes</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 person and 1 till</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 people and 10 tills</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100 people and 100 tills</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>There might not be 10 or 100 people trying to check out at once, so even if you have the tills, there might not be enough people/users to utlise the tills you have.</p>
</div>
<div class="paragraph">
<p>Say instead it only takes 1 minute to pass through a till, how many people do you need to be checking out at once to get the throughput you are looking for.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Throughput</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">People trying to check out at once</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 every 10 minutes</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 person and 1 till</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1 person and 1 till</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 people and 10 tills</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>Reducing the latency by a factor of 10 means you need one tenth of the resources. More importantly, you only need one tenth of the people trying to check out/tasks to achieve the desired throughput.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Some problems have inherent limits to the number of independant tasks you have. Trading systems and business applications might only have an intrinsic concurrency of between 1 and 10, in which case, latency rather than throughput is your main constraint.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_chronicle_queue_vs_apache_kafka">Chronicle Queue vs Apache Kafka</h3>
<div class="paragraph">
<p>On the surface, Chronicle Queue and Apache Kafka do many of the same things.  They are both high throughput, persisted queues.  What difference do Chronicle&#8217;s much lower latencies make?</p>
</div>
<div class="paragraph">
<p>In this benchmark, <a href="https://engineering.linkedin.com/kafka/benchmarking-apache-kafka-2-million-writes-second-three-cheap-machines">Apache Kafka</a> achieved a throughput of around 400,000/s - 800,000/s on one machine, with linear scalability to three machines. This is a very good throughput.  However the latency measured 2 ms and the 99%ile was 3 ms.  This means any individual task which must wait for replication before proceeding must wait around 2 milli-seconds, or more conservatively 3 milli-seconds.</p>
</div>
<div class="paragraph">
<p>If the latency is 3 milli-seconds, how many independant tasks do you need to have to reach a desired throughput?</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="https://vanilla-java.github.io/images/Chronicle-vs-Kafka-Concurrency.png" alt="Chronicle vs Kafka Concurrency"></span></p>
</div>
<div class="paragraph">
<p>To achieve higher throughputs, you need more independant tasks. What if you only have 1 to 100 independant tasks?</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Chronicle-vs-Kafka-Concurrency-Scaled.png" alt="Chronicle vs Kafka Concurrency Scaled">
</div>
</div>
<div class="paragraph">
<p>With a small set of tasks, you are not going to achieve a high throughput with a latency of 3 ms.  By comparison if we look at the 99%ile latency of Chroncile Queue synchronous replication, which is between <a href="https://vanilla-java.github.io/2016/07/20/Latency-for-a-set-Throughput.html">20 - 40 micro-seconds</a>, you can achieve high throughputs with relatively few independant tasks.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 33.3333%;">
<col style="width: 33.3333%;">
<col style="width: 33.3334%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Independant Task(s)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Chronicle Queue Throughput</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Apache Kafka Throughput</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">50,000 per second</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">340 per second</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">290,000 per second</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3,400 per second</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">100</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2,000,000 per second (2 servers)</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">34,000 per second</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>To achieve, the benchmark throughput with Kafka, you need a problem which has a very high number of independant tasks (many thousands), or you either need asynchronous replication.</p>
</div>
<div class="paragraph">
<p>If asynchronous replication is acceptable, then Chronicle Queue has a much lower latency of 1.2 micro-seconds for the 99%ile.  This means it can support close to one million messages per second with a single thread and only one task at a time. Two threads are enough to get 80 million events per minute which is our benchmark throughput for the E5-2650 v2 server we tested.</p>
</div>
</div>
<div class="sect1">
<h2 id="_when_do_i_add_monitoring_to_my_application">When do I add monitoring to my application?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Apache Kafka was designed for web application monitoring.  It is widely used for this purpose today. As such it does the job very well.</p>
</div>
<div class="paragraph">
<p>However, Chronicle Queue is design to be fast enough to be part of the critical path, recording all the inputs and outputs of your services. Since you are already recording all the data needed to recreate the state of your component at any point, little additional monitoring is required. (System monitoring is still required)  It is not a case of; Now our application is in production, how do we monitor it? Or how do we replay message to recreate an issue?</p>
</div>
<div class="paragraph">
<p>Chronicle Queue is integral to the working of the application so you know no information is missing or the application wouldn&#8217;t work.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_conclusion">Conclusion</h2>
<div class="sectionbody">
<div class="paragraph">
<p>If you have a problem with many thousands of independant tasks, then high number of tasks "in flight", or customers in the store, is a relatively simple way to get the throughput you need and the impact of latency is low.  If you have a few tasks, or just one task you can perform at a given moment, latency rather than throughput is critical.</p>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/07/23/Why-dont-I-get-the-throughput-I-benchmarked.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/07/23/Why-dont-I-get-the-throughput-I-benchmarked.html</guid><category><![CDATA[Performance]]></category><category><![CDATA[Low Latency]]></category><category><![CDATA[Benchmarking]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Sat, 23 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Improving performance with simple compression]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Chronicle Wire supports multiple Wire Formats such as YAML, JSON and CSV. It also supports a binary format of YAML for performance.  Chronicle Wire Enteprise has an additional Wire Format which performs simple compression which can be faster AND smaller than not compressing data.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_compression_of_serialized_objects_using_delta_ring">Compression of serialized objects using delta-ring.</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Delta Wire automatically detects which fields in an object have changed and sends only those fields.  If the field is a number it can send the difference using less bytes.  It does this for nested objects individually as well.</p>
</div>
<div class="paragraph">
<p>You can still utilised generic compression like GZIP, LZW or Snappy to achieve further compression. However, these compression techniques are releatively more expensive and they can be ten times slower than no compression.  What if you want a compression technique which is actually faster?</p>
</div>
<div class="listingblock">
<div class="title">A sample data structure in Java</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">class MyDataType extends AbstractMarshallable implements KeyedMarshallable {
    long firstId; <i class="conum" data-value="1"></i><b>(1)</b>
    int secondId; <i class="conum" data-value="1"></i><b>(1)</b>
    String thirdId; <i class="conum" data-value="1"></i><b>(1)</b>

    String staticOne; <i class="conum" data-value="2"></i><b>(2)</b>
    long staticTwo; <i class="conum" data-value="2"></i><b>(2)</b>
    ZonedDateTime staticThree; <i class="conum" data-value="2"></i><b>(2)</b>
    double staticFour; <i class="conum" data-value="2"></i><b>(2)</b>

    long changesA; <i class="conum" data-value="3"></i><b>(3)</b>
    double changesB; <i class="conum" data-value="3"></i><b>(3)</b>

    @Override
    public void writeKey(@NotNull Bytes bytes) {
        bytes.writeLong(firstId).writeInt(secondId).writeUtf8(thirdId); <i class="conum" data-value="4"></i><b>(4)</b>
    }
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Composite key for this data transfer object</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Fields which rarely change</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Fields which often change</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>Write a key to signify when two objects represent the same data.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>To write this object you can use the Chronicle Wire library to write in different formats.</p>
</div>
<div class="listingblock">
<div class="title">Update message as YAML - 268 bytes</div>
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml">update: !MyDataType {
  firstId: 1010101010101,
  secondId: 2222,
  thirdId: thirdId-1234,
  staticOne: staticOne-1234,
  staticTwo: 2020202020202,
  staticThree: "2016-07-22T12:34:56.789Z[UTC]", <i class="conum" data-value="1"></i><b>(1)</b>
  staticFour: 1000000.0,
  changesA: 3000000000,
  changesB: 123456.0
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>the date/time is in quotes as it contains [ and ]</td>
</tr>
</table>
</div>
<div class="listingblock">
<div class="title">Update message as JSON - 242 bytes, smaller without formatting</div>
<div class="content">
<pre class="highlight"><code class="language-json" data-lang="json">"update":{"firstId":1010101010101,"secondId":2222,"thirdId":"thirdId-1234","staticOne":"staticOne-1234","staticTwo":2020202020202,"staticThree":"2016-07-22T12:34:56.789Z[UTC]","staticFour":1000000.0,"changesA":3000000001,"changesB":123457.0}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Update message as Binary YAML - 205 bytes</div>
<div class="content">
<pre class="highlight"><code>Æupdate¶⒑MyDataType\u0082µ٠٠٠ÇfirstId§µ&gt;¶.ë٠٠٠ÈsecondId¥®⒏ÇthirdIdìthirdId-1234ÉstaticOneîstaticOne-1234ÉstaticTwo§j}l]Ö⒈٠٠ËstaticThreeµ\u001D2016-07-22T12:34:56.789Z[UTC]ÊstaticFour\u0090٠$tIÈchangesA£⒉^Ð²ÈchangesB\u0090٠!ñG</code></pre>
</div>
</div>
<div class="paragraph">
<p>While Binary YAML is slightly smaller (&lt; 20%) it&#8217;s main purpose is speed of encoding and decoding. This is most evident when you have lots of primitive types, and less of a benefit when you have string/datetime fields which are encoded as strings anyway.</p>
</div>
<div class="paragraph">
<p>By comparison DeltaWire is designed to compact the message by reducing duplication with a loss-less compression. This reduces the time writing to memory, which can speed up the serialization operation.</p>
</div>
<div class="listingblock">
<div class="title">Two updates, one change for the <code>changesA</code> and one change for <code>changesB</code> - 10 bytes average</div>
<div class="content">
<pre class="highlight"><code>00000000 BA 00 89 00 80 04 BA 08  A8 C5 BA 00 89 00 80 04 ········ ········
00000010 BA 09 9A 05                                      ····</code></pre>
</div>
</div>
<table class="tableblock frame-all grid-all spread">
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Wire Format</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Size per message</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">YAML</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">268 bytes</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">JSON</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">242 bytes</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Binary YAML</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">205 bytes</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Delta Binary YAML</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 bytes</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>One of the challenges of using binary formats is human readability (as binary formats emphasis machine readability)  For this reason, we have ensured you can automatically convert both Binary YAML and Delta Binary YAML to YAML without knowledge of the application or schema.  The messages are still self describing allowing you to use this data even if the application&#8217;s data structure changes over time.</p>
</div>
<div class="sect2">
<h3 id="_doesn_t_compression_makes_it_slower">Doesn&#8217;t compression makes it slower?</h3>
<div class="paragraph">
<p>It doesn&#8217;t have to be slower if the compression is simple enough.  In fact writing/reading less data can improve performance.  Writing/reading less data to memory, let alone to disk or a network, can improve latency and throughput by touching less memory and writing less data.</p>
</div>
<div class="paragraph">
<p>The test above is repeated 2,500 times resulting in 5,000 updates. The average time to serialize each message/udpate is recorded below.</p>
</div>
<div class="listingblock">
<div class="title">Average time to serialize each update.</div>
<div class="content">
<pre class="highlight"><code>TextWire Took an average of 3,446 ns
JSONWire Took an average of 2,972 ns
BinaryWire Took an average of 1,473 ns
DeltaWire Took an average of 554 ns</code></pre>
</div>
</div>
<div class="paragraph">
<p>What I find interesting is that the compressed wire format is also approximately 3-5x faster to serialize, as well as being approximately 20x smaller.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_conclusion">Conclusion</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Using simple compression such as delta-ring can not only be much smaller such as 1/20 th the size, it can also be faster to serialize the data due to less memory being touched. In this example it as at least 3 times faster.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
After delta-ring you can still use generic compression to obtain a further reduction of the size of data.
</td>
</tr>
</table>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/07/22/Improving-performance-with-simple-compression.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/07/22/Improving-performance-with-simple-compression.html</guid><category><![CDATA[Chronicle Wire]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Fri, 22 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Contributing to Chronicle]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Looking to contribute to a high peformance Open Source library in Java. This may be a good place to start.</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="http://chronicle.software/wp-content/uploads/2014/09/Chronicle.png" alt="Chronicle"></span></p>
</div>
<div class="paragraph">
<p>There is a number of ways to contribute to OpenHFT/Chronicle Software.  You need to;</p>
</div>
<div class="ulist">
<ul>
<li>
<p>fork one of the projects,</p>
</li>
<li>
<p>try an improvement such as adding documentation, a unit test, or a fix.</p>
</li>
<li>
<p>issue a Pull Request.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_i_am_not_familiar_with_these_projects">I am not familiar with these projects</h3>
<div class="paragraph">
<p>A good way to get a feel of these projects is to look at our projects web site</p>
</div>
<div class="paragraph">
<p><a href="http://chronicle.software/hft-products/">Chronicle Products</a></p>
</div>
<div class="paragraph">
<p>I also suggest you read this blog as it contains more detailed information about using our products in context. My presentation on <a href="http://www.slideshare.net/PeterLawrey/low-latency-microservices-in-java-qcon-new-york-2016">Low Latency Microservices</a> may also help.</p>
</div>
<div class="paragraph">
<p>Once you have found a product you are interested in, you can read the README for those products</p>
</div>
<div class="paragraph">
<p>For example if you click <a href="http://chronicle.software/products/chronicle-queue/">Chronicle Queue</a> you can see links on getting started and the documentation on the right.</p>
</div>
<div class="paragraph">
<p>If you get stuck, you can ask questions on our <a href="https://groups.google.com/forum/#!forum/java-chronicle">Google Group</a> and if you find a issue, please let us know via the Issue tab on GitHub for each project.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/07/21/Contributing-to-Chronicle.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/07/21/Contributing-to-Chronicle.html</guid><category><![CDATA[Getting Involved]]></category><category><![CDATA[Microservices]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Thu, 21 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Latency for a set Throughput]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>Without a set throughput, a latency measurement might be meaningless. Often you see benchmark results with throughput measurements, and sometimes the include latency measurements. However, latency varies with the throughput you perform, and without the throughput you have little idea of what the latency means.  Conversely, without an idea of what latencies you find acceptable, the throughput you can achieve for an acceptable latency might not be the maximum throughput you can stress test your system up to.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_benchmarketing">Benchmarketing</h2>
<div class="sectionbody">
<div class="paragraph">
<p>When you are reporting on the throughput, or latencies of your software, you want to put forward the best numbers you can.  However, you don&#8217;t want to fall into the trap of believing your own benchmarketing.  As a technologist, you want tools that will help you find problems you need to solve.</p>
</div>
<div class="paragraph">
<p>A common question I get is; how do I convince my manager to allow me to spend more time optimising the application.  The simple solution is to avoid benchmarketing and use tools which help you find problems.</p>
</div>
<div class="paragraph">
<p>To start with, look at the latencies of your system at given throughputs.  Look not at the average latency or typical latency, but rather start with the 99%ile (worst 1 in 100 latency). After you have worked on the 99%ile, you can try improving the 99.9%ile.  The 99%ile is often 4x higher than the typical latencies, even in well tuned systems, and can be many orders of magnitude higher if not tuned.</p>
</div>
<div class="sect2">
<h3 id="_co_ordinated_ommission">Co-ordinated ommission</h3>
<div class="paragraph">
<p>One of the ways in which your testing tools can lie to you is to back off whenever your tested system isn&#8217;t performing well.  Often this is a consequence of flow control.</p>
</div>
<div class="paragraph">
<p>Flow control is a very useful technique for avoiding overloading your system and improves performance.  Flow control does a good job of smoothing out any bad latencies.  However, if your purpose is to look for problems, it is not what you want.  You don&#8217;t want a system to be able to tell a load generator: 'can you hold off for a while, I am having trouble keeping up'.</p>
</div>
<div class="paragraph">
<p>Gil Tene coined this benchmarking blind spotting of your load testing tool <a href="https://www.youtube.com/watch?v=lJ8ydIuPFeU">Co-ordinate Ommission</a>, as your testing tool is effectively conspiring with the tested system to hide or dramatatically down play the importance of poor latencies.</p>
</div>
<div class="paragraph">
<p>A simple way to correct for this is to measure the end-to-end latency from the time a test should have started, not when it actually started.  By doing this you bias the result to include any failure of the testing tool to start the test on time.</p>
</div>
</div>
<div class="sect2">
<h3 id="_setting_the_throughput">Setting the Throughput</h3>
<div class="paragraph">
<p>How can we calculate the time a test should have started? We need to test for a given throughput.  The simplest approach is to have a spacing between tasks and wait for that time to be reached.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">long ratePerSecond = 1_000_000;
long intervalBetweenTasks = 1_000_000_000 / ratePerSecond;

long next = System.nanoTime() + intervalBetweenTasks;

for (int i = 0; i &lt; tests; i++) {
    while (System.nanoTime() &lt; next) {
        // busy wait
    }

    long start = next; <i class="conum" data-value="1"></i><b>(1)</b>
    performTask();
    long time = System.nanoTime() - start;

    next += intervalBetweenTasks;
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>The important step is to not use the time it actually started, rather, the time it should have started.</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_how_can_we_measure_latency_without_a_set_throughput">How can we measure latency without a set throughput?</h3>
<div class="paragraph">
<p>The simple answer is; you can&#8217;t. A latency by itself only tells you what can be achived for some throughput, and you might assume this is the latency for low throughputs, but it might not be.</p>
</div>
<div class="paragraph">
<p>Some systems perform worse with lower throughputs. For our software, we tend to see a small worsening of the performance below 50K events/second.  This is due to the CPU not running as hot and the underlying interruptions of the system becoming more prominent. e.g. Your OS has a timer interrupt, typically 100 times a second, which you cannot turn off.  At 100K events per second, this will impact your 99.9%ile, at 10K events per second this will impact your 99%ile, and below 100 events second it will impact every event.</p>
</div>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_latency_test_for_chronicle_queue_replication">Latency Test for Chronicle Queue replication</h2>
<div class="sectionbody">
<div class="paragraph">
<p>The following charts time how long it takes to:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Write a 40 byte message to a Chronicle Queue.</p>
</li>
<li>
<p>Have the write replicated over TCP.</p>
</li>
<li>
<p>Have the second copy acknowledge receipt of the message.</p>
</li>
<li>
<p>Have a thread read the acknowledged message.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The test is run for ten minutes and the distribution of latenices plotted.</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="https://vanilla-java.github.io/images/Latency-to-993.png" alt="Latency to 993"></span></p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
There is a step in latency at around 10 million message per second jumps as the messages start to batch. At rates below this, each message can be sent individually.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The 99.99%ile and above are believed to be delays in passing the message over TCP. Further reserach is needed to prove this. In any case, these delays are much the same regardless of the throughput.</p>
</div>
<div class="paragraph">
<p>The 99.9%ile and 99.93%ile are a function of how quickly the system can recover after a delay.  The higher the throughput, the less head room the system has to recover form a delay.</p>
</div>
<div class="paragraph">
<p><span class="image"><img src="https://vanilla-java.github.io/images/Latency-from-993.png" alt="Latency from 993"></span></p>
</div>
<div class="sect2">
<h3 id="_summary">Summary</h3>
<div class="paragraph">
<p>In the test above, the typical latency varied between 14 and 40 micro-seconds, the 99%ile varied between 17 and 56 micro-seconds depending on the throughput being tested. Notably, the 99.93% latency varied between 21 micro-seconds and 41 milli-seconds, a factor of 2000.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 1. Possible Throughput results depending on acceptable latencies</caption>
<colgroup>
<col style="width: 50%;">
<col style="width: 50%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Acceptable Latency</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">Throughput</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt; 30 micro-seconds 99.3% of the time</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">7 million message per minute</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt; 20 micro-seconds 99.9% of the time</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">20 million messages per minute</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt; 1 milli-seconds 99.9% of the time</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">50 million messages per minute</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">&lt; 60 micro-seconds 99.3% of the time</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">80 million message per minute</p></td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_conclusion">Conclusion</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Your choice of what is an acceptable latency can determine the throughput a suspect can support and meet your Service Level Agreement. Conversely, your choice of throughput can change the latency distribution you get.</p>
</div>
<div class="paragraph">
<p>When measuring performance you have to consider both latency distribution and throughput.</p>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/07/20/Latency-for-a-set-Throughput.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/07/20/Latency-for-a-set-Throughput.html</guid><category><![CDATA[Benchmarking]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Wed, 20 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Batching and Low Latency]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
This is testing the next release of Chronicle Queue 4.5.0
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_why_batch_your_data">Why batch your data?</h3>
<div class="paragraph">
<p>Batching of multiple messages or updates into a single transaction is a common technique for improving performance, in particular it is useful for increasing throughput (messages per second) when the latency (time to process a single message) is high.  However when latencies are low, can batching still help?</p>
</div>
<div class="paragraph">
<p>A couple of weeks ago, I was looking at testing and optimising our Chronicle Queue replication over TCP.  One of the first tests I did was to see how batching changed the performance and it made a dramatic difference, and I assumed this was a bug, batching shouldn&#8217;t help a well tuned low latency system.  Now I have had a chance to optimise replication, does batching make much difference?</p>
</div>
</div>
<div class="sect2">
<h3 id="_why_do_batches_help_hinder">Why do batches help/hinder?</h3>
<div class="paragraph">
<p>When your system has an operation with a significant latency, you can utilise more of the available bandwidth by increasing the batch size.</p>
</div>
<div class="paragraph">
<p>Imagine you have a questionaire with 10 questions you want to ask someone. You could send an email for each question and wait for the response to each question before asking the next one. Say it takes 1 minute to answer each question but 10 minutes to send an email, have the person notice it and for you to notice the response.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>sending one question at a time, means each question takes 10 + 1 minutes or 110 minutes in total.</p>
</li>
<li>
<p>sending all 10 questions at once means that the whole questionaire takes 10 + 1 * 10 minutes, or 20 minutes in total.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>It makes sense to ask all your questions at once and get the replies in one go.</p>
</div>
<div class="paragraph">
<p>However, there is a problem, what if you</p>
</div>
<div class="ulist">
<ul>
<li>
<p>don&#8217;t know all the questions in advance because you are still thinking of them. You have to wait to think of the questions, and you might not know how long this will take.</p>
</li>
<li>
<p>might need to ask each question in response to a previous answer.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The longer you wait to build a batch, the more you delay the processing of the messages you have.</p>
</div>
<div class="paragraph">
<p>Batching works best when you know how many messages you are about to get or you know what delay would be acceptable and you can delay sending the messages or committing the transaction for that amount of time.</p>
</div>
<div class="paragraph">
<p>What if you want to process each message as soon as possible?</p>
</div>
</div>
<div class="sect2">
<h3 id="_what_is_being_tested">What is being tested?</h3>
<div class="paragraph">
<p>I am testing the latency under a fixed throughput for publishing a small 40 byte message including time to</p>
</div>
<div class="ulist">
<ul>
<li>
<p>write the message to the persisted queue.</p>
</li>
<li>
<p>read the message and write over TCP.</p>
</li>
<li>
<p>read the TCP socket and write it to a copy of the queue</p>
</li>
<li>
<p>read the message from the queue copy.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>To correct for co-ordinated omission, the sending timestamp used is the time the message should have been sent, indead of the time it was actually sent. For the received time, I used <code>System.nanoTime()</code> to get high resolution timing. The replication is over loopback for a consistent nanoTime(). As I am interested in the outliers, I am assuming the overhead using a low latency 10 GigE network wouldn&#8217;t impact these results significantly.  The highest throughput test here would use less than 20% of a 10 GigE network connection as each message is small.</p>
</div>
<div class="paragraph">
<p>The test spends 30 seconds warming up, and 120 seconds running.  The distribution of latencies for each message is summarised.</p>
</div>
<div class="paragraph">
<p>As I have discussed in prevous posts, I am focusing on minimising the 99%ile latency (worst 1 in 100).  On the system, I am reporting no more than 100 million messages per second as this is close to the point there the 99% starts to increase dramatically. i.e. it is close the limit of what this system can process in soft real time.</p>
</div>
<div class="paragraph">
<p>A Centos 7 machine with i7-4790 and 32 GB of memory was used.</p>
</div>
</div>
<div class="sect2">
<h3 id="_end_to_end_latency_for_different_batch_sizes">End to End latency for different batch sizes</h3>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 1. 99%ile latency end to end</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Batch Size</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 million events per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">60 million events per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100 million events per minute</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">20 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">28 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock"><span class="red">176 &micro;s</span></p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">22 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">29 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">30 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">38 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">22 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">27 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">72 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">26 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">27 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">125 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">34 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">31 &micro;s</p></td>
</tr>
</tbody>
</table>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
1 &micro;s is 0.001 ms or 1 millionth of a second.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>So you can see that batching helps for size of one to five 40 byte messages when the delay between messages is small. However when the delay between messages is relatively large, in this case, every 6 &micro;s, having to wait for enough messages to build a batch hurts the latency.</p>
</div>
<div class="paragraph">
<p>The high latency for the single message at a time for 100 Mmsg/s may yet prove to be a performance bug which can be solved later, but for now, batching could help reduce the jitter, but you don&#8217;t want any more batching so you need to avoid any impact.  In this case, I would consider a batch of two, rather than a larger batch size.</p>
</div>
</div>
<div class="sect2">
<h3 id="_why_not_look_at_the_typical_or_average_latency">Why not look at the typical or average latency?</h3>
<div class="paragraph">
<p>The typical/average latencies are usually better which is why vendors like to report them.  However, they only tell you what the performance looks like momentarily when everything is going well.  By looking at the 99%ile or 99.9%ile you are looking at how something performs when things are not going well.</p>
</div>
<div class="paragraph">
<p>By comparison, the typical latencies all look fine, and you would not know that batching might help at 100 messages per minute.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 2. 50%ile latency end to end</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Batch Size</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 million events per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">60 million events per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100 million events per minute</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">13 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">16 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">13 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">13 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">13 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">22 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">13 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">13 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">36 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">15 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">13 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">68 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">20 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">15 &micro;s</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>Having to wait for a whole batch adds latency and this can be far higher than the time you save. You want your batching to be no larger than necessary.</p>
</div>
</div>
<div class="sect2">
<h3 id="_how_is_batching_used_internally">How is batching used internally?</h3>
<div class="paragraph">
<p>While batching messages published made a little difference in the example above, we use batching internally because it can make a big difference when passing lots of small messages over TCP.</p>
</div>
<div class="paragraph">
<p>As the overhead of passing data over TCP is relatively high, it makes sense to group available data up to some threshold such as 4 KB.  When reading the queue you can determine whether more data is pending as you read it.</p>
</div>
<div class="paragraph">
<p>In particular, making a socket write can be 5 - 10 &micro;s. However we are writing a message around a micro-second or less, this would add an enormous amount to every message if they were sent individually.  By having a background thread batching up these messages we can reduce the latency impact of the socket write.</p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>Batching can be helpful in reducing the impact of latency to improve throughput.  When you are reaching the limit of the throughput you can achieve, batching can improve the overhead and give you higher throughputs and lower latencies.</p>
</div>
<div class="paragraph">
<p>However, batching is not always possible or appropriate and you want a solution which has low latencies even when you are not reaching the limits of your throughput.</p>
</div>
</div>
<div class="sect2">
<h3 id="_a_quick_look_at_the_99_9_ile">A quick look at the 99.9%ile.</h3>
<div class="paragraph">
<p>These worst 1 in 1000 has mixed result which needs further investigation.  I suspect, the OS might be a cause of this jitter. Note: we didn&#8217;t use thread pinning and that might have made a difference.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 3. 99.9%ile latency end to end</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Batch Size</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 million events per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">60 million events per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100 million events per minute</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">901 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">705 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">5,370 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">500 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1,610 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2,000 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">80 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1,540 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2,160 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">3,080 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1,470 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2,000 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">336 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1,210 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1,670 &micro;s</p></td>
</tr>
</tbody>
</table>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 4. 99.9%ile latency to publish without replication</caption>
<colgroup>
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
<col style="width: 25%;">
</colgroup>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Batch Size</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">10 million events per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">60 million events per minute</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">100 million events per minute</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">1</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.2 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.3 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.5 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">2</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.2 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.3 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.5 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">5</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2.4 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.5 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.6 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">10</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">9.5 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.7 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">1.8 &micro;s</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">20</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">11 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">12 &micro;s</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">2.1 &micro;s</p></td>
</tr>
</tbody>
</table>
<div class="paragraph">
<p>More investigation is required to draw any conclusions.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/07/09/Batching-and-Low-Latency.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/07/09/Batching-and-Low-Latency.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Batching]]></category><category><![CDATA[Low Latency]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Sat, 09 Jul 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Goldilocks Microservices]]></title><description><![CDATA[<div class="sect2">
<h3 id="_how_to_structure_microservices">How to structure microservices?</h3>
<div class="paragraph">
<p>When structuring microservices we have to consider;</p>
</div>
<div class="ulist">
<ul>
<li>
<p>how fine grain should our components be?</p>
</li>
<li>
<p>how distributed should they be?</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>I believe it&#8217;s important to treat these as separate concerns, even to the extent of ensuring your business logic components are not dependant on the choice of transport, or even whether you have a transport at all.</p>
</div>
</div>
<div class="sect2">
<h3 id="_how_do_we_right_size_microservices">How do we right size microservices?</h3>
<div class="paragraph">
<p>The business component in your system are;</p>
</div>
<div class="ulist">
<ul>
<li>
<p>the smallest deployable unit of code and data.</p>
</li>
<li>
<p>functionality which could makes sense to a business user based on your requirements.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The right size for your components can depend on why you chose microservices.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>is it to scale the development effort, allowing each developer to work as independently as possible. (Developer efficiency)</p>
</li>
<li>
<p>is it to scale the utilisation of the hardware, allowing each CPU or server to work as independently as possible. (Computer efficiency)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Often we want some of each where the number of components under development is likely to be a function of the number of developers and the number of deployed instances of those components is likely to be a function of the number of CPU or servers.</p>
</div>
<div class="paragraph">
<p>Unless you know performance is a key concern, I would make sure that you prioritise developer efficiency. I would expect for most projects to have around one to three business components per developer.</p>
</div>
</div>
<div class="sect2">
<h3 id="_how_do_we_deploy_our_components">How do we deploy our components?</h3>
<div class="paragraph">
<p>A microservice is a business component with the option of a transport.  I believe having an optional transport is an important consideration because the business component shouldn&#8217;t be influenced too heavily by the choice of transport and not having a transport can be helpful at different stages of the project.</p>
</div>
<div class="paragraph">
<p>When you are writing unit tests and debugging your business component, you shouldn&#8217;t need to have a transport involved.  If you want to see how two components interact you should be able to create a simple program which creates two or more compoenents, run from your IDE and see how they work together in the same thread.</p>
</div>
<div class="sect3">
<h4 id="_levels_of_distribution">Levels of distribution</h4>
<div class="paragraph">
<p>There is different levels of distribution you want to consider.  Initially you might want no transport at all, provided you ensure these component can be distributed.  Later you need either fine grain or course grained distribution, but over time as the component matures you don&#8217;t need the overhead of managing lots of services and you want the ability to consolidate them.</p>
</div>
<div class="olist arabic">
<ol class="arabic">
<li>
<p>Instances are in same logical task and are wired together with no layer between them.</p>
</li>
<li>
<p>Instances are in separate logical tasks, but share the same thread pool <sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnote_1" title="View footnote.">1</a>]</sup>.</p>
</li>
<li>
<p>Instances are in separate thread pool, but in the same process.</p>
</li>
<li>
<p>Instances are in separate OSes, but in the same physical machine.</p>
</li>
<li>
<p>Instances are in the same data centre, but different machines.</p>
</li>
<li>
<p>Instances are in different data centres.</p>
</li>
</ol>
</div>
<div class="paragraph">
<p>For performance, I favour #1, #2 &amp; #3, for testing and development I favour #1 and #3 and for High Availability you need either #5 and #6.</p>
</div>
<div class="paragraph">
<p>If you don&#8217;t need to distriibute instances across machines for HA, you want your instances to be no more seperate than needed.  The degree of separation desirable can change over time.  When a component is being added to production initially, it can be useful to be able to deploy, upgrade and restart that component without impacting the rest of the system.  However as the component stablises and is not changing so much you may want to reduce the overhead of managing this service and include it in a process which has multiple services.  You might find the service uses a trivial amount of CPU and you can combine it into the same thread pool as other services. If it turns out it&#8217;s interaction with another instance is highly coupled you might wire them together as a single component.</p>
</div>
</div>
<div class="sect3">
<h4 id="_migrating_to_microservices">Migrating to Microservices</h4>
<div class="paragraph">
<p>Say you have a monolith, how do you migrate to using microservices?  Do you have to re-engineer your entire solution? NO. Migrating is easier than it sounds as the main advantage for microservices is in the early stages of development when you are putting a service into production.  Anything which is running well in your monolith, leave it there.  Anything you need to add or make major changes to, move it into it&#8217;s own service while it&#8217;s under development and maturing.  You can imagine this as one monolith, planet sized microservice and a number of smaller satelite micro-services surrounding it.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_flexable_design">Flexable Design</h3>
<div class="paragraph">
<p>You want your developers to work efficiently and your system to make good utilisation of your servers.  You don&#8217;t want the choices you made at the start to bind you into a solution you will regret later.  If you use a flexable design, you can maximise productivity, and ensure you use microservices to the extend they are helping you, but without the disadvantages of over using this technique.</p>
</div>
</div>
<div class="sect2">
<h3 id="_further_reading">Further reading</h3>
<div class="paragraph">
<p>To read more see my other posts about <a href="https://vanilla-java.github.io/tag/Microservices/">Microservices</a></p>
</div>
</div>
<div id="footnotes">
<hr>
<div class="footnote" id="_footnote_1">
<a href="#_footnoteref_1">1</a>. a thread pool might have one thread
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/06/30/Goldilocks-Microservices.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/06/30/Goldilocks-Microservices.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Right Sizing]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Thu, 30 Jun 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Reviewing Exception Handling]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>When developing an application it can be hard enough to get the happy path working, let alone worry about what might happen when something goes wrong.</p>
</div>
<div class="paragraph">
<p>I have asked a number of developers recently what they do when they get an exception and usually they log it or pass it back to the user.</p>
</div>
<div class="paragraph">
<p>What are some alternatives? If you have to pass on the exception how might you do that?</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_when_to_consider_exception_handling">When to consider exception handling?</h3>
<div class="paragraph">
<p>Ideally, you should be only catching an exception when you know what to do with it. If you don&#8217;t think you can add value, pass it back to the caller.  I highly recommend letting your IDE manage the updating of the method signature, as this can be tedious to do manually.</p>
</div>
<div class="paragraph">
<p>Even if you give exception handling some consideration in your code, it is worth doing a periodic review of your exception handling code to make sure that they are being handled appropriately.</p>
</div>
</div>
<div class="sect1">
<h2 id="_handling_the_exception">Handling the Exception</h2>
<div class="sectionbody">
<div class="sect2">
<h3 id="_catch_an_exception_to_fall_back">Catch an Exception to fall back.</h3>
<div class="paragraph">
<p>When an expected Exception occurs you can fall back to a default result.</p>
</div>
<div class="listingblock">
<div class="title">Simple fallback</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">private static String getHostName0() {
    try {
        return InetAddress.getLocalHost().getHostName();
    } catch (UnknownHostException e) {
        return "localhost";
    }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>This method looks for a field in a class. If this fails it looks for a field in it&#8217;s super class. This fall back behaviour requires that the appropriate exception is caught.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The discard exception is added to the original with <code>addSuppressed</code>.  Whether this is a good idea, depends on each case.
</td>
</tr>
</table>
</div>
<div class="listingblock">
<div class="title">Fallback on a specific exception</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">/**
 * Get the Field for a class by name.
 *
 * @param clazz to get the field for
 * @param name  of the field
 * @return the Field.
 * @throws IllegalArgumentException if no field with that name could be found.
 */
public static Field getField(Class clazz, String name) throws IllegalArgumentException {
     try {
         Field field = clazz.getDeclaredField(name);
         field.setAccessible(true);
         return field;

     } catch (NoSuchFieldException e) {
         Class superclass = clazz.getSuperclass();
         if (superclass != null)
             try {
                 return getField(superclass, name);
             } catch (Exception e2) {
                 e.addSuppressed(e2);
             }
         throw new IllegalArgumentException(clazz + " does not have a public field " + name, e);
     }
 }</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_signal_for_special_handling">Signal for special handling.</h3>
<div class="paragraph">
<p>Special handling may be a delibrate exception to say this component is no longer valid and shouldn&#8217;t be used again.</p>
</div>
<div class="listingblock">
<div class="title">Catch an Exception in a nested call and remove a subscriber which is no longer valid.</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">try {
 for (int i = 0; i &lt; kvStore.segments(); i++)
     kvStore.entriesFor(i, e -&gt; subscriber.onMessage(e.getKey(), e.getValue()));

} catch (InvalidSubscriberException dontAdd) {
 topicSubscribers.remove(subscriber);
}</code></pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
The checked exception is thrown inside a lambda which expects this specific exception.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_wrap_an_exception_with_assertionerror">Wrap an Exception with AssertionError</h3>
<div class="paragraph">
<p>In this case, the Field returned by getField shouldn&#8217;t ever throw an IllegalAccessException, so it has been wrapped with an AssertionError.</p>
</div>
<div class="paragraph">
<p>It only make senses to wrap an Exception with an AssertionError when you know this is something which should never happen (not something you hope will never happen)</p>
</div>
<div class="listingblock">
<div class="title">Exception is not possible</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">/**
 * get a the value of a field by name.
 * &lt;p&gt;
 * If the name has a path with a / it is split into names and navigated into the object. e.g. "a/b" will look for a field "b" in the object in field "a"
 * &lt;p&gt;
 * If any reference in the path is null, the return is null.
 *
 * @param obj  Object to extract the value from
 * @param name path to the field.
 * @return the value of the field as an object if found, or null if any field in the path was null.
 * @throws IllegalArgumentException if the field could not be found.
 */
public static &lt;V&gt; V getValue(Object obj, String name) throws IllegalArgumentException {
    for (String n : name.split("/")) {
        Field f = getField(obj.getClass(), n);
        try {
            obj = f.get(obj);
            if (obj == null)
                return null;
        } catch (IllegalAccessException e) {
            throw new AssertionError(e);
        }
    }
    return (V) obj;
}</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_set_the_interrupted_flag_if_caught">Set the interrupted flag if caught</h3>
<div class="paragraph">
<p>When a thread is interrupted, it should remain so until the overall task is</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">/**
 * Silently pause for milli seconds.
 *
 * @param millis to sleep for.
 */
public static void pause(long millis) {
    long timeNanos = millis * 1000000;
    if (timeNanos &gt; 10e6) {
        try {
            Thread.sleep(millis);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupted();
        }
    } else {
        LockSupport.parkNanos(timeNanos);
    }
}</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_passing_on_the_exception">Passing on the exception</h3>
<div class="sect3">
<h4 id="_using_a_callback_to_handle_the_exception">Using a callback to handle the exception.</h4>
<div class="paragraph">
<p>Using a callback allows a developer using a library to control how exceptions should be handled.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>for production you might want to shutdown the whole server on a fatal error, log warnings and ignore debug messages.</p>
</li>
<li>
<p>for unit tests you might wish to capture your exceptions to see if any error occurred, or only the expected error occured.</p>
</li>
</ul>
</div>
<div class="listingblock">
<div class="title">An interface you could call in the event of an Exception.</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">@FunctionalInterface
public interface ExceptionHandler {
    default void on(Class clazz, Throwable thrown) {
        on(clazz, "", thrown);
    }

    default void on(Class clazz, String message) {
        on(clazz, message, null);
    }

    /**
     * A method to call when an exception occurs. It assumes there is a different handler for different levels.
     *
     * @param clazz the error is associated with, e.g. the one in which it was caught
     * @param message any message associated with the error, or empty String.
     * @param thrown any Thorwable caught, or null if there was no exception.
     */
    void on(Class clazz, String message, Throwable thrown);
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>We have an ExceptionHandler which opens a web page on Google or Stackoverflow approriate for the error, or using a fallback Exception handler.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">    try {
        if (Jvm.isDebug() &amp;&amp; Desktop.isDesktopSupported())
            Desktop.getDesktop().browse(new URI(uri));
        else
            fallBack.on(clazz, message, t);

    } catch (Exception e) {
        fallBack.on(clazz, message, t);
        fallBack.on(getClass(), "Failed to open browser", e);
    }</code></pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="_additional_printing_for_debugging_only">Additional printing for debugging only.</h4>
<div class="paragraph">
<p>Sometimes an error which would be too "noisy" for production code might be useful in trying to trace a bug in the code.</p>
</div>
<div class="paragraph">
<p>In this case, we check whether the code is running in the debugger and log an exception we normally expect to handle queiter or silently.</p>
</div>
<div class="listingblock">
<div class="title">Additional logging when attempting to reconnect to a TCP server.</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">if (Jvm.isDebug())
    e.printStackTrace();
// continue handling the exception.</code></pre>
</div>
</div>
<div class="paragraph">
<p>Using <code>printStackTrace</code> makes it clearer this is not intended for production use and makes it easier to find and remove later.</p>
</div>
</div>
<div class="sect3">
<h4 id="_adding_the_exception_to_the_result">Adding the Exception to the result.</h4>
<div class="paragraph">
<p>In a method which does a best attempt at decoding some data, and the caller wants to see as much as could be decoded, even if an exception occurred.</p>
</div>
<div class="listingblock">
<div class="title">Add the Exception to the StringWriter.</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">} catch (Exception e) {
    e.printStackTrace(new PrintWriter(writer));
    }</code></pre>
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_passing_on_a_check_exception_so_it_can_be_caught">Passing on a check exception so it can be caught</h3>
<div class="sect3">
<h4 id="_rethrow_as_an_unchecked_exception">Rethrow as an unchecked exception.</h4>
<div class="paragraph">
<p>In this case, rather than wrap the checked exception as an unchecked one, the Exception can be blindly re-thrown as the original exception</p>
</div>
<div class="paragraph">
<p>This is useful when a checked exception is thrown inside a lambda which doesn&#8217;t expect a checked exception.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">public List&lt;String&gt; collectFiles(List&lt;String&gt; filenames) throws IOException {
    return filenames.stream()
            .flatMap(f -&gt; {
                try {
                    return Files.lines(Paths.get(f));
                } catch (IOException e) {
                    throw Jvm.rethrow(e);
                }
            })
            .collect(Collectors.toList());
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Where Jvm.rethrow is implemented as follows</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">/**
 * Cast a CheckedException as an unchecked one.
 *
 * @param throwable to cast
 * @param &lt;T&gt;       the type of the Throwable
 * @return this method will never return a Throwable instance, it will just throw it.
 * @throws T the throwable as an unchecked throwable
 */
@SuppressWarnings("unchecked")
public static &lt;T extends Throwable&gt; RuntimeException rethrow(Throwable throwable) throws T {
    throw (T) throwable; // rely on vacuous cast
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>However, this is really a hack to get around the fact that the <code>Function</code> used, doesn&#8217;t support a checked exception.
A better solution, if you can choose the type of lambda is to have one which expects an Exception. See next.</p>
</div>
</div>
<div class="sect3">
<h4 id="_capturing_a_throwable_thrown_in_a_plain_thread_in_a_unit_test">Capturing a Throwable thrown in a plain thread in a unit test.</h4>
<div class="paragraph">
<p>Instead of an Executor service or a parallelStream(), sometimes you just want to use a plain thread for testing purposes.  You still need an exception thrown in that thread to cause the test to fail.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">Throwable[] thrown = { null };

Thread t = new Thread(() -&gt; {
    try {
        // something
    } catch (Throwable e) {
        thrown[0] = e;
    }
});
t.start();

// check something.

t.join();

if (thrown[0] != null)
    throw thrown[0];</code></pre>
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_using_a_lambda_which_expects_a_checked_exception">Using a lambda which expects a checked exception.</h3>
<div class="paragraph">
<p>We have a number of functional interfaces which work just like the built in classes of a similar name except they expect to throw a checked exception.</p>
</div>
<div class="listingblock">
<div class="title">Three of the FunctionalLambdas which can throw a Checked Exception</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">@FunctionalInterface
public interface ThrowingConsumer&lt;I, T extends Throwable&gt; {
    /**
     * Performs this operation on the given argument.
     *
     * @param in the input argument
     */
    void accept(I in) throws T;
}

@FunctionalInterface
public interface ThrowingFunction&lt;I, R, T extends Throwable&gt; {
    /**
     * Applies this function to the given argument.
     *
     * @param in the function argument
     * @return the function result
     */
    R apply(I in) throws T;
}

@FunctionalInterface
public interface ThrowingSupplier&lt;V, T extends Throwable&gt; {
    /**
     * Gets a result.
     *
     * @return a result
     */
    V get() throws T;
}</code></pre>
</div>
</div>
<div class="sect3">
<h4 id="_using_a_throwingconsumer">Using a ThrowingConsumer</h4>
<div class="paragraph">
<p>In the following example, you can pass a consumer to <code>forEachChild</code> which can throw a checked exception, which is then thrown back to the caller.</p>
</div>
<div class="listingblock">
<div class="title">If the acceptor throws a checked Exception, the method throws the same Exception</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">public &lt;T extends Throwable&gt; void forEachChild(@NotNull ThrowingConsumer&lt;Asset, T&gt; consumer) throws T {
    for (Asset child : children.values()) {
        consumer.accept(child);
    }
}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">onMessage can throw an InvalidSubscriberException which throw out of this method.</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">void bootstrapTree(@NotNull Asset asset, @NotNull Subscriber&lt;TopologicalEvent&gt; subscriber) throws InvalidSubscriberException {
    asset.forEachChild(c -&gt; {
        subscriber.onMessage(ExistingAssetEvent.of(asset.fullName(), c.name()));
        bootstrapTree(c, subscriber);
    });
}</code></pre>
</div>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_using_temporarily_checked_exception">Using temporarily checked exception.</h3>
<div class="paragraph">
<p>One way to ensure your documentation and handling of unchecked exception is correct is to make them temporarily checked.  I recently did this for one of our custom exceptions and ended up changing 65 files. In many cases, the exception was documented as occuring, but didn&#8217;t and in many cases it could occur but wasn&#8217;t documented.  In a couple of cases, this forced me to consider whether this was the most appropriate exception to be throwing and I changed it.  I would say I ended up fixing around 6 bugs as a part of this review.</p>
</div>
<div class="paragraph">
<p>We also have a checked version of many built in unchecked exceptions and we use this to review those as well from time to time. <a href="https://github.com/OpenHFT/Chronicle-Core/tree/master/checked-exceptions" class="bare">https://github.com/OpenHFT/Chronicle-Core/tree/master/checked-exceptions</a></p>
</div>
</div>
<div class="sect2">
<h3 id="_what_do_we_do_in_our_libraries">What do we do in our libraries?</h3>
<div class="paragraph">
<p>I reviewed our OpenHFT libraries in terms of exception handling and refactored it quite a bit as well as fixing a number of issues. Afterwards the profile looked like this</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Exception-handling-mix.png" alt="Exception handling mix">
</div>
</div>
<div class="paragraph">
<p>In the end about 30% were hndled in the code itself. The FATAL ones mean the code is broken, and the DEBUG ones are expected to be ignored, possibly logged.  The wrapped and rethrown exceptions expect the caller to handle the exception in some way.</p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>Knowing when to consider about exception handling and what to do about it is not easy.  Having checked exceptions can help you with that revirew when you are ready to do that.</p>
</div>
<div class="paragraph">
<p>Until you are ready to think about how to handle these exceptions I suggest passing the exception to the caller rather than logging them and pretending they didn&#8217;t happen.</p>
</div>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/06/21/Reviewing-Exception-Handling.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/06/21/Reviewing-Exception-Handling.html</guid><category><![CDATA[Exceptions]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Tue, 21 Jun 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Distributing Common Java APIs]]></title><description><![CDATA[<div class="sect2">
<h3 id="_distributing_data_stores_vs_private_data_stores_in_microservices">Distributing data stores vs Private data stores in Microservices</h3>
<div class="paragraph">
<p>Distributing data containers e.g. Maps, can be a way of avoiding having to think too much about distributing your application.  Your business logic is much the same, and it is your data collections which are visible to all your services.</p>
</div>
<div class="paragraph">
<p>Using centralised or even distributed data stores have a number of scalability issues, as it requires every low level data access to be distributed in a generic way which isn&#8217;t optimised for particular business requirements.</p>
</div>
<div class="paragraph">
<p>Distributing business components with private data stores is the favoured approach of Microservices and it limits the "surface area" of each service which reduces security issues, performance considerations and gives you more freedom for independant changes to service&#8217;s data structures.</p>
</div>
<div class="paragraph">
<p>In this review, I will be focusing on distributed data containers, largely because the interfaces are available in the JDK and available for everyone to look at.  I expect the conclusions drawn here are broadly similar for Business focused APIs, though each business component will vary.</p>
</div>
</div>
<div class="sect2">
<h3 id="_review_of_different_interaction_types_for_common_data_store_apis_in_the_jdk">Review of different interaction types for common Data store APIs in the JDK.</h3>
<div class="paragraph">
<p>I have reviewed a number of APIs in the JDK using a <a href="https://github.com/OpenHFT/Chronicle-Essence/tree/master/src/main/java/net/openhft/chronicle/essence/classify">tool available here</a></p>
</div>
<div class="paragraph">
<p>The interfaces reviewed were:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>ScheduledExecutorService (incl ExecutorService)</p>
</li>
<li>
<p>ReadWriteLock</p>
</li>
<li>
<p>Lock</p>
</li>
<li>
<p>BlockingDeque (incl BlockingQueue)</p>
</li>
<li>
<p>List (incl Collection)</p>
</li>
<li>
<p>ConcurrentNavigableMap (Incl SortedMap)</p>
</li>
<li>
<p>ConcurrentMap (incl Map)</p>
</li>
<li>
<p>NavigableSet (incl SortedSet, Set)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Interfaces higher up the inheritance tree where not included to avoid duplication. However there is still some duplication e.g. Set and List are Collection(s).</p>
</div>
<div class="paragraph">
<p><a href="https://vanilla-java.github.io/2016/05/17/Modelling-Microservice-Patterns-in-Code.html#Request-Response">Request-Response</a> - 104 methods</p>
</div>
<div class="paragraph">
<p><a href="https://vanilla-java.github.io/2016/05/17/Modelling-Microservice-Patterns-in-Code.html#Request-Proxy">Request-Proxy</a> - 29 methods</p>
</div>
<div class="paragraph">
<p><a href="https://vanilla-java.github.io/2016/05/17/Modelling-Microservice-Patterns-in-Code.html#Request-Visitor">Request-Visitor</a> - 26 methods</p>
</div>
<div class="paragraph">
<p><a href="https://vanilla-java.github.io/2016/05/16/Simple-Asynchronous-Microservices-using-Lambda-Architecture.html">Asynchronous Lambda</a> - 18 methods</p>
</div>
<div class="ulist">
<ul>
<li>
<p>7 methods</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Default Call - 22 methods</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
"Default Call" means the default implimentation of the interface is appropriate an can be executed on the caller.
</td>
</tr>
</table>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<a href="https://vanilla-java.github.io/2016/05/17/Modelling-Microservice-Patterns-in-Code.html#Request-Visitor">Request-Visitor</a> is variation on Request-Repsonse but rather than passing a Data Transfer Object, a Command Object is passed.
</td>
</tr>
</table>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
<a href="https://vanilla-java.github.io/2016/05/17/Modelling-Microservice-Patterns-in-Code.html#Request-Callback">Request-Callback</a> is a variation of Request Subscription where you expect to get exactly one invocation. There where no examples here.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>As I have noted in the past, while I believe using Lambda style asynchronous calls is ideal, this is not a natural interaction for many APIs and wouldn&#8217;t work so well in these methods.</p>
</div>
<div class="paragraph">
<p>Lastly, the <a href="https://vanilla-java.github.io/2016/05/17/Modelling-Microservice-Patterns-in-Code.html#Client-Injected-Handler">Client Injected Handler</a> might only make sense for a distributed component, and I wouldn&#8217;t expect it to occur in an API which wasn&#8217;t designed to utilise it.</p>
</div>
<div class="listingblock">
<div class="title">Request-Response examples</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">// from Map
V get(Object key);

// from NavigableMap
V lastEntry();

// from Lock
boolean tryLock();</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Request-Proxy examples</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">// from ReadWriteLock
Lock readLock()

// from Lock
Condition newCondition();

// from ConcurrentNavigableMap
NavigableSet&lt;K&gt; descendingKeySet();

// from ScheduledExecutorService
ScheduledFuture scheduleAtFixedRate(Runnable run, long delay, long period, TimeUnit timeUnit)</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Request-Visitor examples</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">// from List
Collection removeIf(Predicate test);

// from ConcurrentMap
V ConcurrentMap.computeIfPresent(K key, BiFunction mergeFunction);</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Asynchronous Lambda examples</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">// from BlockingDeque
void addFirst(E element);

// from Executor
void execute(Runnable runnable);

// from List
void replaceAll(UnaryOperator oper); // also a Visitor</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Default Call examples</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">// from ConcurrentMap
default V getOrDefault(Object key, V defaultValue) {
    V v;
    return ((v = get(key)) != null) ? v : defaultValue;
}

// from BlockingDeque
Stream&lt;E&gt; parallelStream(); <i class="conum" data-value="1"></i><b>(1)</b></code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>later the paralellStream itself could have it&#8217;s work distributed across a grid of machines.</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>The Request-Response call is the most often used in this example.  While you can avoid using it in a  distributed system, there is often cases where using Request-Response is just simpler e.g. for control functions which don&#8217;t have to scale as much as events which occur thousands of times a second.</p>
</div>
<div class="paragraph">
<p>The Request Proxy and Asynchronous Lambda calls have some natural use cases and have been around for some time.</p>
</div>
<div class="paragraph">
<p>The Request Visitor use cases where all added in Java 8 with the inclusion of Lambdas.</p>
</div>
<div class="paragraph">
<p>In some cases, a default method on the client might be enough.  This will usually call through to a method which does have to go across the transport. Ideally this should result in just one method call.  If a default method has more than one method call it might be more efficient to execute this on the server.</p>
</div>
<div class="paragraph">
<p>The Request Callback wasn&#8217;t use in these cases, but it can be an effective way to transform a Request-Response call into an asynchronous call, although it requires an API change.</p>
</div>
<div class="sect3">
<h4 id="_footnote_on_request_callback">Footnote on Request-Callback</h4>
<div class="paragraph">
<p>What I have done in the past is make Request-Callback interchangeable with Request-Response where the Callback is added as the last argument.  This could be kept visible only to the client, and the server doesn&#8217;t need to know. e.g.</p>
</div>
<div class="listingblock">
<div class="title">Request-Callback examples calling Request-Response</div>
<div class="content">
<pre class="highlight"><code class="language-Java" data-lang="Java">// from Map
default void get(Object key, ThrowableConsumer&lt;V&gt; consumer) {
    V v;
    try {
        v = get(key);
    } catch (Throwable t) {
        consumer.onException(t);
        return;
    }
    consumer.accept(v);
}</code></pre>
</div>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/06/04/Distributing-Common-Java-AP-I.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/06/04/Distributing-Common-Java-AP-I.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Data Containers]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Sat, 04 Jun 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Modelling Microservice Patterns in Code]]></title><description><![CDATA[<div class="sect2">
<h3 id="_service_interactions">Service Interactions</h3>
<div class="paragraph">
<p>There is a number of simple interactions a service can support.  Which pattern is best for your application can depend on what an existing application expects, and what latency requirements you have.  Broadly speaking these interactions fall into client-server and peir-to-peir messaging.</p>
</div>
<div class="paragraph">
<p>For peir-to-peir messaging, one approach to take is <a href="https://vanilla-java.github.io/2016/05/16/Simple-Asynchronous-Microservices-using-Lambda-Architecture.html">Lambda Architecture</a> however from supporting GUIs, client - server models can be easier to work with.</p>
</div>
<div class="paragraph">
<p>I feel it is important to design components which could be tested and debugged together, as in a monolith, but can be deployed as multiple <strong>right sized</strong> services to different threads, JVMs, or machines.</p>
</div>
</div>
<div class="sect2">
<h3 id="_client_server_messaging">Client-Server Messaging</h3>
<div class="paragraph">
<p>Client-Server messaging is often used in a synchronous way.  Asynchronous messaging can support multiple concurrent requests, reducing the cost of network latency and increasing throughput. Asynchronous messaging can perform best when it is latency, rather than network bandwidth which is your limiting factor.</p>
</div>
<div class="sect3">
<h4 id="_using_a_human_readable_protocol">Using a human readable protocol</h4>
<div class="paragraph">
<p>It is useful to be able to see the underlying messages in readable text.  I suggest using either text or a binary format which can be automatically converted to text to make it easy to  check the data sent. I suggest using YAML as the human readable format as;</p>
</div>
<div class="ulist">
<ul>
<li>
<p>it is designed to be human readable instead of a subset of another language/format.</p>
</li>
<li>
<p>it supports messages, types and comments.</p>
</li>
<li>
<p>it can be sent as binary for performance and converted to text as required</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>A human readable format allows you to quickly determine whether it is the sender or receiver which is behaving incorrectly.  It can allow you to see and stop undesirable behaviour which doesn&#8217;t show up in a test. e.g. are there too many heartbeats.</p>
</div>
</div>
<div class="sect3">
<h4 id="Request-Response">Request/Response</h4>
<div class="paragraph">
<p>The client sends a message to a server.  That message contains a message type to choose an action to perform on the server and usually includes a payload of data.  The response is usually just data.</p>
</div>
<div class="paragraph">
<p>For every message the client sends the server, it response with a single message. Often the client waits for the response, however the client can process the response asynchronously to improve throughput.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Request-Response.jpg" alt="Request Response">
</div>
</div>
<div class="paragraph">
<p>With asynchronous response processing, the client can send multiple requests over the same channel rather than wait for each one to complete.</p>
</div>
<div class="listingblock">
<div class="title">Synchronous server with synchronous client</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">interface OneRequestResponse {
    Response requestType(RequestData data);
}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Synchronous server with asynchronous client</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">interface OneRequestResponse2 {
    void requestType(RequestData data, Consumer&lt;Response&gt; responseConsumer);
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Using this API could be translated into YAML such as</p>
</div>
<div class="listingblock">
<div class="title">Synchronous server with synchronous or asynchronous client</div>
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml"># client sends to server
---
requestType: {
  data: 1,
  text: my text
}

# server sends to client
---
reply: !MyResponse {
  moreData: 128,
  message: Success
}
...</code></pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="Request-Proxy">Request/Proxy</h4>
<div class="paragraph">
<p>This is like request/response, except the object returned is a proxy for further events.  This is useful when the value returned represents a complex, or very large object.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Request-Proxy.jpg" alt="Request Proxy">
</div>
</div>
<div class="paragraph">
<p>This is used in Map returning a key set or values which is a proxy to the underlying map.</p>
</div>
<div class="listingblock">
<div class="title">Method on java.util.Map</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public interface Map&lt;K, V&gt; {

    Set&lt;K&gt; keySet();

    Set&lt;Map.Entry&lt;K, V&gt;&gt; entrySet();

    Collection&lt;V&gt; values();
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Using a proxy gives access to data without having to pass all the data from the server to the client.</p>
</div>
<div class="listingblock">
<div class="title">Method on java.util.Map</div>
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml"># client sends to server
--- !!meta-data # binary
csp: /map/my-map?view=map
---
keySet: []
---
entrySet: []
---
values: []

# server sends to client
---
reply: !set-proxy {
   csp: /map/my-map?view=keySet
}
---
reply: !set-proxy {
   csp: /map/my-map?view=entrySet
}
---
reply: !set-proxy {
   csp: /map/my-map?view=values
}

# client sends to server
--- !!meta-data # binary
csp: /map/my-map?view=keySet
--- !data # binary
size: []
---

# server sends to client
---
reply: 128000 <i class="conum" data-value="1"></i><b>(1)</b>

# client sends to server
--- !!meta-data # binary
csp: /map/my-map?view=keySet
--- !data # binary
remove: "key-111"
---

# server sends to client
---
reply: true <i class="conum" data-value="2"></i><b>(2)</b>
...</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>no need to send 128,000 keys just to determine how many there was.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>key was removed on the server, not a copy sent to the client.</td>
</tr>
</table>
</div>
</div>
<div class="sect3">
<h4 id="Request-Callback">Request/Callback</h4>
<div class="paragraph">
<p>The client sends a message to a server.  That message contains information to call an action on the server and usually includes a payload of data.  The callback is also a message containing an action and data.</p>
</div>
<div class="paragraph">
<p>This is like a Subscription except that exactly one event is expected to be returned.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Request-Callback.jpg" alt="Request Callback">
</div>
</div>
<div class="paragraph">
<p>The use of a callback provides a richer interaction between the caller and callee.</p>
</div>
<div class="listingblock">
<div class="title">Synchronous server with a callback</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">interface OneCallback {
    void resultOne(ResultOne result);

    void resultTwo(List&lt;ResultOne&gt; results);

    void errorResult(String message);
}

interface OneRequestCallback {
    void requestType(RequestData data, OneCallback callback);
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>The client could be configured to either wait for the server to call the callback, or handle the callback asynchronously.  The thread which performs the method in the callback will be on the client side.</p>
</div>
<div class="listingblock">
<div class="title">Synchronous server with a callback</div>
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml"># client sends to server
---
requestType: {
  data: 1,
  text: my text
}

# server sends to client
---
resultTwo: [
  {
      moreData: 128,
      message: Success
  },
  {
      moreData: 1111,
      message: Failure
  }
}
...</code></pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="Request-Visitor">Request/Visitor</h4>
<div class="paragraph">
<p>The client sends one or two visitors to the server to apply to local objects or actors.  This visitor can be an update which applied atomically to an actor, and/or a vistor can be applied to retrieve specific information.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Request-Visitor.jpg" alt="Request Visitor">
</div>
</div>
<div class="listingblock">
<div class="title">Pass a function to apply on a server for a given key</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">interface KeyedResources&lt;V&gt; {

    void asyncUpdate(String key, Visitor&lt;V&gt; vistor);

    &lt;R&gt; R syncUpdate(String key, Visitor&lt;V&gt; updater, Function&lt;V, R&gt; returnFunction);

}</code></pre>
</div>
</div>
<div class="paragraph">
<p>This approach allows the caller to apply an operation to an actor without needing to know where that actor is.</p>
</div>
<div class="listingblock">
<div class="title">Pass a function to apply on a server for a given key</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java"># client sends to server
---
asyncUpdate: [
    "key-5",
    !MyVisitor { add: 10 }
]
# no return value
--- # subtract 3 and return x * x
syncUpdate: [
    "key-6",
    !MyVisiitor { add: -3 },
    !Square { }
];

# server sends to client
---
reply: 1024
...</code></pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="Request-Subscription">Request/Subscription</h4>
<div class="paragraph">
<p>By requesting a subscription, a client can receive multiple asynchronous events.  This can start with a bootstrap of existing information, followed by live updates.</p>
</div>
<div class="paragraph">
<p>Once a subscription ahs been made, it should be altered, or cancelled</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Request-Subscription.jpg" alt="Request Subscription">
</div>
</div>
<div class="listingblock">
<div class="title">Pass a function to apply on a server for a given key</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">interface Queryable&lt;E&gt; {

    &lt;R&gt; Subscription&lt;E, R&gt; subscribe(Filter&lt;E&gt; filter, Function&lt;E, R&gt; returnMapping, Subscriber&lt;R&gt; subscriber);

}

interface Subscription&lt;R&gt; {
    // change the current filter.
    void setFilter(Filter&lt;E&gt; newFilter);

    void cancel();
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Up to this point, all the message are actions lived with a single response.  In Chronicle-Engine, we associate a <code>csp</code> or Chronicle Service Path for each actor, and a <code>tid</code> or Transaction ID with each operation.  This allows multiple concurrent actions to different actors.  This routing information is passed in meta data, with the actions for that destination following</p>
</div>
<div class="listingblock">
<div class="title">Pass a function to apply on a server for a given key</div>
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml"># client sends server
--- !!meta-data # binary
csp: /maps/my-map
tid: 12345
--- !!data # binary
subscribe: [
   !MyFilter { field: age, op: gt, value: 18 },
   !Getter { field: name }
]
request: 2 # only send me two events for now.

# server sends client
--- !!meta-data # binary
tid: 12345
--- !data-not-complete # binary
reply: Steve Jobs
--- !data-not-complete # binary
reply: Alan Turing

# client sends server
--- !!meta-data # binary
tid: 12345
--- !data # binary
cancel: []

# server sends client
--- !!meta-data # binary
tid: 12345
--- !data # binary
cancelled: "By request"
...</code></pre>
</div>
</div>
</div>
<div class="sect3">
<h4 id="Client-Injected-Handler">Client Injected Handler</h4>
<div class="paragraph">
<p>This approach allows the client to version and configure which handlers are used on the server on the client&#8217;s behalf. In particular, this is useful when supporting multiple versions of clients concurrently.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Client-Injected-Handler.jpg" alt="Client Injected Handler">
</div>
</div>
<div class="listingblock">
<div class="title">Client passes a handler to intergate with the server and act it&#8217;s behalf</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">interface AcceptsHandler {

    /**
     * The accept method takes a handler to pass to the server.
     * and it returns a proxy it can call to invoke that hdnler on the server.
     */
    &lt;H extends ContextAcceptor&gt; H accept(H handler);
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>A simple example of a handler we use is for heartbeats</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml"># client sends server
--- !!meta-data # binary
csp: /
cid: 1
handler: !HeartbeatHandler {
    heartbeatTimeoutMs: 10000
    heartbeatIntervalMs: 2000
}
...</code></pre>
</div>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
This allows different clients to be working with dfferent versions of heartbeat handlers at the same time, supporting old and new clients with a single server.
</td>
</tr>
</table>
</div>
</div>
<div class="sect3">
<h4 id="_conclusion">Conclusion</h4>
<div class="paragraph">
<p>In addition to <a href="https://vanilla-java.github.io/2016/05/16/Simple-Asynchronous-Microservices-using-Lambda-Architecture.html">Lambda Architecture</a> models for back end, peir-to-peir services, we can support a rich set of interactions between clients and servers.</p>
</div>
<div class="paragraph">
<p>These interactions can be performed without a transport i.e. one component directly calls another to make testing and debugging easier.</p>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/05/17/Modelling-Microservice-Patterns-in-Code.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/05/17/Modelling-Microservice-Patterns-in-Code.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Patterns]]></category><category><![CDATA[Java]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Tue, 17 May 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Simple Asynchronous Microservices using Lambda Architecture.]]></title><description><![CDATA[<div class="sect2">
<h3 id="_lambda_architecture">Lambda Architecture</h3>
<div class="paragraph">
<p>Lambda Architecture is a simple, powerful, though limited example of a Microservice. As it is so simple, you want to use it as much as possible, to expose the more complex services/component in your system which cannot support this interaction model.</p>
</div>
<div class="quoteblock">
<blockquote>
<div class="paragraph">
<p><a href="https://en.wikipedia.org/wiki/Lambda_architecture">Lambda Architecture</a> depends on a data model with an append-only, immutable data source that serves as a system of record. It is intended for ingesting and processing timestamped events that are appended to existing events rather than overwriting them. State is determined from the natural time-based ordering of the data.</p>
</div>
</blockquote>
</div>
</div>
<div class="sect2">
<h3 id="_a_translation_function">A translation function</h3>
<div class="paragraph">
<p>The microservice takes messages in and produces messages out. It&#8217;s input is an append only data structure, and the function has no state of it&#8217;s own which is not derived from it&#8217;s inputs.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Lambda-Architecture.jpg" alt="Lambda Architecture">
</div>
</div>
<div class="paragraph">
<p>This simple translator is useful for taking messages from external systems and normalising those messages into an internal format.  Conversely, you can convert messages from an internal message format to an external format.</p>
</div>
</div>
<div class="sect2">
<h3 id="_working_with_history">Working with history</h3>
<div class="paragraph">
<p>Notionally, all the messages to date form an input of the function.  Replaying every message on every new message is too expensive.  You can instead cache key information derived from those messages to provide a real time solution.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Lambda-Architecture-With-State.jpg" alt="Lambda Architecture With State">
</div>
</div>
<div class="paragraph">
<p>This is a variation on the standard function where state is retained based on it&#8217;s inputs.  Provided this is only an optimisation, rather than a change in behaviour, this is still a function. i.e. a function of all the messages, rather than just one message.</p>
</div>
<div class="paragraph">
<p>Having a function with private state gives it memory and makes it practical for more complex operations such as control (permissioning, turning functionality on and off), matching of messages over time (e.g. order matching)</p>
</div>
</div>
<div class="sect2">
<h3 id="_putting_these_together">Putting these together</h3>
<div class="paragraph">
<p>By having translators for messages in and out, as well as a central control system, you can build a more complex processing system.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Lambda-Architecture-Services-Chained.jpg" alt="Lambda Architecture Services Chained">
</div>
</div>
<div class="paragraph">
<p>The functionality here should form your critical path.  You want a simple message to be able to pass from one end of your system to the other in the shortest time possible.  In Java this can mean as low as 10 micro-seconds 99% of the time. As well as being fast it is simple to test each function independently, as well as test this without transports for ease of debugging.</p>
</div>
</div>
<div class="sect2">
<h3 id="_non_critcial_path_functions">Non-critcial path functions.</h3>
<div class="paragraph">
<p>Not everything can or should be on the critical path.  There will be operations which either use a lot of CPU, or need to obtain data from external systems such as databases.  You need a way to interact with these systems without impacting the critcial path. Using feedback is a simple way to achieve this.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/Lambda-Architecture-Services-Feedback.jpg" alt="Lambda Architecture Services Feedback">
</div>
</div>
<div class="paragraph">
<p>In this diagram, the slower functions are CPU bound strategies, but you could have components which obtain data from a database for example, without slowing the critical path.</p>
</div>
</div>
<div class="sect2">
<h3 id="_reading_more">Reading more</h3>
<div class="paragraph">
<p>You can read my earlier posts on how to implement these Lambda Architecture components in Java and easily test them. <a href="https://vanilla-java.github.io/2016/03/22/Micro-services-for-performance.html">Micro services for Performance</a> as well has how you can implement a simple service to asynchronously access a JDBC database <a href="https://vanilla-java.github.io/2016/04/12/A-J-D-B-C-Gateway-Microservice.html">A JDBC Gateway Microservice</a></p>
</div>
<div class="paragraph">
<p>For low latency, high throughput persistence we recommend using <a href="http://chronicle.software/products/chronicle-queue/">Chronicle Queue</a> which is Apache 2.0 open source project available at <a href="https://github.com/OpenHFT/Chronicle-Queue" class="bare">https://github.com/OpenHFT/Chronicle-Queue</a> and on <a href="http://search.maven.org/#search%7Cga%7C1%7Cchronicle%20queue">Maven Central</a></p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/05/16/Simple-Asynchronous-Microservices-using-Lambda-Architecture.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/05/16/Simple-Asynchronous-Microservices-using-Lambda-Architecture.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Lambda Architecture]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Mon, 16 May 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Microservices are about applying a group of Best Practices]]></title><description><![CDATA[<div class="sect2">
<h3 id="_microservices_denial">Microservices Denial</h3>
<div class="paragraph">
<p>A number of times clients have said; they can&#8217;t imagine their organisation using Microservices.
I found this surprising as I know those people are using many of the principles of Microservices already.</p>
</div>
<div class="paragraph">
<p>I can understand that they feel no need to join the hype around microservices, but the reality is, like it or not,
you are most likely using some of the best practices Microservices advocates.</p>
</div>
<div class="paragraph">
<p>Stages of denial</p>
</div>
<div class="ulist">
<ul>
<li>
<p>It all seems like hype, we don&#8217;t go in for that.</p>
</li>
<li>
<p>Perhaps not all hype, but does it really mean anything.</p>
</li>
<li>
<p>It all sounds pretty familiar.</p>
</li>
<li>
<p>It sounds like what we are doing already.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Formally or informally, most likely you have been following some best practices already.</p>
</div>
</div>
<div class="sect2">
<h3 id="_adopting_best_practices">Adopting Best Practices.</h3>
<div class="paragraph">
<p>Perhaps you don&#8217;t like the name Microservices, and perhaps not all the different things people
associate with Microservices are right for your team, your projects.  Instead lets consider how do you formalise what you are trying to achieve and finding a clearer path to adopting best practices.</p>
</div>
<div class="sect3">
<h4 id="_why_do_this_at_all">Why do this at all?</h4>
<div class="paragraph">
<p>Within larger teams there can be some disagreement as to how to proceed.  There can be strong feelings on what is bad, or broken about what you have and the temptation is to just throw away large portions of what you have or throw away everything.</p>
</div>
<div class="paragraph">
<p>The problem with doing this is you risk taking out the old known problems and putting in more new unknown ones.  You need to make changes, possibly selectively radical changes, which are manageable and achieveable for your team.</p>
</div>
<div class="paragraph">
<p>By formalising what you are talking about, even using buzz words, you can state more clearly what you are trying to achieve and why.  It gives you a common language in which to communicate your ideas.  It can give you a better perspective of where you are today and where you need to be.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_best_practices_scorecard">Best Practices Scorecard.</h3>
<div class="paragraph">
<p>Using a scorecard you can quickly see where you are today, where the quick wins are and where you need to be in the medium term.  A big part of the question; where are we today, is just rebranding what you have already.  This review can lead you to see in some ways you are not in as bad position as you might have imagined, while putting in to stark contrast the areas with the most opportunity to improve.</p>
</div>
<div class="sect3">
<h4 id="_initial_steps">Initial steps</h4>
<div class="paragraph">
<p>The initial steps I suggest are</p>
</div>
<div class="ulist">
<ul>
<li>
<p>rebrand what you have; you will have some best practices already.</p>
</li>
<li>
<p>quick wins; low risk changes could help improve your position.</p>
</li>
<li>
<p>medium term improvements; what do you need to achieve in the next six months.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_an_example">An example.</h3>
<div class="paragraph">
<p>This is a score card I put together for a senior manager for firm of over 60 developers. In the space of an hour we went from not considering Microservices, to being convinced it was a path to enhance their solutions.</p>
</div>
<table class="tableblock frame-all grid-all spread">
<caption class="title">Table 1. Best Practice Scorecard</caption>
<colgroup>
<col style="width: 50%;">
<col style="width: 16.6666%;">
<col style="width: 16.6666%;">
<col style="width: 16.6668%;">
</colgroup>
<thead>
<tr>
<th class="tableblock halign-left valign-top"></th>
<th class="tableblock halign-left valign-top">Today</th>
<th class="tableblock halign-left valign-top">Quick Wins</th>
<th class="tableblock halign-left valign-top">6 Months</th>
</tr>
</thead>
<tbody>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Simple bsuiness component based design.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★☆</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★☆</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Distributed by JVM and Machine</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★☆</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Service Discovery</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★☆</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Resilience to failure</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★☆</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★☆</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Transport agnostic</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★☆</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Asynchronous messaging.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★☆</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Automated, dynamic deployment of services.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★☆</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★☆</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Service local private data sets.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">☆</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Transparent messaging.</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">☆</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★☆</p></td>
</tr>
<tr>
<td class="tableblock halign-left valign-top"><p class="tableblock">Lambda Architecture</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★</p></td>
<td class="tableblock halign-left valign-top"><p class="tableblock">★★★</p></td>
</tr>
</tbody>
</table>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
This is not intended to be an exhaustive list. It is what we reviewed in the first hour.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The last two areas were recognised as the most significant areas for improvement as they are both low risk but highly likely to reveal the cause of some of the recurring issues they have been having.</p>
</div>
<div class="paragraph">
<p>In particular, performance and stability issues require quality, detailed information about what your system is doing so you can take an informed view as what needs to be changed to fix it.</p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>Whether you love or loath Microservices, most likely you are using some Best Practices, and a review of the Best Practices used in Microservices may prove to be useful in seeing how you can improve what you have.</p>
</div>
<div class="sect3">
<h4 id="_contact_us">Contact Us.</h4>
<div class="paragraph">
<p><a href="http://chronicle.software/">Chronicle Software</a> provides one and two week workshop for starting new projects, training and consulting.  We provide <a href="http://chronicle.software/support/">Professional Support</a>. We sponsor open source software on github as well as a low latency FIX Engine and enterprise versions of a high performance <a href="http://chronicle.software/products/chronicle-queue/">Queue</a>, a key value store <a href="http://chronicle.software/products/chronicle-map/">Map</a> and a data distributions <a href="http://chronicle.software/products/chronicle-engine/">Engine</a></p>
</div>
<div class="paragraph">
<p>You can email us on <a href="mailto:sales@chronicle.software">sales@chronicle.software</a></p>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/04/30/Microservices-are-about-applying-a-group-of-Best-Practices.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/04/30/Microservices-are-about-applying-a-group-of-Best-Practices.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Best Practice]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Sat, 30 Apr 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Light weight Microservices]]></title><description><![CDATA[<div class="sect2">
<h3 id="_what_do_we_see_as_light_weight_microservices">What do we see as light weight Microservices?</h3>
<div class="paragraph">
<p>A key requirements for productivity is a short development lifecycle.
Every time you have to wait between changing code and knowing there is an error to be fixed, increases the cost of fixing that error.
You want fast feedback to ensure you stay productive.</p>
</div>
<div class="paragraph">
<p>Another key requirement is simple components which are easy to reason about.  One of the simplest is services which follow the Lambda Architecture.</p>
</div>
<div class="sect3">
<h4 id="_using_your_ide_as_much_as_possible">Using your IDE as much as possible.</h4>
<div class="paragraph">
<p>You should be able to</p>
</div>
<div class="ulist">
<ul>
<li>
<p>see most errors in your IDE as you type, before you even compile your code.</p>
</li>
<li>
<p>run your program using the Run button on your IDE.</p>
</li>
<li>
<p>debug your program by running it in your IDE.</p>
</li>
<li>
<p>profile your application from your IDE</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_run_your_application_quickly_on_your_desktop">Run your application quickly on your desktop</h4>
<div class="paragraph">
<p>It is essential to be able to run your service entirely from your desktop.  This allows you to</p>
</div>
<div class="ulist">
<ul>
<li>
<p>write repeatable unit tests for key components of your system.</p>
</li>
<li>
<p>run your application using state which is local to you.</p>
</li>
<li>
<p>work without contention on shared resources such as a shared development database.</p>
</li>
<li>
<p>reproduce production issues from your development environment.</p>
</li>
</ul>
</div>
</div>
<div class="sect3">
<h4 id="_microservices_which_meets_your_business_needs">Microservices which meets your business needs.</h4>
<div class="paragraph">
<p>The components which make up you microservices should be</p>
</div>
<div class="ulist">
<ul>
<li>
<p>directly releated to a business requirement. If you couldn&#8217;t explain to an end user/business representaive why the component is needed to fulfill what they need, it&#8217;s not a business component.</p>
</li>
<li>
<p>the transport fo messages between services should be a seperate concern and even optional. e.g. for unit tests and debugging.</p>
</li>
<li>
<p>a microservice is not a browser, and how a browser talks to a web service is not the only model for how microservices can talk to each other.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_how_to_define_components">How to define components.</h3>
<div class="paragraph">
<p>When you define your components, it should be a direct reflection of the business function it performs.</p>
</div>
<div class="ulist">
<ul>
<li>
<p>microservices should be coding in terms of top down design, sarting with <strong>what</strong> it needs to do at the highest level, calling methods which implement the <strong>how</strong> this is done.</p>
</li>
<li>
<p>transport considerations should be defined externally to the component.  The transport should not have any influence on the business requirements, and should be interchangeable.</p>
</li>
</ul>
</div>
</div>
<div class="sect2">
<h3 id="_lambda_architecture">Lambda Architecture.</h3>
<div class="paragraph">
<p>Lambda Architecture (not the same as Lambdas in Java which are closures) provides a simple model for microservices to follow.  Not all microservices can follow the Lambda Architecture, however the more service which do follow it the easier your system will be to reason about.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/04/30/Light-weight-Microservices.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/04/30/Light-weight-Microservices.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Architecture]]></category><category><![CDATA[Design principles]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Sat, 30 Apr 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Microservice with a Websocket transport]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>In this post, we will look at a simple component to publish market data and accept orders.  How can this be accessed using websockets as a transport?</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_our_service">Our service</h3>
<div class="listingblock">
<div class="title">Interface for messages from the client to the server</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public interface GUIGateway {
    void enableMarketData(boolean enabled);
    void newOrder(Order order);
}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Interface for messages from the server to the client</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public interface GUIGatewayListener {
    void market(MarketData marketData);
    void order(OrderStatus orderStatus);
}</code></pre>
</div>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/04/25/Microservice-with-a-Websocket-transport.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/04/25/Microservice-with-a-Websocket-transport.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Websockets]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Mon, 25 Apr 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Bad String]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>This program has two threads printing messages alternatively.  However if you change a <code>String</code> from <code>"cC"</code> to <code>"cc"</code> it doesn&#8217;t print anything, WHY?</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class PingPongMain {
    public static void main(String[] args) throws InterruptedException {
        new Thread(() -&gt; {
            try {
                synchronized ("bb") {
                    while (true) {
                        "bb".wait();
                        "bb".notifyAll();
                        System.out.println("b");
                    }
                }
            } catch (InterruptedException e) {
                throw new AssertionError(e);
            }
        }).start();
        Thread.sleep(100);
        setString("bb", 'c', 'C');
        new Thread(() -&gt; {
            try {
                // change "cC" to "cc" and this program prints nothing.
                synchronized ("cC") {
                    while (true) {
                        "cC".notifyAll();
                        "cC".wait();
                        System.out.println("c");
                    }
                }
            } catch (InterruptedException e) {
                throw new AssertionError(e);
            }
        }).start();

    }

    public static void setString(String s, char... chars) {
        try {
            Field value = String.class.getDeclaredField("value");
            value.setAccessible(true);
            value.set(s, chars);
        } catch (Exception e) {
            throw new AssertionError(e);
        }
    }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>The solution is below</p>
</div>
<div class="paragraph">
<p>.</p>
</div>
<div class="paragraph">
<p>.</p>
</div>
<div class="paragraph">
<p>.</p>
</div>
<div class="imageblock">
<div class="content">
<img src="https://vanilla-java.github.io/images/omg_wtf.jpg" alt="omg wtf">
</div>
</div>
<div class="paragraph">
<p>.</p>
</div>
<div class="paragraph">
<p>.</p>
</div>
<div class="paragraph">
<p>.</p>
</div>
</div>
</div>
<div class="sect3">
<h4 id="_a_combination_of_strangeness">A combination of strangeness</h4>
<div class="paragraph">
<p>There is a couple of elements to this puzzle</p>
</div>
<div class="ulist">
<ul>
<li>
<p>using a String literal as a Object to lock on.</p>
</li>
<li>
<p>corrupting a String in the literal pool.</p>
</li>
<li>
<p>replacing one String with another with the same hashCode so the replacement is found. "bb".hashCode() == "cC".hashCode()</p>
</li>
</ul>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/04/21/Bad-String.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/04/21/Bad-String.html</guid><category><![CDATA[Puzzler]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Thu, 21 Apr 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[A JDBC Gateway Microservice]]></title><description><![CDATA[<div class="sect2">
<h3 id="_a_deep_dive_into_a_low_latency_microservice">A deep dive into a low latency microservice</h3>
<div class="paragraph">
<p>We look at a microservice which can run in it&#8217;s own JVM, can perform JDBC updates and queries via a persistent queue for in bound request and a queue for results.</p>
</div>
<div class="paragraph">
<p>In previous posts I looked at the theory behind there low latency micro-services so lets have a look at a micro-service which can do something useful.</p>
</div>
<div class="paragraph">
<p>I would consider this a Gateway Service as it interacts with a system which is outside the microservice model.</p>
</div>
</div>
<div class="sect2">
<h3 id="_what_does_this_service_do">What does this service do?</h3>
<div class="paragraph">
<p>The service supports two messages <code>executeQuery</code> and <code>executeUpdate</code>.  These methods mirror the same methods for <code>PreparedStatement</code> except the results are passed as messages</p>
</div>
<div class="listingblock">
<div class="title">Two asynchronous messages in</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public interface JDBCStatement {
    void executeQuery(String query, Class&lt;? extends Marshallable&gt; resultType, Object... args);

    void executeUpdate(String query, Object... args);
}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Two asynchronous results, possibly with an Exception thrown</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public interface JDBCResult {
    void queryResult(Iterator&lt;Marshallable&gt; marshallableList, String query, Object... args);
    void queryThrown(Throwable t, String query, Object... args);

    void updateResult(long count, String update, Object... args);
    void updateThrown(Throwable t, String update, Object... args);
}</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_component_wrapped_as_a_service">Component wrapped as a Service</h3>
<div class="paragraph">
<p>As in previous posts, we create a component which can be executed without a transport.  This can be unit tested stand alone, or with a series of components without the transport complicating testing and debugging.</p>
</div>
<div class="listingblock">
<div class="title">Looking at the executorUpdate method</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class JDBCComponent implements JDBCStatement {
    private final Connection connection;
    private final JDBCResult result;

    public JDBCComponent(ThrowingSupplier&lt;Connection, SQLException&gt; connectionSupplier, JDBCResult result) throws SQLException {
        connection = connectionSupplier.get();
        this.result = result;
    }

    @Override
    public void executeUpdate(String query, Object... args) {
        try (PreparedStatement ps = connection.prepareStatement(query)) {
            for (int i = 0; i &lt; args.length; i++)
                ps.setObject(i + 1, args[i]);
            int count = ps.executeUpdate();
            // record the count.
            result.updateResult(count, query, args);
        } catch (Throwable t) {
            result.updateThrown(t, query, args);
        }
    }</code></pre>
</div>
</div>
<div class="paragraph">
<p>You can see that every input message creates an output message with the results.  This will be useful later for restarting the service from where it got up to and monitoring it&#8217;s progress, as well as obtaining the results.</p>
</div>
<div class="listingblock">
<div class="title">How to wrap this as a service</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class JDBCService implements Closeable {
    private static final Logger LOGGER = LoggerFactory.getLogger(JDBCService.class);
    private final ChronicleQueue in;
    private final ChronicleQueue out;
    private final ExecutorService service;
    private final ThrowingSupplier&lt;Connection, SQLException&gt; connectionSupplier;
    private volatile boolean closed = false;

    public JDBCService(ChronicleQueue in, ChronicleQueue out, ThrowingSupplier&lt;Connection, SQLException&gt; connectionSupplier) throws SQLException {
        this.in = in;
        this.out = out;
        this.connectionSupplier = connectionSupplier;

        service = Executors.newSingleThreadExecutor(
                new NamedThreadFactory(in.file().getName() + "-JDBCService", true)); <i class="conum" data-value="1"></i><b>(1)</b>
        service.execute(this::runLoop); <i class="conum" data-value="2"></i><b>(2)</b>
        service.shutdown(); // stop when the task exits.
    }


    void runLoop() {
        try {
            JDBCResult result = out.createAppender() <i class="conum" data-value="3"></i><b>(3)</b>
                    .methodWriterBuilder(JDBCResult.class)
                    .recordHistory(true)
                    .get();
            JDBCComponent js = new JDBCComponent(connectionSupplier, result);
            MethodReader reader = in.createTailer().afterLastWritten(out).methodReader(js); <i class="conum" data-value="4"></i><b>(4)</b>
            Pauser pauser = new LongPauser(50, 200, 1, 10, TimeUnit.MILLISECONDS);
            while (!closed) {
                if (reader.readOne()) <i class="conum" data-value="5"></i><b>(5)</b>
                    pauser.reset();
                else
                    pauser.pause();
            }
        } catch (Throwable t) {
            LOGGER.error("Run loop exited", t);
        }
    }

    @Override
    public void close() {
        closed = true;
    }

    public JDBCStatement createWriter() {
        return in.createAppender() <i class="conum" data-value="6"></i><b>(6)</b>
                .methodWriterBuilder(JDBCStatement.class)
                .recordHistory(true)
                .get();
    }

    public MethodReader createReader(JDBCResult result) {
        return out.createTailer().methodReader(result);
    }
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Create a thread with a meaningful name. We use an ExecutorService in case we want to do something more complex with it later.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Add this task to the pool</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Create a proxy to write to the output queue</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>Start reading after the last message to be successfully processed.</td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
<td>Read one message at a time.</td>
</tr>
<tr>
<td><i class="conum" data-value="6"></i><b>6</b></td>
<td>Add a helper method to create a writer to the input of this service</td>
</tr>
<tr>
<td><i class="conum" data-value="7"></i><b>7</b></td>
<td>Add a helper method to read the results of this service.</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_how_does_it_perform">How does it perform?</h3>
<div class="paragraph">
<p>I tested this writing to HSQLDB which is pretty fast, even writing to a file. Even so, using it as a Service could be useful for very bursty activity as we can handle much higher rates for periods of time.</p>
</div>
<div class="paragraph">
<p>The performance test writes 200K messages as fast as possible and waits for the to all complete.  The first timing is the average latency to write each request, and the second latency is the average time to receive the result.</p>
</div>
<div class="listingblock">
<div class="content">
<pre>Average time to write each update 1.5 us, average time to perform each update 29.7 us</pre>
</div>
</div>
<div class="paragraph">
<p>While HSQLDB was able to sustain over 33 K updates per second, (1 / 29.7 us), the service wrapping could handle bursts of over 660K writes per second. (1 / 1.5 us)  This represents a 20 fold improvement in the burst throughput it can support.</p>
</div>
</div>
<div class="sect2">
<h3 id="_how_long_can_a_burst_be">How long can a burst be?</h3>
<div class="paragraph">
<p>Both Linux and Windows tend to perform well up to 10% of main memory being "dirty" or not written to disk. For example, if you have 256 GB, you can have 25 GB of "dirty" data.  Even so, if the burst rate is faster than the consuming service, but slow enough that the disk subsystem can keep up, your bursts can exceed main memory size.  To put that in context, if your messages are 256 bytes long, the service could be behind by more than one billion messages, and it will not run out of memory, or fail.  The main limitation in this case, is the amount of free disk space you have.  At the time of posting you can buy 1 TB of Enterprise SSD for less than $600, and Samsung is selling 16 TB SSD drives. I expect  storage costs will continue to fall.</p>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>Building a microservice by wrapping a component with an asynchronous API with a transport for messaging in and out has worked without too much complexity.</p>
</div>
<div class="paragraph">
<p>The best way to go fast is to do less work.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/04/12/A-JDBC-Gateway-Microservice.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/04/12/A-JDBC-Gateway-Microservice.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[JDBC]]></category><category><![CDATA[Example]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Tue, 12 Apr 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Microservices in the Chronicle World - Part 5]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>In this part we look at putting a micro service together as a collection of services, and consider how we can evaluate the performance of these services.  We introduce JLBH (Java Latency Benchmark Harness) to test these services.</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_building_a_service_wrapper">Building a Service Wrapper.</h3>
<div class="paragraph">
<p>For more complex services, we use an EventLoop in Chronicle Threads to manage multiple concurrent tasks. In this example we have only one task, so it is simpler to have a custom class to support it.</p>
</div>
<div class="paragraph">
<p>This class is available at <a href="https://github.com/Vanilla-Java/Microservices/blob/master/src/main/java/net/openhft/samples/microservices/ServiceWrapper.java">ServiceWrapper</a>.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class ServiceWrapper&lt;I extends ServiceHandler&gt; implements Runnable, Closeable {
    private final ChronicleQueue inputQueue, outputQueue;
    private final MethodReader serviceIn;
    private final Object serviceOut;
    private final Thread thread;
    private final Pauser pauser = new LongPauser(1, 100, 500, 10_000, TimeUnit.MICROSECONDS); <i class="conum" data-value="1"></i><b>(1)</b>

    private volatile boolean closed = false;

    public ServiceWrapper(String inputPath, String outputPath, I serviceImpl) {
        Class outClass = ObjectUtils.getTypeFor(serviceImpl.getClass(), ServiceHandler.class); <i class="conum" data-value="2"></i><b>(2)</b>

        outputQueue = SingleChronicleQueueBuilder.binary(outputPath).build(); <i class="conum" data-value="3"></i><b>(3)</b>
        serviceOut = outputQueue.createAppender().methodWriter(outClass);
        serviceImpl.init(serviceOut); <i class="conum" data-value="4"></i><b>(4)</b>

        inputQueue = SingleChronicleQueueBuilder.binary(inputPath).build();
        serviceIn = inputQueue.createTailer().methodReader(serviceImpl); <i class="conum" data-value="5"></i><b>(5)</b>

        thread = new Thread(this, new File(inputPath).getName() + " to " + new File(outputPath).getName());
        thread.setDaemon(true);
        thread.start(); <i class="conum" data-value="6"></i><b>(6)</b>
    }

    @Override
    public void run() {
        AffinityLock lock = AffinityLock.acquireLock(); <i class="conum" data-value="7"></i><b>(7)</b>
        try {
            while (!closed) {
                if (serviceIn.readOne()) { <i class="conum" data-value="8"></i><b>(8)</b>
                    pauser.reset(); <i class="conum" data-value="9"></i><b>(9)</b>
                } else {
                    pauser.pause(); <i class="conum" data-value="9"></i><b>(9)</b>
                }
            }
        } finally {
            lock.release();
        }
    }

    @Override
    public void close() {
        closed = true;
    }

    @Override
    public boolean isClosed() {
        return closed;
    }
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>This Pauser controls the back off strategy in which no events are coming through. It will retry once, yield 100 times, then start sleeping from half a millisecond to 10 milliseconds.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Obtain the type of the parameter for the <code>ServiceHandler</code> and in this case it is a <code>Service</code>.</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Create an output queue.</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>And pass it to the implementation so it can write to it&#8217;s output queue.</td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
<td>Create a reader for the input queue.</td>
</tr>
<tr>
<td><i class="conum" data-value="6"></i><b>6</b></td>
<td>Start a thread which will read from the <code>serviceIn</code> reader.</td>
</tr>
<tr>
<td><i class="conum" data-value="7"></i><b>7</b></td>
<td>Bind this thread to an isolated CPU where possible.</td>
</tr>
<tr>
<td><i class="conum" data-value="8"></i><b>8</b></td>
<td>Read and process one message.</td>
</tr>
<tr>
<td><i class="conum" data-value="9"></i><b>9</b></td>
<td><code>reset()</code> the pauser if a message came, otherwise call it for a possible pause.</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_timing_our_service">Timing our service.</h3>
<div class="paragraph">
<p>A simple service can time itself. This could be implmented as a wrapper, however for a more complex service you can use the builing in history recording and only examine the result at the end.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">class ServiceImpl implements Service, ServiceHandler&lt;Service&gt; {
    private final NanoSampler nanoSampler;
    private final NanoSampler endToEnd;
    private Service output;

    public ServiceImpl(NanoSampler nanoSampler) {
        this(nanoSampler, t -&gt; {
        });
    }

    public ServiceImpl(NanoSampler nanoSampler, NanoSampler endToEnd) {
        this.nanoSampler = nanoSampler;
        this.endToEnd = endToEnd;
    }

    @Override
    public void init(Service output) {
        this.output = output;
    }

    @Override
    public void simpleCall(SimpleData data) {
        data.number *= 10; // do something.

        long time = System.nanoTime();
        nanoSampler.sampleNanos(time - data.ts); <i class="conum" data-value="1"></i><b>(1)</b>
        data.ts = time; // the start time for the next stage.

        output.simpleCall(data); // pass the data to the next stage.

        endToEnd.sampleNanos(System.nanoTime() - data.ts0); <i class="conum" data-value="2"></i><b>(2)</b>
    }
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Take the timing since the last stage</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Take the timing from the start</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_using_jlbh_java_latency_benchamrk_harness">Using JLBH Java Latency Benchamrk Harness</h3>
<div class="paragraph">
<p>This tool is based on JMH (Java Microbenchmark Harness) where the main difference is support for testing asynchronous processes where you want to examine the timings at different stages, possibly in different theads.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">JLBHOptions jlbhOptions = new JLBHOptions()
        .warmUpIterations(50_000)
        .iterations(MESSAGE_COUNT)
        .throughput(THROUGHPUT) <i class="conum" data-value="1"></i><b>(1)</b>
        .runs(6)
        .recordOSJitter(true) <i class="conum" data-value="2"></i><b>(2)</b>
        .pauseAfterWarmupMS(500)
        .accountForCoordinatedOmmission(ACCOUNT_FOR_COORDINATED_OMMISSION) <i class="conum" data-value="3"></i><b>(3)</b>
        .jlbhTask(new MultiThreadedMainTask());
new JLBH(jlbhOptions).start();</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Benchmark for a target throughput.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Add a thread to record the OS jitter over the interval.</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Turn on correction for coordinated ommission.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>To set up the test, we create three services. This models a gateway which accepting data from external systems such as aweb service or FIX Engine.  This is picked up by one service, which passes a message to a second service and finally this is written to a gateway service which can pass the data to an external system.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">UUID uuid = UUID.randomUUID();
String queueIn = OS.TMP + "/MultiThreadedMain/" + uuid + "/pathIn";
String queue2 = OS.TMP + "/MultiThreadedMain/" + uuid + "/stage2";
String queue3 = OS.TMP + "/MultiThreadedMain/" + uuid + "/stage3";
String queueOut = OS.TMP + "/MultiThreadedMain/" + uuid + "/pathOut";

@Override
public void init(JLBH jlbh) {
    serviceIn = SingleChronicleQueueBuilder.binary(queueIn).build().createAppender().methodWriter(Service.class); <i class="conum" data-value="1"></i><b>(1)</b>
    service2 = new ServiceWrapper&lt;&gt;(queueIn, queue2, new ServiceImpl(jlbh.addProbe("Service 2"))); <i class="conum" data-value="2"></i><b>(2)</b>
    service3 = new ServiceWrapper&lt;&gt;(queue2, queue3, new ServiceImpl(jlbh.addProbe("Service 3"))); <i class="conum" data-value="3"></i><b>(3)</b>
    serviceOut = new ServiceWrapper&lt;&gt;(queue3, queueOut, new ServiceImpl(jlbh.addProbe("Service Out"), jlbh)); <i class="conum" data-value="4"></i><b>(4)</b> <i class="conum" data-value="5"></i><b>(5)</b>
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Just a writer</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Reads that message and writes to the third service</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Reads from the second service and writes to the outbound service.</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>The output gateway reads from the third service and writes its result to a log/queue.</td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
<td>The last service also sets the end to end timing.</td>
</tr>
</table>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Every message is being persisted at each stage and is available on restart. As there is one output message for every input pmessage you could restart by winding to the same index as the output. A more robust strategy would be to record te history in the output as covered in the previous post.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_running_the_tests">Running the tests</h3>
<div class="paragraph">
<p>There are two important considerations when running performance tests</p>
</div>
<div class="ulist">
<ul>
<li>
<p>what is the percentile that you care about?</p>
<div class="ulist">
<ul>
<li>
<p>Typical,</p>
</li>
<li>
<p>99%tile (worst 1 in 100)</p>
</li>
<li>
<p>99.9%tile (worst 1 in 1000)</p>
</li>
<li>
<p>99.99%tile ( worst 1 in 10000)</p>
</li>
<li>
<p>worst, ever</p>
</li>
</ul>
</div>
</li>
<li>
<p>what is the throughput you are looking to test.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>It is important that you control the throughput for the test so you can see how your system behaves at different sustained throuhgputs.  You system will run as fast as possible for short periods, however buffers and caches quickly fill up and cannot support this rate without getting large delays.</p>
</div>
</div>
<div class="sect2">
<h3 id="_looking_at_the_typical_performance">Looking at the typical performance.</h3>
<div class="paragraph">
<p>In this test on a E5-2650 v2, the throughput it can achieve for this test is 600,000 messages/second.  However, it wouldn&#8217;t be practical to do this for any long period of time as the system quickly gets to the point where it is behind with increasing delay the long this goes on.  This is because there is no head room to deal with any jitter or delay in the system. Every delay accumulates as the system struggle to keeps up. So what is a more practical throughput for this mock system.</p>
</div>
<div class="imageblock" style="text-align: center">
<div class="content">
<img src="https://vanilla-java.github.io/images/mtm-typical-vs-rate.png" alt="mtm typical vs rate">
</div>
<div class="title">Figure 1. Worst Typical was the highest of 15, 2 minute runs.</div>
</div>
<div class="paragraph">
<p>This looks fine, for all the throughputs up to 400,000 messages per second, the typical performance is consistent.  However, for a throughput of 450,000 messages per second, the service could get a delay which it would struggle to recover from and the typical latency would jump to 20 - 40 seconds.</p>
</div>
<div class="paragraph">
<p>In short, by looking at the typical performance our estimate of throughput we might prefer has dropped from 600K/s to 400K/s</p>
</div>
</div>
<div class="sect2">
<h3 id="_looking_at_the_nines">Looking at the nines.</h3>
<div class="paragraph">
<p>By looking at the higher percentiles (worst results) we can for a view as to what delays would be acceptable and how often.  Typically, I would consider a 99%tile which 4x the typical and a 99.9%tile which 10x the typical latency.  This is rule of thumb I use, however the results vary between systems.</p>
</div>
<div class="imageblock" style="text-align: center">
<div class="content">
<img src="https://vanilla-java.github.io/images/mtm-99-vs-rate.png" alt="mtm 99 vs rate">
</div>
<div class="title">Figure 2. The worst 1 in 100 gets higher as the throughput increases.</div>
</div>
<div class="paragraph">
<p>You might take the view that the 99%tile should be under 10 micro-seconds, and conclude the system can handle 300K messages/second.</p>
</div>
<div class="imageblock" style="text-align: center">
<div class="content">
<img src="https://vanilla-java.github.io/images/mtm-999-vs-rate.png" alt="mtm 999 vs rate">
</div>
<div class="title">Figure 3. The worst 1 in 1000 gets higher as the throughput increases.</div>
</div>
<div class="paragraph">
<p>Looking at the 99.9%tile you can see that above 200K msg/second our latencies shoot up.  Up to 200 K/s our system has very stable latencies.</p>
</div>
</div>
<div class="sect2">
<h3 id="_can_we_sustain_200_k_msg_second">Can we sustain 200 K msg/second?</h3>
<div class="paragraph">
<p>The problem arises that we will not want to sustain this rate for long.  Bursts are fine, but do this all day long and you generate a lot of data. If all the messages are recorded and they total say 1/2 KB for each inbound message, this will be producing 200 MB/s, and while an SSD can do this easily it will run out of space pretty fast. 200 MB/s is 9 TB per day. Nine TB of usable high performance SSD is still pretty pricy.</p>
</div>
<div class="paragraph">
<p>Lets say we wanted to record less than 2 TB per day.  A few high capacity HDD could persist all your messages for a week. This is 23 MB/s sustained. At 512 bytes per message (total) you are looking at a more modest 50K message/second sustained, but with burst of up to 200K/s - 600K/s depending on your requirements.</p>
</div>
</div>
<div class="sect2">
<h3 id="_in_summary">In summary</h3>
<div class="paragraph">
<p>We have a test harness for multi-threaded asynchronous processes and it can help you explore how your service might behave under various throughput loads.  While your system might be able to support high throughputs for very short periods of time, how sustained throughput impacts the latency of your system.</p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/04/02/Microservices-in-the-Chronicle-World-Part-5.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/04/02/Microservices-in-the-Chronicle-World-Part-5.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[latency profile]]></category><category><![CDATA[JLBH]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Sat, 02 Apr 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Microservices in the Chronicle world - Part 4]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>A common issue we cover in our workshops is, <em>how to restart a queue reader after a failure.</em></p>
</div>
<div class="paragraph">
<p>The answer is not a simple as you might think.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
We do an on-site one week workshop to help kick start a new project, with a look at ensuring the infrastructure has a good balance of speed and simplicity.  Often, simplicity is the most important and it will also be fast enough. You can contact <a href="mailto:sales@chronicle.software">Chronicle Software Sales</a> for more details.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_knowing_when_a_message_should_be_replayed_on_startup">Knowing when a message should be replayed on startup.</h3>
<div class="paragraph">
<p>It&#8217;s not enough to know which messages have been played.  You need to know which messages were completed successfully in a transaction. This assumes you must have each message processed exactly once. Simpler alternatives are:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Play every message again and ignore duplicates.</p>
</li>
<li>
<p>Play every message from the end (or the last <em>N</em> minutes) and assume anything older than that has expired.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>When updating a database, one way to achieve this is to update the index read in a row in the database, this way either:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>The transaction succeeds and the message doesn&#8217;t need to be played again.</p>
</li>
<li>
<p>The transaction fails and the message does need to be played again.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The important detail is that there is no situation where it is unclear whether the input message should be replayed.</p>
</div>
</div>
<div class="sect2">
<h3 id="_restarting_a_reader_when_writing_to_a_queue_as_output">Restarting a reader when writing to a queue as output.</h3>
<div class="paragraph">
<p>In general, we suggest you write your results to an output queue.  An output queue can be a replacement for logging and a means of monitoring, but can also record where each event came from.
In particular, and output queue can help:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Replay messages in the same order, which were sourced from multiple input queue.</p>
</li>
<li>
<p>Ensure that after an upgrade of your software, you honour the decisions you made earlier. i.e. new software replaying the input message might make different decisions. By reading from the output, you ensure that after an upgrade you know what state you should be in.</p>
</li>
<li>
<p>Restart an input queue from the last message successfully outputed for an input from that queue.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>In this example, it reads just one unprocessed message.</p>
</div>
<div class="listingblock">
<div class="title">Read one message which hasn&#8217;t been processed.</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">try (SingleChronicleQueue in = SingleChronicleQueueBuilder.binary(queuePath)
        .sourceId(1) <i class="conum" data-value="1"></i><b>(1)</b>
        .build();
     SingleChronicleQueue out = SingleChronicleQueueBuilder.binary(queuePath2)
             .rollCycle(RollCycles.TEST_DAILY)
             .build()) {

    MarketDataListener mdListener = out.createAppender()
            .methodWriterBuilder(MarketDataListener.class)
            .recordHistory(true) <i class="conum" data-value="2"></i><b>(2)</b>
            .get();
    SidedMarketDataCombiner combiner = new SidedMarketDataCombiner(mdListener);
    MethodReader reader = in.createTailer()
            .afterLastWritten(out) <i class="conum" data-value="3"></i><b>(3)</b>
            .methodReader(combiner);
    assertTrue(reader.readOne());
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Give the queue a unique id for tracing purposes.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Write a history for timings and sources for each message processed.</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Read the output queue to see what the last message processed was.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>It would be really inefficient to do all this every time. The only line which is required for each message is</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">reader.readOne();</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_conclusion">Conclusion</h3>
<div class="paragraph">
<p>While there is a number of ways you could implement restart, if you need it, it is useful to have built-in support for one of the most common ways to do this.</p>
</div>
</div>
<div class="sect2">
<h3 id="_in_the_next_part">In the next part.</h3>
<div class="paragraph">
<p><a href="https://vanilla-java.github.io/2016/04/02/Microservices-in-the-Chronicle-World-Part-5.html">How does this perform end to end with multiple asynchronous services are how can we measure there?</a></p>
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/03/29/Microservices-in-the-Chronicle-world-Part-4.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/03/29/Microservices-in-the-Chronicle-world-Part-4.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Restarting]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Tue, 29 Mar 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Microservices in the Chronicle World - Part 3]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>One of the problems with using microservices is performance.  <strong>Latencies</strong> can be higher due to the cost of <strong>serialization</strong>, messaging and deserialization, and this reduces <strong>throughput</strong>.  In particular, poor throughput is a problem because the reason we are designing a <a href="http://searchdatacenter.techtarget.com/definition/scalability">scalable system</a><sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnote_1" title="View footnote.">1</a>]</sup> is to increase throughput.</p>
</div>
<div class="paragraph">
<p>In <a href="https://vanilla-java.github.io/2016/03/24/Microservices-in-the-Chronicle-world-Part-2.html">Part 2</a> we saw how we can take a component and add a transport to it to make it a service.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
Passing data between threads is not free. This information needs to be passed over the L2 CPU Cache Coherence bus. If you do this in an uncontrolled manner and just let the application discover the objects it needs to pull from one thread&#8217;s cache to its own, it can be slower than only passing the data you need, streamed serially. Chronicle Queue gives greater transparency by recording every event, allowing you to optmise exactly what one thread passes to another.
</td>
</tr>
</table>
</div>
<div class="admonitionblock important">
<table>
<tr>
<td class="icon">
<i class="fa icon-important" title="Important"></i>
</td>
<td class="content">
In one low latency trading system, before adding Chronicle Queue, the average latency from read in to write out was 35 micro-seconds, after utilising Chronicle Queue to optimie the data passed between threads the latency dropped to 23 micro-seconds. Using Chronicle Queue also showed up issues which were not apparent before, and with replay of events, gave confidence these issues had been fixed.
</td>
</tr>
</table>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_benchmarking_with_jmh">Benchmarking with JMH</h3>
<div class="paragraph">
<p><a href="http://openjdk.java.net/projects/code-tools/jmh/">JMH</a><sup class="footnote">[<a id="_footnoteref_2" class="footnote" href="#_footnote_2" title="View footnote.">2</a>]</sup>(Java Micro-benchmark Harness) is an excellent tool for measuring the throughput and sampling latencies end to end.  We can look at an example of what it is good for with regard to our sample microservice.</p>
</div>
<div class="paragraph">
<p>We create our own micro-benchmark harness, in Chronicle-Core, for measuring asynchronmos tasks run across multiple threads where you want to time individual portions (which will be covered in Part 4). For now we will look at latencies end-to-end.</p>
</div>
</div>
<div class="sect2">
<h3 id="_jmh_latency_test_of_our_service">JMH latency test of our service</h3>
<div class="paragraph">
<p>With JMH we can measure timings for the end to end benchmark. We have to include a producer to drive the test rather than time a service standalone. We are looking at the single threaded timings.</p>
</div>
<div class="listingblock">
<div class="title">Our JMH benchmark</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">@Setup
public void setup() {
    String target = OS.TMP;
    upQueuePath = new File(target, "ComponentsBenchmark-up-" + System.nanoTime());
    upQueue = SingleChronicleQueueBuilder.binary(upQueuePath).build(); <i class="conum" data-value="1"></i><b>(1)</b>
    smdWriter = upQueue.createAppender().methodWriter(SidedMarketDataListener.class);  <i class="conum" data-value="2"></i><b>(2)</b>

    downQueuePath = new File(target, "ComponentsBenchmark-down-" + System.nanoTime());
    downQueue = SingleChronicleQueueBuilder.binary(downQueuePath).build();  <i class="conum" data-value="3"></i><b>(3)</b>
    MarketDataListener mdWriter = downQueue.createAppender().methodWriter(MarketDataListener.class); <i class="conum" data-value="4"></i><b>(4)</b>

    SidedMarketDataCombiner combiner = new SidedMarketDataCombiner(mdWriter); <i class="conum" data-value="5"></i><b>(5)</b>

    reader = upQueue.createTailer().methodReader(combiner); <i class="conum" data-value="6"></i><b>(6)</b>
    System.out.println("up-q " + upQueuePath);
}

@TearDown
public void tearDown() {
    upQueue.close();
    downQueue.close();
    IOTools.shallowDeleteDirWithFiles(upQueuePath);
    IOTools.shallowDeleteDirWithFiles(downQueuePath);
}

@Benchmark
public void benchmarkComponents() {
    switch (counter++ &amp; 3) {
        case 0:
            smdWriter.onSidedPrice(sidedPrice.init("EURUSD", 123456789000L, Side.Sell, 1.1172, 1e6));
            break;
        case 1:
            smdWriter.onSidedPrice(sidedPrice.init("EURUSD", 123456789100L, Side.Buy, 1.1160, 1e6));
            break;
        case 2:
            smdWriter.onSidedPrice(sidedPrice.init("EURUSD", 123456789000L, Side.Sell, 1.1172, 2e6));
            break;
        case 3:
            smdWriter.onSidedPrice(sidedPrice.init("EURUSD", 123456789100L, Side.Buy, 1.1160, 2e6));
            break;
    }
    assertTrue(reader.readOne()); <i class="conum" data-value="7"></i><b>(7)</b>
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Create an upstream queue.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Create a proxy which writes all methods calls to the upstream queue.</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>Create a downstream queue.</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>Create a proxy for the downstream queue.</td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
<td>Create the component which will write all outputs to the downstream queue.</td>
</tr>
<tr>
<td><i class="conum" data-value="6"></i><b>6</b></td>
<td>Create a reader for the upstream queue which will call the combiner.</td>
</tr>
<tr>
<td><i class="conum" data-value="7"></i><b>7</b></td>
<td>After writing a message to the queue, read it and call the appropriate method in the component.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The first portion sets up and tears down the test.  The actual benchmark injects a message which when read and processed will trigger an output message.</p>
</div>
<div class="listingblock">
<div class="title">Running the tests in JMH</div>
<div class="content">
<pre>  Percentiles, us/op:
      p(0.0000) =      2.552 us/op
     p(50.0000) =      2.796 us/op
     p(90.0000) =      5.600 us/op
     p(95.0000) =      5.720 us/op
     p(99.0000) =      8.496 us/op <i class="conum" data-value="1"></i><b>(1)</b>
     p(99.9000) =     15.232 us/op <i class="conum" data-value="1"></i><b>(1)</b>
     p(99.9900) =     19.977 us/op <i class="conum" data-value="2"></i><b>(2)</b>
     p(99.9990) =    422.475 us/op
     p(99.9999) =    438.784 us/op
    p(100.0000) =    438.784 us/op</pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Critical latency threashold for many systems.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Can still be important in some systems.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>This is running on my development machine (Ubuntu 15.04, two E5-2650 v2, 128 GB memory).  For better results, I suggest the latest Haswell or Skylake and Centos.  The exact timing of this benchmark isn&#8217;t important as the number and type of fields in the message is also a significant factor.  What is particularly interesting to me is the 99.9%tile latency (worst 1 in 1000) which is consistently under 20 mciro-seconds in this example.  This demonstrates both high performance and consistently fast latencies.</p>
</div>
</div>
<div class="sect2">
<h3 id="_looking_at_how_jmh_is_called">Looking at how JMH is called.</h3>
<div class="paragraph">
<p>To control how JMH is run the following parameters were used:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">int time = Boolean.getBoolean("longTest") ? 30 : 3;
System.out.println("measurementTime: " + time + " secs");
Options opt = new OptionsBuilder()
        .include(ComponentsBenchmark.class.getSimpleName())
        .warmupIterations(8)
        .forks(1)
        .mode(Mode.SampleTime) <i class="conum" data-value="1"></i><b>(1)</b>
        .measurementTime(TimeValue.seconds(time))
        .timeUnit(TimeUnit.MICROSECONDS)
        .build();

new Runner(opt).run();</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td><code>SampleTime</code> mode to test latencies rather than throughput.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>However, I have had trouble profiling and debugging JMH benchmarks so I change the way the test is run depending on how it is started:</p>
</div>
<div class="listingblock">
<div class="title">Running in Flight Recorder and Debug</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">if (Jvm.isFlightRecorder()) {
    // -verbose:gc -XX:+UnlockCommercialFeatures -XX:+FlightRecorder
    // -XX:StartFlightRecording=dumponexit=true,filename=myrecording.jfr,settings=profile
    // -XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints <i class="conum" data-value="2"></i><b>(2)</b>
    System.out.println("Detected Flight Recorder");
    main.setup();
    long start = System.currentTimeMillis();
    while (start + 60e3 &gt; System.currentTimeMillis()) { <i class="conum" data-value="1"></i><b>(1)</b>
        for (int i = 0; i &lt; 1000; i++)
            main.benchmarkComponents();
    }
    main.tearDown();

} else if (Jvm.isDebug()) {
    for (int i = 0; i &lt; 10; i++) {
        runAll(main, Setup.class);
        runAll(main, Benchmark.class);
        runAll(main, TearDown.class);
    }</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Run for 1 minute before shutting down.</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Enable profiling between safepoints.</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_in_our_next_part">In our next part</h3>
<div class="paragraph">
<p><a href="https://vanilla-java.github.io/2016/03/29/Microservices-in-the-Chronicle-world-Part-4.html">Part 4: How can we time just the component running in another thread</a>. In particular see how long it takes to read, process and write each message with individual timings.</p>
</div>
</div>
<div class="sect1">
<h2 id="_glossary">Glossary</h2>
<div class="sectionbody">
<div class="paragraph">
<p><strong>Latency</strong>- The time an individual operation takes. <a href="http://www.webopedia.com/TERM/L/latency.html">"Together, latency and bandwidth define the speed and capacity of a network."</a><sup class="footnote">[<a id="_footnoteref_3" class="footnote" href="#_footnote_3" title="View footnote.">3</a>]</sup></p>
</div>
<div class="paragraph">
<p><strong>Serialization</strong>- <a href="https://en.wikipedia.org/wiki/Serialization">"The process of translating data structures or object state into a format that can be stored"</a><sup class="footnote">[<a id="_footnoteref_4" class="footnote" href="#_footnote_4" title="View footnote.">4</a>]</sup><em>See also</em> <strong>Serialization libraries</strong>- The process that translates data into a format that can be consumed by another system.</p>
</div>
<div class="paragraph">
<p><strong>Throughput</strong>- The rate of data or messages transferred which is processed in a certain amount of time. This rate is written in terms of throughput, e.g a road could have a throughput of 10 cars per minute.</p>
</div>
</div>
</div>
<div id="footnotes">
<hr>
<div class="footnote" id="_footnote_1">
<a href="#_footnoteref_1">1</a>. Rouse, M. (2016). What is scalability? - Definition from WhatIs.com. Online. SearchDataCenter. Available at: <a href="http://searchdatacenter.techtarget.com/definition/scalability" class="bare">http://searchdatacenter.techtarget.com/definition/scalability</a> [Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_2">
<a href="#_footnoteref_2">2</a>. Openjdk.(2016). OpenJDK: jmh. Online. Available at: <a href="http://openjdk.java.net/projects/code-tools/jmh/" class="bare">http://openjdk.java.net/projects/code-tools/jmh/</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_3">
<a href="#_footnoteref_3">3</a>. Webopedia.com. (2016). What is Latency? Webopedia Definition. Online. Available at: <a href="http://www.webopedia.com/TERM/L/latency.html" class="bare">http://www.webopedia.com/TERM/L/latency.html</a>. Accessed Jul. 2016
</div>
<div class="footnote" id="_footnote_4">
<a href="#_footnoteref_4">4</a>. Wikipedia. (2016). Serialization. Online. Available at: <a href="https://en.wikipedia.org/wiki/Serialization" class="bare">https://en.wikipedia.org/wiki/Serialization</a>. Accessed Jul. 2016.
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/03/26/Microservices-in-the-Chronicle-World-Part-3.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/03/26/Microservices-in-the-Chronicle-World-Part-3.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[JMH]]></category><category><![CDATA[Chronicle-Queue]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Sat, 26 Mar 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Microservices in the Chronicle world - Part 2]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>In this part we look at turning a component into a service.</p>
</div>
<div class="paragraph">
<p>In <a href="https://vanilla-java.github.io/2016/03/23/Microservices-in-the-Chronicle-world-Part-1.html">Part 1</a>, we looked at how we can easily create and test components which expect <a href="http://www.webopedia.com/TERM/A/asynchronous_messaging.html">asynchronous messages</a><sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnote_1" title="View footnote.">1</a>]</sup> in and produce asynchronous messages out.  However, how do we turn this into a <strong>service</strong>?</p>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_turning_our_components_into_a_service">Turning our components into a service.</h3>
<div class="paragraph">
<p>The key thing which is missing from our components is a <strong>transport</strong>.  A lack of a transport simplifies testing, profiling and debugging, but we need to distribute our components, and for this we need a transport.</p>
</div>
<div class="paragraph">
<p>There is a wide range of possible transports available:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="http://chronicle.software/products/chronicle-queue/">Chronicle Queue</a></p>
</li>
<li>
<p>Raw TCP messages or UDP packets with a library like <a href="http://netty.io/">Netty</a><sup class="footnote">[<a id="_footnoteref_2" class="footnote" href="#_footnote_2" title="View footnote.">2</a>]</sup></p>
</li>
<li>
<p><a href="https://docs.oracle.com/javaee/6/tutorial/doc/bnceh.html">JMS Messaging</a><sup class="footnote">[<a id="_footnoteref_3" class="footnote" href="#_footnote_3" title="View footnote.">3</a>]</sup></p>
</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/Java_API_for_RESTful_Web_Services">REST API</a><sup class="footnote">[<a id="_footnoteref_4" class="footnote" href="#_footnote_4" title="View footnote.">4</a>]</sup></p>
</li>
<li>
<p>Database tables via <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/">JDBC</a><sup class="footnote">[<a id="_footnoteref_5" class="footnote" href="#_footnote_5" title="View footnote.">5</a>]</sup></p>
</li>
<li>
<p>Files dropped into a directory and use the directory <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/file/WatchService.html">WatchService</a><sup class="footnote">[<a id="_footnoteref_6" class="footnote" href="#_footnote_6" title="View footnote.">6</a>]</sup></p>
</li>
<li>
<p>a thread safe Queue, like <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html">BlockingQueue</a></p>
</li>
<li>
<p><a href="https://en.wikipedia.org/wiki/Shared_memory">shared memory</a><sup class="footnote">[<a id="_footnoteref_7" class="footnote" href="#_footnote_7" title="View footnote.">7</a>]</sup></p>
</li>
<li>
<p><a href="http://aries.apache.org/">Apache Aries</a><sup class="footnote">[<a id="_footnoteref_8" class="footnote" href="#_footnote_8" title="View footnote.">8</a>]</sup> for pluggable transports</p>
</li>
<li>
<p>no transport at all (method calls are fine for a given use case)</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>It is the Chronicle Queue we will be looking at in the post.</p>
</div>
</div>
<div class="sect2">
<h3 id="_using_queue_in_a_unit_test">Using queue in a unit test</h3>
<div class="paragraph">
<p>Chronicle Queue is persisted, however in unit tests you usually want to start fresh and remove the queue afterwards.  The <strong>idiom</strong> you can use is as follows;</p>
</div>
<div class="listingblock">
<div class="title">Creating a temporary Queue</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">File queuePath = new File(OS.TARGET, "testName-" + System.nanoTime());
try {
    try (SingleChronicleQueue queue = SingleChronicleQueueBuilder.binary(queuePath).build()) {
        // use the queue
    }

} finally {
    IOTools.shallowDeleteDirWithFiles(queuePath);
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>This creates a queue which is stored in a single file.  The file is rolled daily by default and includes the current date in the path.</p>
</div>
<div class="sect3">
<h4 id="_writing_events">Writing events</h4>
<div class="paragraph">
<p>If we repeat our test as before, instead of using a <strong>mock listener</strong>, we can use a listener which writes each method called to a queue:</p>
</div>
<div class="listingblock">
<div class="title">Write methods called to a queue for either interface</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">OrderIdeaListener orderManager = queue.createAppender()
                                      .methodWriter(OrderIdeaListener.class, MarketDataListener.class);</code></pre>
</div>
</div>
<div class="paragraph">
<p>Our combiner writes to this queue, as does our test:</p>
</div>
<div class="listingblock">
<div class="title">The SidedPrice combiner</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">SidedMarketDataCombiner combiner = new SidedMarketDataCombiner((MarketDataListener) orderManager);</code></pre>
</div>
</div>
<div class="paragraph">
<p>We can also repeat the events inbound.  Putting all this together we get:</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">try (SingleChronicleQueue queue = SingleChronicleQueueBuilder.binary(queuePath).build()) {
    OrderIdeaListener orderManager = queue.createAppender().methodWriter(OrderIdeaListener.class, MarketDataListener.class);
    SidedMarketDataCombiner combiner = new SidedMarketDataCombiner((MarketDataListener) orderManager);

    // events in
    orderManager.onOrderIdea(new OrderIdea("EURUSD", Side.Buy, 1.1180, 2e6)); // not expected to trigger

    combiner.onSidedPrice(new SidedPrice("EURUSD", 123456789000L, Side.Sell, 1.1172, 2e6));
    combiner.onSidedPrice(new SidedPrice("EURUSD", 123456789100L, Side.Buy, 1.1160, 2e6));

    combiner.onSidedPrice(new SidedPrice("EURUSD", 123456789100L, Side.Buy, 1.1167, 2e6));

    orderManager.onOrderIdea(new OrderIdea("EURUSD", Side.Buy, 1.1165, 1e6)); // expected to trigger
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>Once we have written all the events to our queue, we can process the queue in our test. A more realistic example would be to run these two components in different threads, processes or on different machines, however this just complicates the tests and the result should be the same provided the transport does it&#8217;s job.</p>
</div>
</div>
<div class="sect3">
<h4 id="_reading_events">Reading events.</h4>
<div class="paragraph">
<p>When we read the events we need a component which implements the methods called above and a mock listener to ensure it triggers the right events.</p>
</div>
<div class="listingblock">
<div class="title">Read all the events and check the right output</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">// what we expect to happen
OrderListener listener = createMock(OrderListener.class);
listener.onOrder(new Order("EURUSD", Side.Buy, 1.1167, 1_000_000));
replay(listener);

try (SingleChronicleQueue queue = SingleChronicleQueueBuilder.binary(queuePath).build()) {
    // build our scenario
    OrderManager orderManager = new OrderManager(listener); <i class="conum" data-value="1"></i><b>(1)</b>
    MethodReader reader = queue.createTailer().methodReader(orderManager); <i class="conum" data-value="2"></i><b>(2)</b>
    for (int i = 0; i &lt; 5; i++)
        assertTrue(reader.readOne()); <i class="conum" data-value="3"></i><b>(3)</b>

    assertFalse(reader.readOne()); <i class="conum" data-value="4"></i><b>(4)</b>
    System.out.println(queue.dump()); <i class="conum" data-value="5"></i><b>(5)</b>
}

verify(listener);</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>our component to test</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>our queue reader which will call the methods</td>
</tr>
<tr>
<td><i class="conum" data-value="3"></i><b>3</b></td>
<td>loop to read/process one method at a time.</td>
</tr>
<tr>
<td><i class="conum" data-value="4"></i><b>4</b></td>
<td>we have no more messages</td>
</tr>
<tr>
<td><i class="conum" data-value="5"></i><b>5</b></td>
<td>dump the queue contents so we can see what the input was.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Finally, the test dumps the raw contents of the queue. This reads the data stored in the file that queue uses.  This dump is only useful for smaller queue with a few MB of data. If you have a few GB, it won&#8217;t be able to be stored in a String.  You can use <a href="https://github.com/OpenHFT/Chronicle-Queue/blob/master/src/main/java/net/openhft/chronicle/queue/DumpQueueMain.java">DumpQueueMain</a> f</p>
</div>
<div class="listingblock">
<div class="title">The output of dump()</div>
<div class="content">
<pre class="highlight"><code class="language-yaml" data-lang="yaml">--- !!meta-data #binary
header: !SCQStore {
  wireType: !WireType BINARY,
  writePosition: 777,
  roll: !SCQSRoll {
    length: 86400000,
    format: yyyyMMdd,
    epoch: 0
    },
  indexing: !SCQSIndexing {
    indexCount: !int 8192,
    indexSpacing: 64,
    index2Index: 0,
    lastIndex: 0
    }
}
# position: 227
--- !!data #binary
onOrderIdea: {
  symbol: EURUSD,
  side: Buy,
  limitPrice: 1.118,
  quantity: 2000000.0
}
# position: 306
--- !!data #binary
onTopOfBookPrice: {
  symbol: EURUSD,
  timestamp: 123456789000,
  buyPrice: NaN,
  buyQuantity: 0,
  sellPrice: 1.1172,
  sellQuantity: 2000000.0
}
# position: 434
--- !!data #binary
onTopOfBookPrice: {
  symbol: EURUSD,
  timestamp: 123456789100,
  buyPrice: 1.116,
  buyQuantity: 2000000.0,
  sellPrice: 1.1172,
  sellQuantity: 2000000.0
}
# position: 566
--- !!data #binary
onTopOfBookPrice: {
  symbol: EURUSD,
  timestamp: 123456789100,
  buyPrice: 1.1167,
  buyQuantity: 2000000.0,
  sellPrice: 1.1172,
  sellQuantity: 2000000.0
}
# position: 698
--- !!data #binary
onOrderIdea: {
  symbol: EURUSD,
  side: Buy,
  limitPrice: 1.1165,
  quantity: 1000000.0
}
...
# 83885299 bytes remaining</code></pre>
</div>
</div>
<div class="paragraph">
<p>To run the test and dump the queue in my IDE took 233 ms.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_conclusion">Conclusion</h2>
<div class="sectionbody">
<div class="paragraph">
<p>We can test components stand alone with a queue or in a chain by using more queues. More importantly we can test our components without the infrastructure complicating the debugging process.  When our components work without a transport, we can show they do the same thing with a transport.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_in_our_next_part">In our next part</h2>
<div class="sectionbody">
<div class="paragraph">
<p><a href="https://vanilla-java.github.io/2016/03/26/Microservices-in-the-Chronicle-World-Part-3.html">In part 3, we will look at benchmarking and profiling with Queue</a>.  While Queue is designed to be simple and transparent, it is also designed to be faster than other persisted transports, even with no tuning.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_glossary">Glossary</h2>
<div class="sectionbody">
<div class="paragraph">
<p><strong>Idiom</strong>- "A means of expressing a recurring construct in one or more programming languages."<sup class="footnote">[<a id="_footnoteref_9" class="footnote" href="#_footnote_9" title="View footnote.">9</a>]</sup></p>
</div>
<div class="paragraph">
<p><strong>Mock listener</strong>- Method call/messages can be sent to a mock listener. This acts as a pretend Object for the purposes of testing in order to see that would happen to a Concrete Object.</p>
</div>
<div class="paragraph">
<p><strong>Service</strong>- A program that is available to other programs to run and make use of.</p>
</div>
<div class="paragraph">
<p><strong>Transport</strong>- A program or hardware that takes data from ome process to another.e.g <a href="http://www.webopedia.com/TERM/M/middleware.html">Middleware</a><sup class="footnote">[<a id="_footnoteref_10" class="footnote" href="#_footnote_10" title="View footnote.">10</a>]</sup>// = Your Blog title</p>
</div>
</div>
</div>
<div id="footnotes">
<hr>
<div class="footnote" id="_footnote_1">
<a href="#_footnoteref_1">1</a>. Beal, V. (2016). What is asynchronous messaging? Webopedia Definition. Online. Webopedia.com. Available at: <a href="http://www.webopedia.com/TERM/A/asynchronous_messaging.html" class="bare">http://www.webopedia.com/TERM/A/asynchronous_messaging.html</a>. Accessed Jul. 2016
</div>
<div class="footnote" id="_footnote_2">
<a href="#_footnoteref_2">2</a>. Netty.io. (2016). Netty: Home. Online. Available at: <a href="http://netty.io/" class="bare">http://netty.io/</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_3">
<a href="#_footnoteref_3">3</a>. Oracle (2013). The JMS API Programming Model - The Java EE 6 Tutorial. Online. Available at: <a href="https://docs.oracle.com/javaee/6/tutorial/doc/bnceh.html" class="bare">https://docs.oracle.com/javaee/6/tutorial/doc/bnceh.html</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_4">
<a href="#_footnoteref_4">4</a>. Wikipedia. (2016). Java API for RESTful Web Services. Online. Available at: <a href="https://en.wikipedia.org/wiki/Java_API_for_RESTful_Web_Services" class="bare">https://en.wikipedia.org/wiki/Java_API_for_RESTful_Web_Services</a>. Accessed  Mar. 2016
</div>
<div class="footnote" id="_footnote_5">
<a href="#_footnoteref_5">5</a>. Docs.oracle.c(2016). Java JDBC API. Online. Available at: <a href="https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/" class="bare">https://docs.oracle.com/javase/8/docs/technotes/guides/jdbc/</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_6">
<a href="#_footnoteref_6">6</a>. Oracle (2016). WatchService (Java Platform SE 8 ). Online. Available at: <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/file/WatchService.html.Accessed" class="bare">https://docs.oracle.com/javase/8/docs/api/java/nio/file/WatchService.html.Accessed</a> 23 Mar. 2016
</div>
<div class="footnote" id="_footnote_7">
<a href="#_footnoteref_7">7</a>. Oracle (2016). BlockingQueue (Java Platform SE 8 ). Online. Available at: <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html" class="bare">https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html</a> Accessed 23 Mar. 2016
</div>
<div class="footnote" id="_footnote_8">
<a href="#_footnoteref_8">8</a>. Apache Aries. (2016). Apache Aries - Index. Online. Available at: <a href="http://aries.apache.org/" class="bare">http://aries.apache.org/</a>. Accessed 23 Mar. 2016
</div>
<div class="footnote" id="_footnote_9">
<a href="#_footnoteref_9">9</a>. Wikipedia. (2016). Programming idiom. Online. Available at: <a href="https://en.wikipedia.org/wiki/Programming_idiom" class="bare">https://en.wikipedia.org/wiki/Programming_idiom</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_10">
<a href="#_footnoteref_10">10</a>. Beal, V. (2016). What is Middleware? Webopedia Definition. Online. Webopedia.com. Available at: <a href="http://www.webopedia.com/TERM/M/middleware.html" class="bare">http://www.webopedia.com/TERM/M/middleware.html</a>. Accessed Jul. 2016
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/03/24/Microservices-in-the-Chronicle-world-Part-2.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/03/24/Microservices-in-the-Chronicle-world-Part-2.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[Chronicle-Queue]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Thu, 24 Mar 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Microservices in the Chronicle world - Part 1]]></title><description><![CDATA[<div id="preamble">
<div class="sectionbody">
<div class="paragraph">
<p>At a high level, different <strong>Microservice</strong> strategies have a lot in common.  They subscribe to the same ideals.
When it comes to the details of how they are actually implemented, they can vary.</p>
</div>
<div class="paragraph">
<p>Microservices in the Chronicle world are designed around:</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Simplicity- simple is fast, flexable and easier to maintain.</p>
</li>
<li>
<p>Transparency- you can&#8217;t control what you don&#8217;t understand.</p>
</li>
<li>
<p>Reproduceablity- this must be in your design to ensure a quality solution.</p>
</li>
</ul>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_what_do_we_mean_by_simple">What do we mean by simple?</h3>
<div class="paragraph">
<p>A key part of the microservices design is how messages are passed between services/components. The simplest messages could be called <em>asynchronous method calls</em>.</p>
</div>
<div class="paragraph">
<p>An asynchronous method call is one which;</p>
</div>
<div class="ulist">
<ul>
<li>
<p>doesn&#8217;t return anything,</p>
</li>
<li>
<p>doesn&#8217;t alter it&#8217;s arguments;</p>
</li>
<li>
<p>doesn&#8217;t throw any exceptions (although the underlying transport could).</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>The reason this approach is used, is that the simplest transport is no transport at all.  One component calls another.  This is not only fast ( and with inlining might not take any time at all), but it is simple to setup, debug and profile.  For most unit tests you don&#8217;t need a real transport so there is no advantage in making the test more complicated than it needs to be.</p>
</div>
</div>
<div class="sect2">
<h3 id="_let_s_look_at_an_example">Let&#8217;s look at an example.</h3>
<div class="paragraph">
<p>Say we have a service/component which is taking incremental market data updates. In the simplest case, this could be a market update with only one side, a buy or a sell.  The component could transform this into a full market update combining both the buy and sell price and quantity.</p>
</div>
<div class="paragraph">
<p>In this example, we have only one message type to start with, however we can add more message types. I suggest you create a different message name/method for each message rather than overloading a method.</p>
</div>
<div class="listingblock">
<div class="title">Our inbound data structure</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class SidedPrice extends AbstractMarshallable {
    final String symbol;
    final long timestamp;
    final Side side;
    final double price, quantity;

    public SidedPrice(String symbol, long timestamp, Side side, double price, double quantity) {
        this.symbol = symbol;
        this.timestamp = timestamp;
        this.side = side;
        this.price = price;
        this.quantity = quantity;
    }
}</code></pre>
</div>
</div>
<div class="listingblock">
<div class="title">Our outbound data structure</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class TopOfBookPrice extends AbstractMarshallable {
    final String symbol;
    final long timestamp;
    final double buyPrice, buyQuantity;
    final double sellPrice, sellQuantity;

    public TopOfBookPrice(String symbol, long timestamp, double buyPrice, double buyQuantity, double sellPrice, double sellQuantity) {
        this.symbol = symbol;
        this.timestamp = timestamp;
        this.buyPrice = buyPrice;
        this.buyQuantity = buyQuantity;
        this.sellPrice = sellPrice;
        this.sellQuantity = sellQuantity;
    }

    // more methods <i class="conum" data-value="1"></i><b>(1)</b>
}</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>For the complete code <a href="https://github.com/Vanilla-Java/Microservices/blob/master/src/main/java/net/openhft/samples/microservices/orders/TopOfBookPrice.java">TopOfBookPrice.java</a>.</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>The component which takes one sided prices could have an interface;</p>
</div>
<div class="listingblock">
<div class="title">Inbound interface for the first component</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public interface SidedMarketDataListener {
    void onSidedPrice(SidedPrice sidedPrice);
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>and it&#8217;s output also has one method;</p>
</div>
<div class="listingblock">
<div class="title">Outbound interface for the first component</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public interface MarketDataListener {
    void onTopOfBookPrice(TopOfBookPrice price);
}</code></pre>
</div>
</div>
</div>
<div class="sect2">
<h3 id="_what_does_our_microservice_look_like">What does our microservice look like?</h3>
<div class="paragraph">
<p>At a high level, the combiner is very simple;</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">public class SidedMarketDataCombiner implements SidedMarketDataListener {
    final MarketDataListener mdListener;
    final Map&lt;String, TopOfBookPrice&gt; priceMap = new TreeMap&lt;&gt;();

    public SidedMarketDataCombiner(MarketDataListener mdListener) {
        this.mdListener = mdListener;
    }

    public void onSidedPrice(SidedPrice sidedPrice) {
        TopOfBookPrice price = priceMap.computeIfAbsent(sidedPrice.symbol, TopOfBookPrice::new);
        if (price.combine(sidedPrice))
            mdListener.onTopOfBookPrice(price);
    }
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>It implements our input interface and takes the output interface as a listener.</p>
</div>
</div>
<div class="sect2">
<h3 id="_what_does_abstractmarshallable_provide">What does AbstractMarshallable provide?</h3>
<div class="paragraph">
<p>The <a href="https://github.com/OpenHFT/Chronicle-Wire/blob/master/src/main/java/net/openhft/chronicle/wire/AbstractMarshallable.java">AbstractMarshallable</a> class is a convenience class which implements <code>toString()</code>, <code>equals(Object)</code> and <code>hashCode()</code>. It also supports Marshallable&#8217;s <code>writeMarshallable(WireOut)</code> and <code>readMarshallable(WireIn)</code>.</p>
</div>
<div class="paragraph">
<p>The default implementations use all the non-static non-transient fields to either print, compare or build a hashCode.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
the resulting toString() can always be <strong>de-serialized</strong> with <code>Marshallable.fromString(CharSequence)</code>.
</td>
</tr>
</table>
</div>
<div class="paragraph">
<p>Let&#8217;s look at a couple of examples.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">SidedPrice sp = new SidedPrice("Symbol", 123456789000L, Side.Buy, 1.2345, 1_000_000);
assertEquals("!SidedPrice {\n" +
        "  symbol: Symbol,\n" +
        "  timestamp: 123456789000,\n" +
        "  side: Buy,\n" +
        "  price: 1.2345,\n" +
        "  quantity: 1000000.0\n" +
        "}\n", sp.toString());

// from string
SidedPrice sp2 = Marshallable.fromString(sp.toString());
assertEquals(sp2, sp);
assertEquals(sp2.hashCode(), sp.hashCode());</code></pre>
</div>
</div>
<div class="paragraph">
<p>As you can see, the <code>toString()</code> is in <a href="http://www.yaml.org/spec/1.2/spec.html">YAML</a><sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnote_1" title="View footnote.">1</a>]</sup>, concise, readable to a human and in code.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">TopOfBookPrice tobp = new TopOfBookPrice("Symbol", 123456789000L, 1.2345, 1_000_000, 1.235, 2_000_000);
assertEquals("!TopOfBookPrice {\n" +
        "  symbol: Symbol,\n" +
        "  timestamp: 123456789000,\n" +
        "  buyPrice: 1.2345,\n" +
        "  buyQuantity: 1000000.0,\n" +
        "  sellPrice: 1.235,\n" +
        "  sellQuantity: 2000000.0\n" +
        "}\n", tobp.toString());

// from string
TopOfBookPrice topb2 = Marshallable.fromString(tobp.toString());
assertEquals(topb2, tobp);
assertEquals(topb2.hashCode(), tobp.hashCode());
}</code></pre>
</div>
</div>
<div class="paragraph">
<p>One of the advantages of using this format is that it makes it easier to find the reason for a failing test even in complex objects.</p>
</div>
<div class="listingblock">
<div class="title">Even in a trivial test it&#8217;s not obvious what the problem is</div>
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">TopOfBookPrice tobp = new TopOfBookPrice("Symbol", 123456789000L, 1.2345, 1_000_000, 1.235, 2_000_000);
TopOfBookPrice tobp2 = new TopOfBookPrice("Symbol", 123456789000L, 1.2345, 1_000_000, 1.236, 2_000_000);

assertEquals(tobp, tobp2);</code></pre>
</div>
</div>
<div class="paragraph">
<p>However when you run this test in your  <a href="https://en.wikipedia.org/wiki/Integrated_development_environment">IDE</a><sup class="footnote">[<a id="_footnoteref_2" class="footnote" href="#_footnote_2" title="View footnote.">2</a>]</sup>, you get a comparison window.</p>
</div>
<div class="imageblock" style="text-align: center">
<div class="content">
<img src="https://vanilla-java.github.io/images/TopOfBookPrice-comparison.png" alt="Top Of Book Price comparison" width="720">
</div>
<div class="title">Figure 1. Comparison Windows in your IDE</div>
</div>
<div class="paragraph">
<p>If you have a large nested/complex object where <code>assertEquals</code> fails, it can really save you a lot of time finding what the discrepency is.</p>
</div>
</div>
<div class="sect2">
<h3 id="_mocking_our_component">Mocking our component</h3>
<div class="paragraph">
<p>We can mock an interface using a tool like <a href="http://easymock.org/">EasyMock</a>. I find EasyMock is simpler when dealing with event driven interfaces. It is not as powerful as PowerMock or Mockito, however if you are keeping things simple, you might not need those features.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">// what we expect to happen
SidedPrice sp = new SidedPrice("Symbol", 123456789000L, Side.Buy, 1.2345, 1_000_000);
SidedMarketDataListener listener = createMock(SidedMarketDataListener.class);
listener.onSidedPrice(sp);
replay(listener);

// what happens
listener.onSidedPrice(sp);

// verify we got everything we expected.
verify(listener);</code></pre>
</div>
</div>
<div class="paragraph">
<p>We can also mock the expected output of a component the same way.</p>
</div>
</div>
<div class="sect2">
<h3 id="_testing_our_component">Testing our component</h3>
<div class="paragraph">
<p>By mocking the output interface and calling the input interface for our compoonent we can check it behaves as expected.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">MarketDataListener listener = createMock(MarketDataListener.class);
listener.onTopOfBookPrice(new TopOfBookPrice("EURUSD", 123456789000L, 1.1167, 1_000_000, Double.NaN, 0)); <i class="conum" data-value="1"></i><b>(1)</b>
listener.onTopOfBookPrice(new TopOfBookPrice("EURUSD", 123456789100L, 1.1167, 1_000_000, 1.1172, 2_000_000)); <i class="conum" data-value="2"></i><b>(2)</b>
replay(listener);

SidedMarketDataListener combiner = new SidedMarketDataCombiner(listener);
combiner.onSidedPrice(new SidedPrice("EURUSD", 123456789000L, Side.Buy, 1.1167, 1e6)); <i class="conum" data-value="1"></i><b>(1)</b>
combiner.onSidedPrice(new SidedPrice("EURUSD", 123456789100L, Side.Sell, 1.1172, 2e6)); <i class="conum" data-value="2"></i><b>(2)</b>

verify(listener);</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>Setting the buy price</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>Setting the sell price</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_testing_a_series_of_components">Testing a series of components</h3>
<div class="paragraph">
<p>Lets add an OrderManager as a down stream component. This order manager will receive both market data updates and order ideas, and in turn will produce orders.</p>
</div>
<div class="listingblock">
<div class="content">
<pre class="highlight"><code class="language-java" data-lang="java">// what we expect to happen
OrderListener listener = createMock(OrderListener.class);
listener.onOrder(new Order("EURUSD", Side.Buy, 1.1167, 1_000_000));
replay(listener);

// build our scenario
OrderManager orderManager = new OrderManager(listener); <i class="conum" data-value="2"></i><b>(2)</b>
SidedMarketDataCombiner combiner = new SidedMarketDataCombiner(orderManager); <i class="conum" data-value="1"></i><b>(1)</b>

// events in
orderManager.onOrderIdea(new OrderIdea("EURUSD", Side.Buy, 1.1180, 2e6)); // not expected to trigger

combiner.onSidedPrice(new SidedPrice("EURUSD", 123456789000L, Side.Sell, 1.1172, 2e6));
combiner.onSidedPrice(new SidedPrice("EURUSD", 123456789100L, Side.Buy, 1.1160, 2e6));

combiner.onSidedPrice(new SidedPrice("EURUSD", 123456789100L, Side.Buy, 1.1167, 2e6));

orderManager.onOrderIdea(new OrderIdea("EURUSD", Side.Buy, 1.1165, 1e6)); // expected to trigger

verify(listener);</code></pre>
</div>
</div>
<div class="colist arabic">
<table>
<tr>
<td><i class="conum" data-value="1"></i><b>1</b></td>
<td>The first component combines sided prices</td>
</tr>
<tr>
<td><i class="conum" data-value="2"></i><b>2</b></td>
<td>The second component listens to order ideas and top of book market data</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_debugging_our_components">Debugging our components</h3>
<div class="paragraph">
<p>You can see that one component just calls another. When debugging this single threaded code, each event from the first component is a call to the second component. When that finishes it returns to the first one and the tests.</p>
</div>
<div class="paragraph">
<p>When any individual event triggers an error, you can see in the <strong>stack trace</strong> which event caused the issue. However, if you are expecting an event which doesn&#8217;t happen, this is tricker unless your tests are simple (or you do a series of simple tests with <code>verify()</code>, <code>reset()</code> and <code>replay()</code>.</p>
</div>
<div class="admonitionblock note">
<table>
<tr>
<td class="icon">
<i class="fa icon-note" title="Note"></i>
</td>
<td class="content">
it takes almost no time at all to start up the test and debug it in your IDE.  You can run hundreds of tests like this in less than a second.
</td>
</tr>
</table>
</div>
</div>
<div class="sect2">
<h3 id="_source_for_examples">Source for examples</h3>
<div class="paragraph">
<p><a href="https://github.com/Vanilla-Java/Microservices/tree/master/src/main/java/net/openhft/samples/microservices" class="bare">https://github.com/Vanilla-Java/Microservices/tree/master/src/main/java/net/openhft/samples/microservices</a></p>
</div>
</div>
<div class="sect1">
<h2 id="_how_do_we_create_these_as_services">How do we create these as services?</h2>
<div class="sectionbody">
<div class="paragraph">
<p>We have shown how easy it is to test and debug our components. <a href="https://vanilla-java.github.io/2016/03/24/Microservices-in-the-Chronicle-world-Part-2.html">How do we turn these into services in Part 2</a>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_glossary">Glossary</h2>
<div class="sectionbody">
<div class="paragraph">
<p><strong>Microservices</strong>- Independantly deployable programmes that act as components in a larger network.</p>
</div>
<div class="paragraph">
<p><strong>Serialization</strong>- <a href="https://en.wikipedia.org/wiki/Serialization">"The process of translating data structures or object state into a format that can be stored"</a><sup class="footnote">[<a id="_footnoteref_3" class="footnote" href="#_footnote_3" title="View footnote.">3</a>]</sup><em>See also</em> <strong>Serialization libraries</strong>- The process that translates data into a format that can be consumed by another system.</p>
</div>
<div class="paragraph">
<p><strong>Stack trace</strong>- "A report of the active <a href="http://stackoverflow.com/questions/10057443/explain-the-concept-of-a-stack-frame-in-a-nutshell">stack frames</a> at a certain point in time during the execution of a program."  <sup class="footnote">[<a id="_footnoteref_4" class="footnote" href="#_footnote_4" title="View footnote.">4</a>]</sup> // = Your Blog title</p>
</div>
</div>
</div>
<div id="footnotes">
<hr>
<div class="footnote" id="_footnote_1">
<a href="#_footnoteref_1">1</a>. Ben-Kiki, et al (2009). YAML Ain’t Markup Language (YAML™) Version 1.2. Online. Available at: <a href="http://www.yaml.org/spec/1.2/spec.html" class="bare">http://www.yaml.org/spec/1.2/spec.html</a>. Accessed Jul. 2016
</div>
<div class="footnote" id="_footnote_2">
<a href="#_footnoteref_2">2</a>. Wikipedia. (2016). Integrated development environment. Online. Available at: <a href="https://en.wikipedia.org/wiki/Integrated_development_environment" class="bare">https://en.wikipedia.org/wiki/Integrated_development_environment</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_3">
<a href="#_footnoteref_3">3</a>. Wikipedia. (2016). Serialization. Online. Available at: <a href="https://en.wikipedia.org/wiki/Serialization" class="bare">https://en.wikipedia.org/wiki/Serialization</a>. Accessed Jul. 2016.
</div>
<div class="footnote" id="_footnote_4">
<a href="#_footnoteref_4">4</a>. Wikipedia. (2016). Stack trace. Online. Available at: <a href="https://en.wikipedia.org/wiki/Stack_trace" class="bare">https://en.wikipedia.org/wiki/Stack_trace</a>. Accessed Jul. 2016
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/03/23/Microservices-in-the-Chronicle-world-Part-1.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/03/23/Microservices-in-the-Chronicle-world-Part-1.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[examples]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Wed, 23 Mar 2016 00:00:00 GMT</pubDate></item><item><title><![CDATA[Micro-services for performance]]></title><description><![CDATA[<div class="sect1">
<h2 id="_overview">Overview</h2>
<div class="sectionbody">
<div class="paragraph">
<p><strong>Microservices</strong> is a buzz word at the moment. Is it really something original or based on established best practices? There are some disadvantages to the way microservices have been implemented, but can these be solved?</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_component_testability_and_consistency">Component testability and consistency</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Once you have assembled a large system, it can be hard or even impossible to profile where the highest delays come from. You can profile for average <strong>latency</strong> or <strong>throughput</strong>, but to achieve consistent latencies, you need to analyse key portions of your system.  This is where having simple components which run independently, and can be tested as stand alone, could help you achieve the consistency of your system needs end to end.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_the_unix_philosophy">The UNIX Philosophy</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Many of the key concepts of microservices have been used in distributed systems for many years.</p>
</div>
<div class="paragraph">
<p>Microservices have much in common with the  <a href="https://en.wikipedia.org/wiki/Unix_philosophy">Unix Philosophy</a><sup class="footnote">[<a id="_footnoteref_1" class="footnote" href="#_footnote_1" title="View footnote.">1</a>]</sup></p>
</div>
<div class="paragraph">
<p><a href="https://en.wikipedia.org/wiki/Unix_philosophy#Mike_Gancarz:_The_UNIX_Philosophy">Mike Gancarz</a><sup class="footnote">[<a id="_footnoteref_2" class="footnote" href="#_footnote_2" title="View footnote.">2</a>]</sup> is quoted as summed these principles as follows:</p>
</div>
<div class="quoteblock">
<blockquote>
<div class="ulist">
<ul>
<li>
<p>Small is beautiful.</p>
</li>
<li>
<p>Make each program do one thing well.</p>
</li>
<li>
<p>Build a prototype as soon as possible.</p>
</li>
<li>
<p>Choose portability over efficiency.</p>
</li>
<li>
<p>Store data in flat text files.</p>
</li>
<li>
<p>Use software leverage to your advantage.</p>
</li>
<li>
<p>Use <a href="https://en.wikipedia.org/wiki/Shell_script">shell scripts</a><sup class="footnote">[<a id="_footnoteref_3" class="footnote" href="#_footnote_3" title="View footnote.">3</a>]</sup> to increase leverage and portability.</p>
</li>
<li>
<p>Avoid captive user interfaces.</p>
</li>
<li>
<p>Make every program a filter.</p>
</li>
</ul>
</div>
</blockquote>
</div>
<div class="paragraph">
<p>The <a href="https://en.wikipedia.org/wiki/Microservices#Philosophy">Microservices Architecture</a><sup class="footnote">[<a id="_footnoteref_4" class="footnote" href="#_footnote_4" title="View footnote.">4</a>]</sup> is the UNIX Philosophy applied to <strong>distributed systems</strong>.</p>
</div>
<div class="paragraph">
<p>Philosophy of microservices architecture essentially equals the Unix philosophy of "Do one thing and do it well". It is described as follows:</p>
</div>
<div class="quoteblock">
<blockquote>
<div class="ulist">
<ul>
<li>
<p>The services are small - fine-grained to perform a single function.</p>
</li>
<li>
<p>The organization culture should embrace automation of deployment and testing. This eases the burden on management and operations.</p>
</li>
<li>
<p>The culture and design principles should embrace failure and faults, similar to anti-fragile systems.</p>
</li>
<li>
<p>Each service is elastic, resilient, composable, minimal, and complete.</p>
</li>
</ul>
</div>
</blockquote>
</div>
<div class="paragraph">
<p>There are <a href="https://en.wikipedia.org/wiki/Microservices#Criticism">disadvantages</a><sup class="footnote">[<a id="_footnoteref_5" class="footnote" href="#_footnote_5" title="View footnote.">5</a>]</sup> to using a microservices archictecture some of which are;</p>
</div>
<div class="quoteblock">
<blockquote>
<div class="ulist">
<ul>
<li>
<p>Services form information <a href="https://en.wikipedia.org/wiki/Barrier_(computer_science)">barriers</a><sup class="footnote">[<a id="_footnoteref_6" class="footnote" href="#_footnote_6" title="View footnote.">6</a>]</sup>.</p>
</li>
<li>
<p>The architecture introduces additional complexity and new problems to deal with, such as network latency, <a href="http://networking.xtreemhost.com/wp/?p=279&amp;ckattempt=1">message formats</a><sup class="footnote">[<a id="_footnoteref_7" class="footnote" href="#_footnote_7" title="View footnote.">7</a>]</sup>,
<a href="http://searchnetworking.techtarget.com/definition/load-balancing">load balancing</a> <sup class="footnote">[<a id="_footnoteref_8" class="footnote" href="#_footnote_8" title="View footnote.">8</a>]</sup> and
<a href="http://searchdisasterrecovery.techtarget.com/definition/fault-tolerant">fault tolerance</a><sup class="footnote">[<a id="_footnoteref_9" class="footnote" href="#_footnote_9" title="View footnote.">9</a>]</sup>. Ignoring one of these belongs to the "fallacies of distributed computing".</p>
</li>
<li>
<p>Testing and deployment are more complicated.</p>
</li>
<li>
<p>The complexity of a <a href="https://en.wikipedia.org/wiki/Monolithic_application">monolithic application</a><sup class="footnote">[<a id="_footnoteref_10" class="footnote" href="#_footnote_10" title="View footnote.">10</a>]</sup> is only shifted into the network, but persists.</p>
</li>
<li>
<p>Too-fine-grained microservices have been criticized as an anti-pattern.</p>
</li>
</ul>
</div>
</blockquote>
</div>
<div class="paragraph">
<p>Can we get the best features of a monolith, and micro-services? Does it have to be one or the other?  Should we not use the approach which best suits our problem.  One of the key aspects of Micro-services is controlled deployment of an application. In which case, shouldn&#8217;t we be able to deploy components as a Monolith or Micro-services where it makes the most sense to do so.</p>
</div>
<div class="paragraph">
<p>Proposed alternatives to nanoservices include;</p>
</div>
<div class="quoteblock">
<blockquote>
<div class="ulist">
<ul>
<li>
<p>Package the functionality as a <strong>library</strong>, rather than a service.</p>
</li>
<li>
<p>Combine the functionality with other functionalities, producing a more substantial, useful service.</p>
</li>
<li>
<p>Refactor the system, putting the functionality in other services or redesigning the system.</p>
</li>
</ul>
</div>
</blockquote>
</div>
</div>
</div>
<h1 id="_how_can_we_get_the_best_of_both_worlds" class="sect0">How can we get the best of both worlds?</h1>
<div class="sect1">
<h2 id="_make_sure_your_components_are_composable">Make sure your components are composable.</h2>
<div class="sectionbody">
<div class="paragraph">
<p>If your components are composable, then they are always the right size.  You can combine them as needed into a collection of services, or everything into one service.</p>
</div>
<div class="paragraph">
<p>This is particularly important for testing and <strong>debugging</strong>.  You need to know a group of business components work together without the infrastructure (eg. Middleware) getting in the way.  For the purposes of a unit test, you may want to run all your components in one thread and have one directly call the other.  This can be no more complicated than testing components of a monolith where you can step through your code from one component to another and see exactly what is happening.</p>
</div>
<div class="paragraph">
<p>Only once your components work together correctly without infrastructure, do you need to test how they behave with infrastructure.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_make_your_infrastructure_as_fast_as_your_application_needs">Make your infrastructure as fast as your application needs.</h2>
<div class="sectionbody">
<div class="paragraph">
<p>Low latency trading systems are distributed systems, and yet they also have very stringent latency requirements.  Most trading systems are designed to care about latencies much faster than you can see.  In the Java space, it is not unusual to see a trading system which needs to have latencies below 100 micro-seconds, 99% of the time or even 99.9% of the time.  This can be achieved using commodity hardware in a high level language like Java.</p>
</div>
<div class="paragraph">
<p>The keys to achieving low latencies are;</p>
</div>
<div class="ulist">
<ul>
<li>
<p>low latency infrastructure for messaging and logging. Ideally around a 1 micro-second for short messages,</p>
</li>
<li>
<p>a minimum of network hops,</p>
</li>
<li>
<p>a high level of reproduceability of real production load so you can study the 99%tile (worst 1 %) or 99.9%tile (worst 0.1%) latencies,</p>
</li>
<li>
<p>viewing each <strong>CPU core</strong> as having a specific task/service, with it&#8217;s own CPU cache data and code. The focus is on the distribution of your application between cores (rather than between computers).</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Your L2 cache coherence bus is your messaging layer between high performance services.</p>
</div>
<div class="imageblock">
<div class="content">
<a class="image" href="http://slideplayer.com/slide/3348635/"><img src="https://vanilla-java.github.io/images/L2-Cache-Coherence-small.jpg" alt="L2 Cache" width="230"></a>
</div>
</div>
<div class="paragraph">
<p>You can perform a CAS operation on the same data between two different cores. Here, each thread toggles the value set by the other thread with a round trip time of less than 50 nano-seconds on <a href="http://ark.intel.com/products/codename/29900/Sandy-Bridge#@All">Sandy Bridge processors</a><sup class="footnote">[<a id="_footnoteref_11" class="footnote" href="#_footnote_11" title="View footnote.">11</a>]</sup>, less on newer generations.</p>
</div>
<div class="paragraph">
<p>Examples of low latency instructure in Java are;</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="https://github.com/real-logic/Aeron">Aeron</a><sup class="footnote">[<a id="_footnoteref_12" class="footnote" href="#_footnote_12" title="View footnote.">12</a>]</sup> - A reliable UDP transport,</p>
</li>
<li>
<p><a href="https://github.com/OpenHFT/Chronicle-Queue">Chronicle Queue</a> - A persisted queue for messaging and logging.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>These transports have different advantages in terms of handling load balancing and <strong>failover</strong>.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_make_the_message_format_a_configuration_consideration">Make the message format a configuration consideration.</h2>
<div class="sectionbody">
<div class="paragraph">
<p>There is a number of competing concerns in message formats. You want;</p>
</div>
<div class="ulist">
<ul>
<li>
<p>Human readability so you can validate the messages are not only behaving correctly, but doing so in the manner you expect. I am often surprised how many issues I find by dumping a storage file or the message logs.</p>
</li>
<li>
<p>Machine friendly binary format for speed.</p>
</li>
<li>
<p>Flexability in terms of future schema changes. Flexability means adding redundancy so the software can cope with adding/removing fields and changing their data types in future. This redundancy is a waste if you don&#8217;t need it.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>Ideally, you can choose the best option at testing/deployment time.</p>
</div>
<div class="paragraph">
<p>Some examples of <strong>serialization libraries</strong> where you can change the actual <strong>wire format</strong> to suit your needs are:</p>
</div>
<div class="ulist">
<ul>
<li>
<p><a href="https://github.com/FasterXML/jackson-core">Jackson Speaming API</a><sup class="footnote">[<a id="_footnoteref_13" class="footnote" href="#_footnote_13" title="View footnote.">13</a>]</sup> - Which supports JSON, XML, CSV, CBOR (a binary format),</p>
</li>
<li>
<p><a href="https://github.com/OpenHFT/Chronicle-Wire">Chronicle Wire</a> - Which supports object serialization YAML, a number of different forms of Binary YAML, JSON, CSV, Raw data.</p>
</li>
</ul>
</div>
<div class="paragraph">
<p>What I found useful in <a href="http://www.yaml.org/spec/1.2/spec.html">YAML</a><sup class="footnote">[<a id="_footnoteref_14" class="footnote" href="#_footnote_14" title="View footnote.">14</a>]</sup> verses JSON, is the cleaner syntax which is designed to be human readable, rather than the subset of another language, the natural support for data types, comments, binary content and message seperators.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_conclusion">Conclusion</h2>
<div class="sectionbody">
<div class="paragraph">
<p>I think there is a lot of good ideas on how to use microservices, and I think many of the criticisms around them are based on how they have been implemented and I believe they are solvable.</p>
</div>
</div>
</div>
<div class="sect1">
<h2 id="_glossary">Glossary</h2>
<div class="sectionbody">
<div class="paragraph">
<p><strong>CPU core</strong>- <a href="http://www.makeuseof.com/tag/processor-core-makeuseof-explains-2/">"A processor core is a processing unit which reads in instructions to perform specific actions."</a><sup class="footnote">[<a id="_footnoteref_15" class="footnote" href="#_footnote_15" title="View footnote.">15</a>]</sup></p>
</div>
<div class="paragraph">
<p><strong>Debugging</strong>- the process of searching for and fixing defects in code.</p>
</div>
<div class="paragraph">
<p><strong>Distributed System</strong>- A collection of autonomous computers linked in a network by <a href="https://en.wikipedia.org/wiki/Middleware">middleware</a><sup class="footnote">[<a id="_footnoteref_16" class="footnote" href="#_footnote_16" title="View footnote.">16</a>]</sup>. A test can be distributed between a number of systems.</p>
</div>
<div class="paragraph">
<p><strong>Failover</strong>- <a href="http://www.webopedia.com/TERM/F/failover.html">"A backup operation that automatically switches to a standby server or network if the primary system fails or is temporarily shut down for servicing."</a><sup class="footnote">[<a id="_footnoteref_17" class="footnote" href="#_footnote_17" title="View footnote.">17</a>]</sup></p>
</div>
<div class="paragraph">
<p><strong>Latency</strong>- The time an individual operation takes. <a href="http://www.webopedia.com/TERM/L/latency.html">"Together, latency and bandwidth define the speed and capacity of a network."</a><sup class="footnote">[<a id="_footnoteref_18" class="footnote" href="#_footnote_18" title="View footnote.">18</a>]</sup></p>
</div>
<div class="paragraph">
<p><strong>Library</strong>- <a href="http://www.webopedia.com/TERM/L/library.html">"A collection of precompiled routines that a program can use."</a><sup class="footnote">[<a id="_footnoteref_19" class="footnote" href="#_footnote_19" title="View footnote.">19</a>]</sup></p>
</div>
<div class="paragraph">
<p><strong>Microservices</strong>- Independantly deployable programmes that act as components in a larger network.</p>
</div>
<div class="paragraph">
<p><strong>Throughput</strong>- The rate of data or messages transferred which is processed in a certain amount of time. This rate is written in terms of throughput, e.g a road could have a throughput of 10 cars per minute.</p>
</div>
<div class="paragraph">
<p><strong>Serialization libraries</strong>- The process that translates data into a format that can be consumed by another system.</p>
</div>
<div class="paragraph">
<p><strong>Wire format</strong>- A defined way for sending data between mechines as bytes.</p>
</div>
</div>
</div>
<div id="footnotes">
<hr>
<div class="footnote" id="_footnote_1">
<a href="#_footnoteref_1">1</a>. Wikipedia. (2016). Unix philosophy. Online. Available at: <a href="https://en.wikipedia.org/wiki/Unix_philosophy" class="bare">https://en.wikipedia.org/wiki/Unix_philosophy</a>. Accessed: Mar. 2016
</div>
<div class="footnote" id="_footnote_2">
<a href="#_footnoteref_2">2</a>. Wikipedia. (2016). Unix philosophy. Online. Available at: <a href="https://en.wikipedia.org/wiki/Unix_philosophy#Mike_Gancarz:_The_UNIX_Philosophy" class="bare">https://en.wikipedia.org/wiki/Unix_philosophy#Mike_Gancarz:_The_UNIX_Philosophy</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_3">
<a href="#_footnoteref_3">3</a>. Wikipedia. (2016). Shell script. Online. Available at: <a href="https://en.wikipedia.org/wiki/Shell_script" class="bare">https://en.wikipedia.org/wiki/Shell_script</a>. Accessed Mar.  2016
</div>
<div class="footnote" id="_footnote_4">
<a href="#_footnoteref_4">4</a>. Wikipedia. (2016). Microservices. Online. Available at: <a href="https://en.wikipedia.org/wiki/Microservices#Philosophy" class="bare">https://en.wikipedia.org/wiki/Microservices#Philosophy</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_5">
<a href="#_footnoteref_5">5</a>. Wikipedia. (2016). Microservices. Online. Available at: <a href="https://en.wikipedia.org/wiki/Microservices#Criticism" class="bare">https://en.wikipedia.org/wiki/Microservices#Criticism</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_6">
<a href="#_footnoteref_6">6</a>. Shirako, J., et al (2008). Phasers. Proceedings of the 22nd annual international conference on Supercomputing - ICS '08. Online. Available at: <a href="https://en.wikipedia.org/wiki/Barrier_(computer_science" class="bare">https://en.wikipedia.org/wiki/Barrier_(computer_science</a>). Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_7">
<a href="#_footnoteref_7">7</a>. Luca, A. (2016). Message Formatting. Online. Available at: <a href="http://networking.xtreemhost.com/wp/?p=279&amp;ckattempt=1" class="bare">http://networking.xtreemhost.com/wp/?p=279&amp;ckattempt=1</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_8">
<a href="#_footnoteref_8">8</a>. Rouse, M. (2016). What is load balancing? - Definition from WhatIs.com. Online. Available at: <a href="http://searchnetworking.techtarget.com/definition/load-balancing" class="bare">http://searchnetworking.techtarget.com/definition/load-balancing</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_9">
<a href="#_footnoteref_9">9</a>. Rouse, M. (2016). What is fault-tolerant? - Definition from WhatIs.com. Online. Available at: <a href="http://searchdisasterrecovery.techtarget.com/definition/fault-tolerant" class="bare">http://searchdisasterrecovery.techtarget.com/definition/fault-tolerant</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_10">
<a href="#_footnoteref_10">10</a>. Wikipedia. (2016). Monolithic application. Online. Available at: <a href="https://en.wikipedia.org/wiki/Monolithic_application" class="bare">https://en.wikipedia.org/wiki/Monolithic_application</a> Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_11">
<a href="#_footnoteref_11">11</a>. Intel® ARK (Product Specs). (2016). Products (Formerly Sandy Bridge). Online. Available at: <a href="http://ark.intel.com/products/codename/29900/Sandy-Bridge#@All" class="bare">http://ark.intel.com/products/codename/29900/Sandy-Bridge#@All</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_12">
<a href="#_footnoteref_12">12</a>. GitHub. (2016). real-logic/Aeron. Online. Available at: <a href="https://github.com/real-logic/Aeron" class="bare">https://github.com/real-logic/Aeron</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_13">
<a href="#_footnoteref_13">13</a>. GitHub. (2016). FasterXML/jackson-core. Online. Available at: <a href="https://github.com/FasterXML/jackson-core" class="bare">https://github.com/FasterXML/jackson-core</a>. Accessed Mar. 2016
</div>
<div class="footnote" id="_footnote_14">
<a href="#_footnoteref_14">14</a>. Ben-Kiki, et al (2009). YAML Ain’t Markup Language (YAML™) Version 1.2. Online. Available at: <a href="http://www.yaml.org/spec/1.2/spec.html" class="bare">http://www.yaml.org/spec/1.2/spec.html</a>. Accessed Jul. 2016
</div>
<div class="footnote" id="_footnote_15">
<a href="#_footnoteref_15">15</a>. Stieben, D. (2012). What Is A Processor Core? MakeUseOf Explains. Online. Available at: <a href="http://www.makeuseof.com/tag/processor-core-makeuseof-explains-2/" class="bare">http://www.makeuseof.com/tag/processor-core-makeuseof-explains-2/</a>. Accessed Jul. 2016
</div>
<div class="footnote" id="_footnote_16">
<a href="#_footnoteref_16">16</a>. Wikipedia. (2016). Middleware. Online. Available at <a href="https://en.wikipedia.org/wiki/Middleware" class="bare">https://en.wikipedia.org/wiki/Middleware</a>. Accessed Jul.2016
</div>
<div class="footnote" id="_footnote_17">
<a href="#_footnoteref_17">17</a>. Webopedia.com. (2016). What is failover? Webopedia Definition. Online. Available at: <a href="http://www.webopedia.com/TERM/F/failover.html" class="bare">http://www.webopedia.com/TERM/F/failover.html</a>. Accessed Jul. 2016
</div>
<div class="footnote" id="_footnote_18">
<a href="#_footnoteref_18">18</a>. Webopedia.com. (2016). What is Latency? Webopedia Definition. Online. Available at: <a href="http://www.webopedia.com/TERM/L/latency.html" class="bare">http://www.webopedia.com/TERM/L/latency.html</a>. Accessed Jul. 2016
</div>
<div class="footnote" id="_footnote_19">
<a href="#_footnoteref_19">19</a>. Webopedia.com. (2016). What is Library? Webopedia Definition. Onilne. Available at: <a href="http://www.webopedia.com/TERM/L/library.html" class="bare">http://www.webopedia.com/TERM/L/library.html</a>. Accessed Jul. 2016
</div>
</div>]]></description><link>https://vanilla-java.github.io/2016/03/22/Micro-services-for-performance.html</link><guid isPermaLink="true">https://vanilla-java.github.io/2016/03/22/Micro-services-for-performance.html</guid><category><![CDATA[Microservices]]></category><category><![CDATA[design]]></category><dc:creator><![CDATA[Peter Lawrey]]></dc:creator><pubDate>Tue, 22 Mar 2016 00:00:00 GMT</pubDate></item></channel></rss>