<div dir="ltr"><div class="markdown-here-wrapper" style=""><p style="margin:0px 0px 1.2em!important"><strong>NOTE</strong> This newsletter is also posted at <a href="https://mystor.github.io/fission-news-1.html">https://mystor.github.io/fission-news-1.html</a></p>
<blockquote style="margin:1.2em 0px;border-left:4px solid rgb(221,221,221);padding:0px 1em;color:rgb(119,119,119);quotes:none">
<p style="margin:0px 0px 1.2em!important"><strong>TL;DR</strong> Fission is happening and our first “Milestone” is targeted at<br>the end of February. Please file bugs related to fission and mark them as<br>“Fission Milestone: ?” so we can triage them into the correct milestone.</p>
</blockquote>
<p style="margin:0px 0px 1.2em!important">A little more than a year ago, a serious security flaw affecting almost all modern<br>processors was <a href="https://googleprojectzero.blogspot.com/2018/01/reading-privileged-memory-with-side.html">publicly disclosed</a>. Three known variants of the issue<br>were announced with the names dubbed as <a href="https://spectreattack.com/spectre.pdf">Spectre</a> (variants 1 and 2) and<br><a href="https://meltdownattack.com/meltdown.pdf">Meltdown</a> (variant 3). Spectre abuses a CPU optimization technique known<br>as speculative execution to exfiltrate secret data stored in memory of other<br>running programs via side channels. This might include cryptographic keys,<br>passwords stored in a password manager or browser, cookies, etc. This timing<br>attack posed a serious threat to the browsers because webpages often serve<br>JavaScript from multiple domains that run in the same process. This<br>vulnerability would enable malicious third-party code to steal sensitive user<br>data belonging to a site hosting that code, a serious flaw that would violate<br>a web security cornerstone known as <a href="https://en.m.wikipedia.org/wiki/Same-origin_policy">Same-origin policy</a>.</p>
<p style="margin:0px 0px 1.2em!important">Thanks to the heroic efforts of the Firefox JS and Security teams, we were<br>able to mitigate these vulnerabilities right away. However, these mitigations<br>may not save us in the future if another security vulnerability is released<br>exploiting the same underlying problem of sharing processes (and hence,<br>memory) between different domains, some of which may be malicious. Chrome<br>spent multiple years working to isolate sites in their own processes.</p>
<p style="margin:0px 0px 1.2em!important">We aim to build a browser which isn’t just secure against known security<br>vulnerabilities, but also has layers of built-in defense against potential<br>future vulnerabilities. To accomplish this, we need to revamp the<br>architecture of Firefox and support full Site Isolation. We call this next<br>step in the evolution of Firefox’s process model “<strong>Project Fission</strong>“. While<br>Electrolysis split our browser into Content and Chrome, with Fission, we will<br>“split the atom”, splitting cross-site iframes into different processes than<br>their parent frame.</p>
<p style="margin:0px 0px 1.2em!important">Over the last year, we have been working to lay the groundwork for Fission,<br>designing new infrastructure. In the coming weeks and months, we’ll need help<br>from all Firefox teams to adapt our code to a post-Fission browser<br>architecture.</p>
<h3 id="planning-and-coordination" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.3em">Planning and Coordination</h3>
<p style="margin:0px 0px 1.2em!important">Fission is a massive project, spanning across many different teams, so keeping<br>track of what everyone is doing is a pretty big task. While we have a weekly<br>project meeting, which someone on your team may already be attending, we have<br>started also using a Bugzilla project tracking flag to keep track of the work<br>we have in progress.</p>
<p style="margin:0px 0px 1.2em!important">Now that we’ve moved past much of the initial infrastructure ground work, we<br>are going to keep track of work with our milestone targets. Each milestone<br>will contain a collection of new features and improved functionality which<br>brings us incrementally closer to our goal.</p>
<p style="margin:0px 0px 1.2em!important">Our first milestone, “Milestone 1” (clever, I know), is currently targeted<br>for the end of February. In Milestone 1, we plan to have the groundwork for<br>out-of-process iframes, which encompasses some major work, including, but not<br>limited to, the following contributions:</p>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px"><strong>:rhunt</strong> is implementing basic out-of-process iframe rendering behind a<br>pref. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1500257">Bug 1500257</a>)</li>
<li style="margin:0.5em 0px"><strong>:jdai</strong> is implementing native JS Window Actor APIs to migrate FrameScripts.<br>(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1467212">Bug 1467212</a>)</li>
<li style="margin:0.5em 0px"><strong>:farre</strong> is adding support for BrowsingContext fields to be<br>synchronized between multiple content processes. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1523645">Bug 1523645</a>)</li>
<li style="margin:0.5em 0px"><strong>:peterv</strong> has implemented new cross-process WindowProxy objects to<br>correctly emulate the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Window</code> object APIs exposed to cross-origin documents.<br>(<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1353867">Bug 1353867</a>)</li>
<li style="margin:0.5em 0px"><strong>:mattn</strong> is converting the FormAutoFillListeners code to the actors infrastructure. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1474143">Bug 1474143</a>)</li>
<li style="margin:0.5em 0px"><strong>:felipe</strong> simulated the Fission API for communicating between parent and child processes. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1493984">Bug 1493984</a>)</li>
<li style="margin:0.5em 0px"><strong>:heycam</strong> is working on sharing UA stylesheets between processes. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1474793">Bug 1474793</a>)</li>
<li style="margin:0.5em 0px"><strong>:kmag</strong>, <strong>:erahm</strong> and many others have reduced per-process memory overhead!</li>
<li style="margin:0.5em 0px"><strong>:jld</strong> is working on async process launches</li>
<li style="margin:0.5em 0px"><strong>:dragana</strong>, <strong>:kershaw</strong> and others are moving networking logic into a socket process. (<a href="https://bugzilla.mozilla.org/show_bug.cgi?id=1322426">Bug 1322426</a>)</li>
<li style="margin:0.5em 0px">…and so much more!</li>
</ul>
<p style="margin:0px 0px 1.2em!important">If you want an up-to-date view of Milestone 1, you can see the <a href="https://bugzilla.mozilla.org/buglist.cgi?classification=Client%20Software&classification=Developer%20Infrastructure&classification=Components&classification=Server%20Software&classification=Other&f1=cf_fission_milestone&list_id=14538804&o1=equals&query_format=advanced&v1=M1&query_based_on=&columnlist=product%2Ccomponent%2Cassigned_to%2Cshort_desc%2Cbug_status%2Cresolution%2Cstatus_whiteboard">current Milestone 1 status</a><br>on Bugzilla.</p>
<p style="margin:0px 0px 1.2em!important">If have a bug which may be relevant to fission, <em>please</em> let us know by setting<br>the “Fission Milestone” project flag to ‘?’. We’ll swing by and triage it into<br>the correct milestone.</p>
<p style="margin:0px 0px 1.2em!important"><img src="https://mystor.github.io/images/fission_milestone_select.png" alt="Setting Fission Milestone Project Flag" style="margin-right: 0px;" width="546" height="291"></p>
<p style="margin:0px 0px 1.2em!important">If you have any questions, feel free to reach out to one of us, and we’ll get<br>you answers, or guide you to someone who can:</p>
<ul style="margin:1.2em 0px;padding-left:2em">
<li style="margin:0.5em 0px">Ron Manning <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline"><<a href="mailto:rmanning@mozilla.com">rmanning@mozilla.com</a>></code> (Fission Engineering Project Manager)</li>
<li style="margin:0.5em 0px">Nika Layzell <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline"><<a href="mailto:nika@mozilla.com">nika@mozilla.com</a>></code> (Fission Tech Lead)</li>
<li style="margin:0.5em 0px">Neha Kochar <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline"><<a href="mailto:nkochar@mozilla.com">nkochar@mozilla.com</a>></code> (DOM Fission Engineering Manager)</li>
</ul>
<h3 id="what-s-changing-" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.3em">What’s Changing?</h3>
<p style="margin:0px 0px 1.2em!important">In order to make each component of Firefox successfully adapt to a post-Fission<br>world, many of them are going to need changes of varying scale. Covering all of<br>the changes which we’re going to need would be impossible within a single<br>newsletter. Instead, I will focus on the changes to actors, messageManagers,<br>and document hierarchies.</p>
<p style="margin:0px 0px 1.2em!important">Today, Firefox has process separation between the UI - run in the <em>parent<br>process</em>, and web content - run in <em>content processes</em>. Communication between<br>these two trees of “Browsing Contexts” is done using the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">TabParent</code> and<br><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">TabChild</code> actors in C++ code, and Message Managers in JS code. These systems<br>communicate directly between the “embedder”, which in this case is the<br><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline"><browser></code> element, and the root of the embedded tree, which in this case<br>would be the toplevel DocShell in the tab.</p>
<p style="margin:0px 0px 1.2em!important">However, in a post-Fission world, this layer for communication is no longer<br>sufficient. It will be possible for multiple processes to render distinct<br>subframes, meaning that each tab has multiple connected processes.</p>
<p style="margin:0px 0px 1.2em!important">Components will need to adapt their IPC code to work in this new world, both by<br>updating their use of existing APIs, and by adapting to use new Actors and APIs<br>which are being added as part of the Fission project.</p>
<h4 id="per-window-global-actors" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.2em">Per-Window Global Actors</h4>
<p style="margin:0px 0px 1.2em!important">For many components, the full tree of Browsing Contexts is not important,<br>rather communication is needed between the parent process and any specific<br>document. For these cases, a new actor has been added which is exposed both in<br>C++ code and JS code called [PWindowGlobal].</p>
<p style="margin:0px 0px 1.2em!important">Unlike other actors in gecko, such as <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Tab{Parent,Child}</code>, this actor exists<br>for all window globals, including those loaded within the parent process. This<br>is handled using a new <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">PInProcess</code> manager actor, which supports sending main<br>thread to main thread IPDL messages.</p>
<p style="margin:0px 0px 1.2em!important">JS code running within a FrameScript may not be able to inspect every frame at<br>once, and won’t be able to handle events from out of process iframes. Instead,<br>it will need to use our new [JS Window Actor] APIs, which we are targeting to<br>land in Milestone 1. These actors are “managed” by the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">WindowGlobal</code> actors,<br>and are implemented as JS classes instantiated when requested for any<br>particular window. They support sending async messages, and will be present for<br>both in-process and out-of-process windows.</p>
<p style="margin:0px 0px 1.2em!important">C++ logic which walks the frame tree from the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">TabChild</code> may stop working.<br>Instead, C++ code may choose to use the PWindowGlobal actor to send messages in<br>a manner similar to JS code.</p>
<h4 id="-browsingcontext-objects" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.2em"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">BrowsingContext</code> objects</h4>
<p style="margin:0px 0px 1.2em!important">C++ code may also maintain shared state on the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">BrowsingContext</code> object. We are<br>targeting landing the field syncing infrastructure in Milestone 1, and it will<br>provide a place to store data which should be readable by all processes with a<br>view of the structure.</p>
<p style="margin:0px 0px 1.2em!important">The parent process holds a special subclass of the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">BrowsingContext</code> object:<br><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">CanonicalBrowsingContext</code>. This object has extra fields which can be used in<br>the parent to keep track of the current status of all frames in one place.</p>
<h4 id="-tabparent-tabchild-and-iframes" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.2em"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">TabParent</code>, <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">TabChild</code> and IFrames</h4>
<p style="margin:0px 0px 1.2em!important">The <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Tab{Parent,Child}</code> actors will continue to exist, and will always bridge<br>from the parent process to a content process. However, in addition to these<br>actors being present for toplevel documents, they will also be present for<br>out-of-process subtrees.</p>
<p style="margin:0px 0px 1.2em!important">As an example, consider the following tree of nested browsing contexts:</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important"> +-- 1 --+
| <a href="http://a.com">a.com</a> |
+-------+
/ \
+-- 2 --+ +-- 4 --+
| <a href="http://a.com">a.com</a> | | <a href="http://b.com">b.com</a> |
+-------+ +-------+
| |
+-- 3 --+ +-- 5 --+
| <a href="http://b.com">b.com</a> | | <a href="http://b.com">b.com</a> |
+-------+ +-------+
</code></pre><p style="margin:0px 0px 1.2em!important">Under e10s, we have a single <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Tab{Parent,Child}</code> pair for the entire tab, which<br>would connect to <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">1</code>, and FrameScripts would run with <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">content</code> being the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">1</code>‘s<br>global.</p>
<p style="margin:0px 0px 1.2em!important">After Fission, there will still be a <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Tab{Parent,Child}</code> actor for the root of<br>the tree, at <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">1</code>. However, there will also be two additional <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Tab{Parent,Child}</code><br>actors: one at <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">3</code> and one at <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">4</code>. Each of these nested <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">TabParent</code> objects are<br>held alive in the parent process by a <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">RemoteFrameParent</code> actor whose<br>corresponding <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">RemoteFrameChild</code> is held by the embedder’s iframe.</p>
<p style="margin:0px 0px 1.2em!important">The following is a diagram of the documents and actors which build up the actor<br>tree, excluding the <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">WindowGlobal</code> actors. <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">RF{P,C}</code> stands for<br><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">RemoteFrame{Parent,Child}</code>, and <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">T{P,C}</code> stands for <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Tab{Parent,Child}</code>.<br>The <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">RemoteFrame</code> actors are managed by their embedding <code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline">Tab</code> actors, and use<br>the same underlying transport.</p>
<pre style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;font-size:1em;line-height:1.2em;margin:1.2em 0px"><code style="font-size:0.85em;font-family:Consolas,Inconsolata,Courier,monospace;margin:0px 0.15em;padding:0px 0.3em;white-space:pre-wrap;border:1px solid rgb(234,234,234);background-color:rgb(248,248,248);border-radius:3px;display:inline;white-space:pre;overflow:auto;border-radius:3px;border:1px solid rgb(204,204,204);padding:0.5em 0.7em;display:block!important">- within <a href="http://a.com">a.com</a>'s process -
+-------+
| TC: 1 |
+-------+
|
+-- 1 --+
| <a href="http://a.com">a.com</a> |
+-------+
/ \
+-- 2 --+ +-------+
| <a href="http://a.com">a.com</a> | | RFC:2 |
+-------+ +-------+
|
+-------+
| RFC:1 |
+-------+
- within <a href="http://b.com">b.com</a>'s process -
+-------+ +-------+
| TC: 2 | | TC: 3 |
+-------+ +-------+
| |
+-- 3 --+ +-- 4 --+
| <a href="http://b.com">b.com</a> | | <a href="http://b.com">b.com</a> |
+-------+ +-------+
|
+-- 5 --+
| <a href="http://b.com">b.com</a> |
+-------+
- within the parent process -
+-------+
| TP: 1 |
+-------+
/ \ (manages)
+-------+ +-------+
| RFP:1 | | RFP:2 |
+-------+ +-------+
| |
+-------+ +-------+
| TP: 2 | | TP: 3 |
+-------+ +-------+
</code></pre><h3 id="this-newsletter" style="margin:1.3em 0px 1em;padding:0px;font-weight:bold;font-size:1.3em">This Newsletter</h3>
<p style="margin:0px 0px 1.2em!important">I hope to begin keeping everyone updated on the latest developments with<br>Fission over the coming months, but am not quite ready to commit to a weekly or<br>bi-weekly newsletter schedule.</p>
<p style="margin:0px 0px 1.2em!important">If you’re interested in helping out with the newsletter, please reach out and<br>let me (Nika) know!.</p>
<hr>
<p style="margin:0px 0px 1.2em!important"><em>Thanks for reading, and best of luck splitting the atom!</em></p>
<p style="margin:0px 0px 1.2em!important"><a href="https://wiki.mozilla.org/Project_Fission#Team">The Project Fission Team</a></p>
<div title="MDH:PGRpdiBkaXI9Imx0ciI+PGRpdj4qKk5PVEUqKiBUaGlzIG5ld3NsZXR0ZXIgaXMgYWxzbyBwb3N0
ZWQgYXQgaHR0cHM6Ly9teXN0b3IuZ2l0aHViLmlvL2Zpc3Npb24tbmV3cy0xLmh0bWw8YnI+PC9k
aXY+PGRpdiBkaXI9Imx0ciI+PGJyPiZndDsgKipUTDtEUioqIEZpc3Npb24gaXMgaGFwcGVuaW5n
IGFuZCBvdXIgZmlyc3QgIk1pbGVzdG9uZSIgaXMgdGFyZ2V0ZWQgYXQ8YnI+Jmd0OyB0aGUgZW5k
IG9mIEZlYnJ1YXJ5LiBQbGVhc2UgZmlsZSBidWdzIHJlbGF0ZWQgdG8gZmlzc2lvbiBhbmQgbWFy
ayB0aGVtIGFzPGJyPiZndDsgIkZpc3Npb24gTWlsZXN0b25lOiA/IiBzbyB3ZSBjYW4gdHJpYWdl
IHRoZW0gaW50byB0aGUgY29ycmVjdCBtaWxlc3RvbmUuPGJyPjxicj5BIGxpdHRsZSBtb3JlIGEg
eWVhciBhZ28sIGEgc2VyaW91cyBzZWN1cml0eSBmbGF3IGFmZmVjdGluZyBhbG1vc3QgYWxsIG1v
ZGVybjxicj5wcm9jZXNzb3JzIHdhcyBbcHVibGljbHkgZGlzY2xvc2VkXS4gVGhyZWUga25vd24g
dmFyaWFudHMgb2YgdGhlIGlzc3VlPGJyPndlcmUgYW5ub3VuY2VkIHdpdGggdGhlIG5hbWVzIGR1
YmJlZCBhcyBbU3BlY3RyZV0gKHZhcmlhbnRzIDEgYW5kIDIpIGFuZDxicj5bTWVsdGRvd25dICh2
YXJpYW50IDMpLiBTcGVjdHJlIGFidXNlcyBhIENQVSBvcHRpbWl6YXRpb24gdGVjaG5pcXVlIGtu
b3duPGJyPmFzIHNwZWN1bGF0aXZlIGV4ZWN1dGlvbiB0byBleGZpbHRyYXRlIHNlY3JldCBkYXRh
IHN0b3JlZCBpbiBtZW1vcnkgb2Ygb3RoZXI8YnI+cnVubmluZyBwcm9ncmFtcyB2aWEgc2lkZSBj
aGFubmVscy4gVGhpcyBtaWdodCBpbmNsdWRlIGNyeXB0b2dyYXBoaWMga2V5cyw8YnI+cGFzc3dv
cmRzIHN0b3JlZCBpbiBhIHBhc3N3b3JkIG1hbmFnZXIgb3IgYnJvd3NlciwgY29va2llcywgZXRj
LiBUaGlzIHRpbWluZzxicj5hdHRhY2sgcG9zZWQgYSBzZXJpb3VzIHRocmVhdCB0byB0aGUgYnJv
d3NlcnMgYmVjYXVzZSB3ZWJwYWdlcyBvZnRlbiBzZXJ2ZTxicj5KYXZhU2NyaXB0IGZyb20gbXVs
dGlwbGUgZG9tYWlucyB0aGF0IHJ1biBpbiB0aGUgc2FtZSBwcm9jZXNzLiBUaGlzPGJyPnZ1bG5l
cmFiaWxpdHkgd291bGQgZW5hYmxlIG1hbGljaW91cyB0aGlyZC1wYXJ0eSBjb2RlIHRvIHN0ZWFs
IHNlbnNpdGl2ZSB1c2VyPGJyPmRhdGEgYmVsb25naW5nIHRvIGEgc2l0ZSBob3N0aW5nIHRoYXQg
Y29kZSwgYSBzZXJpb3VzIGZsYXcgdGhhdCB3b3VsZCB2aW9sYXRlPGJyPmEgd2ViIHNlY3VyaXR5
IGNvcm5lcnN0b25lIGtub3duIGFzIFtTYW1lLW9yaWdpbiBwb2xpY3ldLjxicj48YnI+VGhhbmtz
IHRvIHRoZSBoZXJvaWMgZWZmb3J0cyBvZiB0aGUgRmlyZWZveCBKUyBhbmQgU2VjdXJpdHkgdGVh
bXMsIHdlIHdlcmU8YnI+YWJsZSB0byBtaXRpZ2F0ZSB0aGVzZSB2dWxuZXJhYmlsaXRpZXMgcmln
aHQgYXdheS4gSG93ZXZlciwgdGhlc2UgbWl0aWdhdGlvbnM8YnI+bWF5IG5vdCBzYXZlIHVzIGlu
IHRoZSBmdXR1cmUgaWYgYW5vdGhlciBzZWN1cml0eSB2dWxuZXJhYmlsaXR5IGlzIHJlbGVhc2Vk
PGJyPmV4cGxvaXRpbmcgdGhlIHNhbWUgdW5kZXJseWluZyBwcm9ibGVtIG9mIHNoYXJpbmcgcHJv
Y2Vzc2VzIChhbmQgaGVuY2UsPGJyPm1lbW9yeSkgYmV0d2VlbiBkaWZmZXJlbnQgZG9tYWlucywg
c29tZSBvZiB3aGljaCBtYXkgYmUgbWFsaWNpb3VzLiBDaHJvbWU8YnI+c3BlbnQgbXVsdGlwbGUg
eWVhcnMgd29ya2luZyB0byBpc29sYXRlIHNpdGVzIGluIHRoZWlyIG93biBwcm9jZXNzZXMuPGJy
Pjxicj5XZSBhaW0gdG8gYnVpbGQgYSBicm93c2VyIHdoaWNoIGlzbid0IGp1c3Qgc2VjdXJlIGFn
YWluc3Qga25vd24gc2VjdXJpdHk8YnI+dnVsbmVyYWJpbGl0aWVzLCBidXQgYWxzbyBoYXMgbGF5
ZXJzIG9mIGJ1aWx0LWluIGRlZmVuc2UgYWdhaW5zdCBwb3RlbnRpYWw8YnI+ZnV0dXJlIHZ1bG5l
cmFiaWxpdGllcy4gVG8gYWNjb21wbGlzaCB0aGlzLCB3ZSBuZWVkIHRvIHJldmFtcCB0aGU8YnI+
YXJjaGl0ZWN0dXJlIG9mIEZpcmVmb3ggYW5kIHN1cHBvcnQgZnVsbCBTaXRlIElzb2xhdGlvbi4g
V2UgY2FsbCB0aGlzIG5leHQ8YnI+c3RlcCBpbiB0aGUgZXZvbHV0aW9uIG9mIEZpcmVmb3jigJlz
IHByb2Nlc3MgbW9kZWwgIioqUHJvamVjdCBGaXNzaW9uKioiLiBXaGlsZTxicj5FbGVjdHJvbHlz
aXMgc3BsaXQgb3VyIGJyb3dzZXIgaW50byBDb250ZW50IGFuZCBDaHJvbWUsIHdpdGggRmlzc2lv
biwgd2Ugd2lsbDxicj4ic3BsaXQgdGhlIGF0b20iLCBzcGxpdHRpbmcgY3Jvc3Mtc2l0ZSBpZnJh
bWVzIGludG8gZGlmZmVyZW50IHByb2Nlc3NlcyB0aGFuPGJyPnRoZWlyIHBhcmVudCBmcmFtZS48
YnI+PGJyPk92ZXIgdGhlIGxhc3QgeWVhciwgd2UgaGF2ZSBiZWVuIHdvcmtpbmcgdG8gbGF5IHRo
ZSBncm91bmR3b3JrIGZvciBGaXNzaW9uLDxicj5kZXNpZ25pbmcgbmV3IGluZnJhc3RydWN0dXJl
LiBJbiB0aGUgY29taW5nIHdlZWtzIGFuZCBtb250aHMsIHdl4oCZbGwgbmVlZCBoZWxwPGJyPmZy
b20gYWxsIEZpcmVmb3ggdGVhbXMgdG8gYWRhcHQgb3VyIGNvZGUgdG8gYSBwb3N0LUZpc3Npb24g
YnJvd3Nlcjxicj5hcmNoaXRlY3R1cmUuPGJyPjxicj48YnI+IyMjIFBsYW5uaW5nIGFuZCBDb29y
ZGluYXRpb248YnI+PGJyPkZpc3Npb24gaXMgYSBtYXNzaXZlIHByb2plY3QsIHNwYW5uaW5nIGFj
cm9zcyBtYW55IGRpZmZlcmVudCB0ZWFtcywgc28ga2VlcGluZzxicj50cmFjayBvZiB3aGF0IGV2
ZXJ5b25lIGlzIGRvaW5nIGlzIGEgcHJldHR5IGJpZyB0YXNrLiBXaGlsZSB3ZSBoYXZlIGEgd2Vl
a2x5PGJyPnByb2plY3QgbWVldGluZywgd2hpY2ggc29tZW9uZSBvbiB5b3VyIHRlYW0gbWF5IGFs
cmVhZHkgYmUgYXR0ZW5kaW5nLCB3ZSBoYXZlPGJyPnN0YXJ0ZWQgYWxzbyB1c2luZyBhIEJ1Z3pp
bGxhIHByb2plY3QgdHJhY2tpbmcgZmxhZyB0byBrZWVwIHRyYWNrIG9mIHRoZSB3b3JrPGJyPndl
IGhhdmUgaW4gcHJvZ3Jlc3MuPGJyPjxicj5Ob3cgdGhhdCB3ZSd2ZSBtb3ZlZCBwYXN0IG11Y2gg
b2YgdGhlIGluaXRpYWwgaW5mcmFzdHJ1Y3R1cmUgZ3JvdW5kIHdvcmssIHdlPGJyPmFyZSBnb2lu
ZyB0byBrZWVwIHRyYWNrIG9mIHdvcmsgd2l0aCBvdXIgbWlsZXN0b25lIHRhcmdldHMuIEVhY2gg
bWlsZXN0b25lPGJyPndpbGwgY29udGFpbiBhIGNvbGxlY3Rpb24gb2YgbmV3IGZlYXR1cmVzIGFu
ZCBpbXByb3ZlZCBmdW5jdGlvbmFsaXR5IHdoaWNoPGJyPmJyaW5ncyB1cyBpbmNyZW1lbnRhbGx5
IGNsb3NlciB0byBvdXIgZ29hbC48YnI+PGJyPk91ciBmaXJzdCBtaWxlc3RvbmUsICJNaWxlc3Rv
bmUgMSIgKGNsZXZlciwgSSBrbm93KSwgaXMgY3VycmVudGx5IHRhcmdldGVkPGJyPmZvciB0aGUg
ZW5kIG9mIEZlYnJ1YXJ5LiBJbiBNaWxlc3RvbmUgMSwgd2UgcGxhbiB0byBoYXZlIHRoZSBncm91
bmR3b3JrIGZvcjxicj5vdXQtb2YtcHJvY2VzcyBpZnJhbWVzLCB3aGljaCBlbmNvbXBhc3NlcyBz
b21lIG1ham9yIHdvcmssIGluY2x1ZGluZywgYnV0IG5vdDxicj5saW1pdGVkIHRvLCB0aGUgZm9s
bG93aW5nIGNvbnRyaWJ1dGlvbnM6PGJyPjxicj4qICoqOnJodW50KiogaXMgaW1wbGVtZW50aW5n
IGJhc2ljIG91dC1vZi1wcm9jZXNzIGlmcmFtZSByZW5kZXJpbmcgYmVoaW5kIGE8YnI+Jm5ic3A7
IHByZWYuIChbQnVnIDE1MDAyNTddKTxicj4qICoqOmpkYWkqKiBpcyBpbXBsZW1lbnRpbmcgbmF0
aXZlIEpTIFdpbmRvdyBBY3RvciBBUElzIHRvIG1pZ3JhdGUgRnJhbWVTY3JpcHRzLjxicj4mbmJz
cDsgKFtCdWcgMTQ2NzIxMl0pPGJyPiogKio6ZmFycmUqKiBpcyBhZGRpbmcgc3VwcG9ydCBmb3Ig
QnJvd3NpbmdDb250ZXh0IGZpZWxkcyB0byBiZTxicj4mbmJzcDsgc3luY2hyb25pemVkIGJldHdl
ZW4gbXVsdGlwbGUgY29udGVudCBwcm9jZXNzZXMuIChbQnVnIDE1MjM2NDVdKTxicj4qICoqOnBl
dGVydioqIGhhcyBpbXBsZW1lbnRlZCBuZXcgY3Jvc3MtcHJvY2VzcyBXaW5kb3dQcm94eSBvYmpl
Y3RzIHRvPGJyPiZuYnNwOyBjb3JyZWN0bHkgZW11bGF0ZSB0aGUgYFdpbmRvd2Agb2JqZWN0IEFQ
SXMgZXhwb3NlZCB0byBjcm9zcy1vcmlnaW4gZG9jdW1lbnRzLjxicj4mbmJzcDsgKFtCdWcgMTM1
Mzg2N10pPGJyPiogKio6bWF0dG4qKiBpcyBjb252ZXJ0aW5nIHRoZSBGb3JtQXV0b0ZpbGxMaXN0
ZW5lcnMgY29kZSB0byB0aGUgYWN0b3JzIGluZnJhc3RydWN0dXJlLiAoW0J1ZyAxNDc0MTQzXSk8
YnI+KiAqKjpmZWxpcGUqKiBzaW11bGF0ZWQgdGhlIEZpc3Npb24gQVBJIGZvciBjb21tdW5pY2F0
aW5nIGJldHdlZW4gcGFyZW50IGFuZCBjaGlsZCBwcm9jZXNzZXMuIChbQnVnIDE0OTM5ODRdKTxi
cj4qICoqOmhleWNhbSoqIGlzIHdvcmtpbmcgb24gc2hhcmluZyBVQSBzdHlsZXNoZWV0cyBiZXR3
ZWVuIHByb2Nlc3Nlcy4gKFtCdWcgMTQ3NDc5M10pPGJyPiogKio6a21hZyoqLCAqKjplcmFobSoq
IGFuZCBtYW55IG90aGVycyBoYXZlIHJlZHVjZWQgcGVyLXByb2Nlc3MgbWVtb3J5IG92ZXJoZWFk
ITxicj4qICoqOmpsZCoqIGlzIHdvcmtpbmcgb24gYXN5bmMgcHJvY2VzcyBsYXVuY2hlczxicj4q
ICoqOmRyYWdhbmEqKiwgKio6a2Vyc2hhdyoqIGFuZCBvdGhlcnMgYXJlIG1vdmluZyBuZXR3b3Jr
aW5nIGxvZ2ljIGludG8gYSBzb2NrZXQgcHJvY2Vzcy4gKFtCdWcgMTMyMjQyNl0pPGJyPiogLi4u
YW5kIHNvIG11Y2ggbW9yZSE8YnI+PGJyPklmIHlvdSB3YW50IGFuIHVwLXRvLWRhdGUgdmlldyBv
ZiBNaWxlc3RvbmUgMSwgeW91IGNhbiBzZWUgdGhlIFtjdXJyZW50IE1pbGVzdG9uZSAxIHN0YXR1
c108YnI+b24gQnVnemlsbGEuPGJyPjxicj5JZiBoYXZlIGEgYnVnIHdoaWNoIG1heSBiZSByZWxl
dmFudCB0byBmaXNzaW9uLCAqcGxlYXNlKiBsZXQgdXMga25vdyBieSBzZXR0aW5nPGJyPnRoZSAi
Rmlzc2lvbiBNaWxlc3RvbmUiIHByb2plY3QgZmxhZyB0byAnPycuIFdlJ2xsIHN3aW5nIGJ5IGFu
ZCB0cmlhZ2UgaXQgaW50bzxicj50aGUgY29ycmVjdCBtaWxlc3RvbmUuPGJyPjxicj4hW1NldHRp
bmcgRmlzc2lvbiBNaWxlc3RvbmUgUHJvamVjdCBGbGFnXShodHRwczovL215c3Rvci5naXRodWIu
aW8vaW1hZ2VzL2Zpc3Npb25fbWlsZXN0b25lX3NlbGVjdC5wbmcpPGJyPjxicj48YnI+SWYgeW91
IGhhdmUgYW55IHF1ZXN0aW9ucywgZmVlbCBmcmVlIHRvIHJlYWNoIG91dCB0byBvbmUgb2YgdXMs
IGFuZCB3ZSdsbCBnZXQ8YnI+eW91IGFuc3dlcnMsIG9yIGd1aWRlIHlvdSB0byBzb21lb25lIHdo
byBjYW46PGJyPjxicj4qIFJvbiBNYW5uaW5nIGAmbHQ7cm1hbm5pbmdAbW96aWxsYS5jb20mZ3Q7
YCAoRmlzc2lvbiBFbmdpbmVlcmluZyBQcm9qZWN0IE1hbmFnZXIpPGJyPiogTmlrYSBMYXl6ZWxs
IGAmbHQ7bmlrYUBtb3ppbGxhLmNvbSZndDtgIChGaXNzaW9uIFRlY2ggTGVhZCk8YnI+KiBOZWhh
IEtvY2hhciBgJmx0O25rb2NoYXJAbW96aWxsYS5jb20mZ3Q7YCAoRE9NIEZpc3Npb24gRW5naW5l
ZXJpbmcgTWFuYWdlcik8YnI+PGJyPjxicj4jIyMgV2hhdCdzIENoYW5naW5nPzxicj48YnI+SW4g
b3JkZXIgdG8gbWFrZSBlYWNoIGNvbXBvbmVudCBvZiBGaXJlZm94IHN1Y2Nlc3NmdWxseSBhZGFw
dCB0byBhIHBvc3QtRmlzc2lvbjxicj53b3JsZCwgbWFueSBvZiB0aGVtIGFyZSBnb2luZyB0byBu
ZWVkIGNoYW5nZXMgb2YgdmFyeWluZyBzY2FsZS4gQ292ZXJpbmcgYWxsIG9mPGJyPnRoZSBjaGFu
Z2VzIHdoaWNoIHdlJ3JlIGdvaW5nIHRvIG5lZWQgd291bGQgYmUgaW1wb3NzaWJsZSB3aXRoaW4g
YSBzaW5nbGU8YnI+bmV3c2xldHRlci4gSW5zdGVhZCwgSSB3aWxsIGZvY3VzIG9uIHRoZSBjaGFu
Z2VzIHRvIGFjdG9ycywgbWVzc2FnZU1hbmFnZXJzLDxicj5hbmQgZG9jdW1lbnQgaGllcmFyY2hp
ZXMuPGJyPjxicj5Ub2RheSwgRmlyZWZveCBoYXMgcHJvY2VzcyBzZXBhcmF0aW9uIGJldHdlZW4g
dGhlIFVJIC0gcnVuIGluIHRoZSAqcGFyZW50PGJyPnByb2Nlc3MqLCBhbmQgd2ViIGNvbnRlbnQg
LSBydW4gaW4gKmNvbnRlbnQgcHJvY2Vzc2VzKi4gQ29tbXVuaWNhdGlvbiBiZXR3ZWVuPGJyPnRo
ZXNlIHR3byB0cmVlcyBvZiAiQnJvd3NpbmcgQ29udGV4dHMiIGlzIGRvbmUgdXNpbmcgdGhlIGBU
YWJQYXJlbnRgIGFuZDxicj5gVGFiQ2hpbGRgIGFjdG9ycyBpbiBDKysgY29kZSwgYW5kIE1lc3Nh
Z2UgTWFuYWdlcnMgaW4gSlMgY29kZS4gVGhlc2Ugc3lzdGVtczxicj5jb21tdW5pY2F0ZSBkaXJl
Y3RseSBiZXR3ZWVuIHRoZSAiZW1iZWRkZXIiLCB3aGljaCBpbiB0aGlzIGNhc2UgaXMgdGhlPGJy
PmAmbHQ7YnJvd3NlciZndDtgIGVsZW1lbnQsIGFuZCB0aGUgcm9vdCBvZiB0aGUgZW1iZWRkZWQg
dHJlZSwgd2hpY2ggaW4gdGhpcyBjYXNlPGJyPndvdWxkIGJlIHRoZSB0b3BsZXZlbCBEb2NTaGVs
bCBpbiB0aGUgdGFiLjxicj48YnI+SG93ZXZlciwgaW4gYSBwb3N0LUZpc3Npb24gd29ybGQsIHRo
aXMgbGF5ZXIgZm9yIGNvbW11bmljYXRpb24gaXMgbm8gbG9uZ2VyPGJyPnN1ZmZpY2llbnQuIEl0
IHdpbGwgYmUgcG9zc2libGUgZm9yIG11bHRpcGxlIHByb2Nlc3NlcyB0byByZW5kZXIgZGlzdGlu
Y3Q8YnI+c3ViZnJhbWVzLCBtZWFuaW5nIHRoYXQgZWFjaCB0YWIgaGFzIG11bHRpcGxlIGNvbm5l
Y3RlZCBwcm9jZXNzZXMuPGJyPjxicj5Db21wb25lbnRzIHdpbGwgbmVlZCB0byBhZGFwdCB0aGVp
ciBJUEMgY29kZSB0byB3b3JrIGluIHRoaXMgbmV3IHdvcmxkLCBib3RoIGJ5PGJyPnVwZGF0aW5n
IHRoZWlyIHVzZSBvZiBleGlzdGluZyBBUElzLCBhbmQgYnkgYWRhcHRpbmcgdG8gdXNlIG5ldyBB
Y3RvcnMgYW5kIEFQSXM8YnI+d2hpY2ggYXJlIGJlaW5nIGFkZGVkIGFzIHBhcnQgb2YgdGhlIEZp
c3Npb24gcHJvamVjdC48YnI+PGJyPjxicj4jIyMjIFBlci1XaW5kb3cgR2xvYmFsIEFjdG9yczxi
cj48YnI+Rm9yIG1hbnkgY29tcG9uZW50cywgdGhlIGZ1bGwgdHJlZSBvZiBCcm93c2luZyBDb250
ZXh0cyBpcyBub3QgaW1wb3J0YW50LDxicj5yYXRoZXIgY29tbXVuaWNhdGlvbiBpcyBuZWVkZWQg
YmV0d2VlbiB0aGUgcGFyZW50IHByb2Nlc3MgYW5kIGFueSBzcGVjaWZpYzxicj5kb2N1bWVudC4g
Rm9yIHRoZXNlIGNhc2VzLCBhIG5ldyBhY3RvciBoYXMgYmVlbiBhZGRlZCB3aGljaCBpcyBleHBv
c2VkIGJvdGggaW48YnI+QysrIGNvZGUgYW5kIEpTIGNvZGUgY2FsbGVkIFtQV2luZG93R2xvYmFs
XS48YnI+PGJyPlVubGlrZSBvdGhlciBhY3RvcnMgaW4gZ2Vja28sIHN1Y2ggYXMgYFRhYntQYXJl
bnQsQ2hpbGR9YCwgdGhpcyBhY3RvciBleGlzdHM8YnI+Zm9yIGFsbCB3aW5kb3cgZ2xvYmFscywg
aW5jbHVkaW5nIHRob3NlIGxvYWRlZCB3aXRoaW4gdGhlIHBhcmVudCBwcm9jZXNzLiBUaGlzPGJy
PmlzIGhhbmRsZWQgdXNpbmcgYSBuZXcgYFBJblByb2Nlc3NgIG1hbmFnZXIgYWN0b3IsIHdoaWNo
IHN1cHBvcnRzIHNlbmRpbmcgbWFpbjxicj50aHJlYWQgdG8gbWFpbiB0aHJlYWQgSVBETCBtZXNz
YWdlcy48YnI+PGJyPkpTIGNvZGUgcnVubmluZyB3aXRoaW4gYSBGcmFtZVNjcmlwdCBtYXkgbm90
IGJlIGFibGUgdG8gaW5zcGVjdCBldmVyeSBmcmFtZSBhdDxicj5vbmNlLCBhbmQgd29uJ3QgYmUg
YWJsZSB0byBoYW5kbGUgZXZlbnRzIGZyb20gb3V0IG9mIHByb2Nlc3MgaWZyYW1lcy4gSW5zdGVh
ZCw8YnI+aXQgd2lsbCBuZWVkIHRvIHVzZSBvdXIgbmV3IFtKUyBXaW5kb3cgQWN0b3JdIEFQSXMs
IHdoaWNoIHdlIGFyZSB0YXJnZXRpbmcgdG88YnI+bGFuZCBpbiBNaWxlc3RvbmUgMS4gVGhlc2Ug
YWN0b3JzIGFyZSAibWFuYWdlZCIgYnkgdGhlIGBXaW5kb3dHbG9iYWxgIGFjdG9ycyw8YnI+YW5k
IGFyZSBpbXBsZW1lbnRlZCBhcyBKUyBjbGFzc2VzIGluc3RhbnRpYXRlZCB3aGVuIHJlcXVlc3Rl
ZCBmb3IgYW55PGJyPnBhcnRpY3VsYXIgd2luZG93LiBUaGV5IHN1cHBvcnQgc2VuZGluZyBhc3lu
YyBtZXNzYWdlcywgYW5kIHdpbGwgYmUgcHJlc2VudCBmb3I8YnI+Ym90aCBpbi1wcm9jZXNzIGFu
ZCBvdXQtb2YtcHJvY2VzcyB3aW5kb3dzLjxicj48YnI+QysrIGxvZ2ljIHdoaWNoIHdhbGtzIHRo
ZSBmcmFtZSB0cmVlIGZyb20gdGhlIGBUYWJDaGlsZGAgbWF5IHN0b3Agd29ya2luZy48YnI+SW5z
dGVhZCwgQysrIGNvZGUgbWF5IGNob29zZSB0byB1c2UgdGhlIFBXaW5kb3dHbG9iYWwgYWN0b3Ig
dG8gc2VuZCBtZXNzYWdlcyBpbjxicj5hIG1hbm5lciBzaW1pbGFyIHRvIEpTIGNvZGUuPGJyPjxi
cj4jIyMjIGBCcm93c2luZ0NvbnRleHRgIG9iamVjdHM8YnI+PGJyPkMrKyBjb2RlIG1heSBhbHNv
IG1haW50YWluIHNoYXJlZCBzdGF0ZSBvbiB0aGUgYEJyb3dzaW5nQ29udGV4dGAgb2JqZWN0LiBX
ZSBhcmU8YnI+dGFyZ2V0aW5nIGxhbmRpbmcgdGhlIGZpZWxkIHN5bmNpbmcgaW5mcmFzdHJ1Y3R1
cmUgaW4gTWlsZXN0b25lIDEsIGFuZCBpdCB3aWxsPGJyPnByb3ZpZGUgYSBwbGFjZSB0byBzdG9y
ZSBkYXRhIHdoaWNoIHNob3VsZCBiZSByZWFkYWJsZSBieSBhbGwgcHJvY2Vzc2VzIHdpdGggYTxi
cj52aWV3IG9mIHRoZSBzdHJ1Y3R1cmUuPGJyPjxicj5UaGUgcGFyZW50IHByb2Nlc3MgaG9sZHMg
YSBzcGVjaWFsIHN1YmNsYXNzIG9mIHRoZSBgQnJvd3NpbmdDb250ZXh0YCBvYmplY3Q6PGJyPmBD
YW5vbmljYWxCcm93c2luZ0NvbnRleHRgLiBUaGlzIG9iamVjdCBoYXMgZXh0cmEgZmllbGRzIHdo
aWNoIGNhbiBiZSB1c2VkIGluPGJyPnRoZSBwYXJlbnQgdG8ga2VlcCB0cmFjayBvZiB0aGUgY3Vy
cmVudCBzdGF0dXMgb2YgYWxsIGZyYW1lcyBpbiBvbmUgcGxhY2UuPGJyPjxicj4jIyMjIGBUYWJQ
YXJlbnRgLCBgVGFiQ2hpbGRgIGFuZCBJRnJhbWVzPGJyPjxicj5UaGUgYFRhYntQYXJlbnQsQ2hp
bGR9YCBhY3RvcnMgd2lsbCBjb250aW51ZSB0byBleGlzdCwgYW5kIHdpbGwgYWx3YXlzIGJyaWRn
ZTxicj5mcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyB0byBhIGNvbnRlbnQgcHJvY2Vzcy4gSG93ZXZl
ciwgaW4gYWRkaXRpb24gdG8gdGhlc2U8YnI+YWN0b3JzIGJlaW5nIHByZXNlbnQgZm9yIHRvcGxl
dmVsIGRvY3VtZW50cywgdGhleSB3aWxsIGFsc28gYmUgcHJlc2VudCBmb3I8YnI+b3V0LW9mLXBy
b2Nlc3Mgc3VidHJlZXMuPGJyPjxicj5BcyBhbiBleGFtcGxlLCBjb25zaWRlciB0aGUgZm9sbG93
aW5nIHRyZWUgb2YgbmVzdGVkIGJyb3dzaW5nIGNvbnRleHRzOjxicj48YnI+YGBgPGJyPiZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyArLS0gMSAtLSs8YnI+
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwgYS5jb20g
fDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKy0t
LS0tLS0rPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyZuYnNwOyAvJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7
ICstLSAyIC0tKyArLS0gNCAtLSs8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwgYS5jb20gfCB8IGIu
Y29tIHw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICstLS0tLS0tKyArLS0tLS0tLSs8YnI+Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfDxicj4mbmJzcDsmbmJzcDsmbmJzcDsgKy0t
IDMgLS0rICstLSA1IC0tKzxicj4mbmJzcDsmbmJzcDsmbmJzcDsgfCBiLmNvbSB8IHwgYi5jb20g
fDxicj4mbmJzcDsmbmJzcDsmbmJzcDsgKy0tLS0tLS0rICstLS0tLS0tKzxicj5gYGA8YnI+PGJy
PlVuZGVyIGUxMHMsIHdlIGhhdmUgYSBzaW5nbGUgYFRhYntQYXJlbnQsQ2hpbGR9YCBwYWlyIGZv
ciB0aGUgZW50aXJlIHRhYiwgd2hpY2g8YnI+d291bGQgY29ubmVjdCB0byBgMWAsIGFuZCBGcmFt
ZVNjcmlwdHMgd291bGQgcnVuIHdpdGggYGNvbnRlbnRgIGJlaW5nIHRoZSBgMWAnczxicj5nbG9i
YWwuPGJyPjxicj5BZnRlciBGaXNzaW9uLCB0aGVyZSB3aWxsIHN0aWxsIGJlIGEgYFRhYntQYXJl
bnQsQ2hpbGR9YCBhY3RvciBmb3IgdGhlIHJvb3Qgb2Y8YnI+dGhlIHRyZWUsIGF0IGAxYC4gSG93
ZXZlciwgdGhlcmUgd2lsbCBhbHNvIGJlIHR3byBhZGRpdGlvbmFsIGBUYWJ7UGFyZW50LENoaWxk
fWA8YnI+YWN0b3JzOiBvbmUgYXQgYDNgIGFuZCBvbmUgYXQgYDRgLiBFYWNoIG9mIHRoZXNlIG5l
c3RlZCBgVGFiUGFyZW50YCBvYmplY3RzIGFyZTxicj5oZWxkIGFsaXZlIGluIHRoZSBwYXJlbnQg
cHJvY2VzcyBieSBhIGBSZW1vdGVGcmFtZVBhcmVudGAgYWN0b3Igd2hvc2U8YnI+Y29ycmVzcG9u
ZGluZyBgUmVtb3RlRnJhbWVDaGlsZGAgaXMgaGVsZCBieSB0aGUgZW1iZWRkZXIncyBpZnJhbWUu
PGJyPjxicj5UaGUgZm9sbG93aW5nIGlzIGEgZGlhZ3JhbSBvZiB0aGUgZG9jdW1lbnRzIGFuZCBh
Y3RvcnMgd2hpY2ggYnVpbGQgdXAgdGhlIGFjdG9yPGJyPnRyZWUsIGV4Y2x1ZGluZyB0aGUgYFdp
bmRvd0dsb2JhbGAgYWN0b3JzLiBgUkZ7UCxDfWAgc3RhbmRzIGZvcjxicj5gUmVtb3RlRnJhbWV7
UGFyZW50LENoaWxkfWAsIGFuZCBgVHtQLEN9YCBzdGFuZHMgZm9yIGBUYWJ7UGFyZW50LENoaWxk
fWAuPGJyPlRoZSBgUmVtb3RlRnJhbWVgIGFjdG9ycyBhcmUgbWFuYWdlZCBieSB0aGVpciBlbWJl
ZGRpbmcgYFRhYmAgYWN0b3JzLCBhbmQgdXNlPGJyPnRoZSBzYW1lIHVuZGVybHlpbmcgdHJhbnNw
b3J0Ljxicj48YnI+YGBgPGJyPi0gd2l0aGluIGEuY29tJ3MgcHJvY2VzcyAtPGJyPjxicj4mbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKy0tLS0tLS0rPGJy
PiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB8IFRDOiAx
IHw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICst
LS0tLS0tKzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKy0tIDEgLS0rPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB8IGEuY29tIHw8YnI+Jm5ic3A7Jm5ic3A7Jm5i
c3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICstLS0tLS0tKzxicj4mbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgLyZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyBcPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyArLS0gMiAtLSsgKy0tLS0tLS0r
PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyB8IGEuY29tIHwgfCBSRkM6MiB8PGJyPiZuYnNwOyZuYnNw
OyZuYnNwOyArLS0tLS0tLSsgKy0tLS0tLS0rPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyB8PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyArLS0tLS0tLSs8YnI+Jm5i
c3A7Jm5ic3A7Jm5ic3A7IHwgUkZDOjEgfDxicj4mbmJzcDsmbmJzcDsmbmJzcDsgKy0tLS0tLS0r
PGJyPjxicj4tIHdpdGhpbiBiLmNvbSdzIHByb2Nlc3MgLTxicj48YnI+Jm5ic3A7Jm5ic3A7Jm5i
c3A7ICstLS0tLS0tKyZuYnNwOyZuYnNwOyZuYnNwOyArLS0tLS0tLSs8YnI+Jm5ic3A7Jm5ic3A7
Jm5ic3A7IHwgVEM6IDIgfCZuYnNwOyZuYnNwOyZuYnNwOyB8IFRDOiAzIHw8YnI+Jm5ic3A7Jm5i
c3A7Jm5ic3A7ICstLS0tLS0tKyZuYnNwOyZuYnNwOyZuYnNwOyArLS0tLS0tLSs8YnI+Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgfDxicj4mbmJz
cDsmbmJzcDsmbmJzcDsgKy0tIDMgLS0rJm5ic3A7Jm5ic3A7Jm5ic3A7ICstLSA0IC0tKzxicj4m
bmJzcDsmbmJzcDsmbmJzcDsgfCBiLmNvbSB8Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwgYi5jb20gfDxi
cj4mbmJzcDsmbmJzcDsmbmJzcDsgKy0tLS0tLS0rJm5ic3A7Jm5ic3A7Jm5ic3A7ICstLS0tLS0t
Kzxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsm
bmJzcDsmbmJzcDsgfDxicj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJz
cDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsg
Ky0tIDUgLS0rPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZu
YnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyB8IGIu
Y29tIHw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICstLS0tLS0t
Kzxicj48YnI+LSB3aXRoaW4gdGhlIHBhcmVudCBwcm9jZXNzIC08YnI+PGJyPiZuYnNwOyZuYnNw
OyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyArLS0tLS0tLSs8YnI+Jm5ic3A7
Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHwgVFA6IDEgfDxicj4m
bmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgKy0tLS0tLS0r
PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyAvJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IFwmbmJzcDsmbmJzcDsmbmJzcDsgKG1hbmFnZXMp
PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyArLS0tLS0tLSsgKy0tLS0tLS0rPGJyPiZuYnNwOyZuYnNw
OyZuYnNwOyB8IFJGUDoxIHwgfCBSRlA6MiB8PGJyPiZuYnNwOyZuYnNwOyZuYnNwOyArLS0tLS0t
LSsgKy0tLS0tLS0rPGJyPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNw
OyB8Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7IHw8YnI+
Jm5ic3A7Jm5ic3A7Jm5ic3A7ICstLS0tLS0tKyArLS0tLS0tLSs8YnI+Jm5ic3A7Jm5ic3A7Jm5i
c3A7IHwgVFA6IDIgfCB8IFRQOiAzIHw8YnI+Jm5ic3A7Jm5ic3A7Jm5ic3A7ICstLS0tLS0tKyAr
LS0tLS0tLSs8YnI+YGBgPGJyPjxicj48YnI+IyMjIFRoaXMgTmV3c2xldHRlcjxicj48YnI+SSBo
b3BlIHRvIGJlZ2luIGtlZXBpbmcgZXZlcnlvbmUgdXBkYXRlZCBvbiB0aGUgbGF0ZXN0IGRldmVs
b3BtZW50cyB3aXRoPGJyPkZpc3Npb24gb3ZlciB0aGUgY29taW5nIG1vbnRocywgYnV0IGFtIG5v
dCBxdWl0ZSByZWFkeSB0byBjb21taXQgdG8gYSB3ZWVrbHkgb3I8YnI+Ymktd2Vla2x5IG5ld3Ns
ZXR0ZXIgc2NoZWR1bGUuPGJyPjxicj5JZiB5b3UncmUgaW50ZXJlc3RlZCBpbiBoZWxwaW5nIG91
dCB3aXRoIHRoZSBuZXdzbGV0dGVyLCBwbGVhc2UgcmVhY2ggb3V0IGFuZDxicj5sZXQgbWUgKE5p
a2EpIGtub3chLjxicj48YnI+PGJyPi0tLTxicj48YnI+KlRoYW5rcyBmb3IgcmVhZGluZywgYW5k
IGJlc3Qgb2YgbHVjayBzcGxpdHRpbmcgdGhlIGF0b20hKjxicj48YnI+W1RoZSBQcm9qZWN0IEZp
c3Npb24gVGVhbV08YnI+PGJyPjxicj5bcHVibGljbHkgZGlzY2xvc2VkXTogaHR0cHM6Ly9nb29n
bGVwcm9qZWN0emVyby5ibG9nc3BvdC5jb20vMjAxOC8wMS9yZWFkaW5nLXByaXZpbGVnZWQtbWVt
b3J5LXdpdGgtc2lkZS5odG1sPGJyPltTcGVjdHJlXTogaHR0cHM6Ly9zcGVjdHJlYXR0YWNrLmNv
bS9zcGVjdHJlLnBkZjxicj5bTWVsdGRvd25dOiBodHRwczovL21lbHRkb3duYXR0YWNrLmNvbS9t
ZWx0ZG93bi5wZGY8YnI+W1NhbWUtb3JpZ2luIHBvbGljeV06IGh0dHBzOi8vZW4ubS53aWtpcGVk
aWEub3JnL3dpa2kvU2FtZS1vcmlnaW5fcG9saWN5PGJyPltCdWcgMTUwMDI1N106IGh0dHBzOi8v
YnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDAyNTc8YnI+W0J1ZyAxNDY3
MjEyXTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2NzIx
Mjxicj5bQnVnIDE1MjM2NDVdOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNTIzNjQ1PGJyPltCdWcgMTM1Mzg2N106IGh0dHBzOi8vYnVnemlsbGEubW96aWxs
YS5vcmcvc2hvd19idWcuY2dpP2lkPTEzNTM4Njc8YnI+W0J1ZyAxNDc0MTQzXTogaHR0cHM6Ly9i
dWd6aWxsYS5tb3ppbGxhLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NDE0Mzxicj5bQnVnIDE1MTMw
NDVdOiBodHRwczovL2J1Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTEzMDQ1
PGJyPltCdWcgMTQ5Mzk4NF06IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcu
Y2dpP2lkPTE0OTM5ODQ8YnI+W0J1ZyAxNDc0NzkzXTogaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxh
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ3NDc5Mzxicj5bQnVnIDEzMjI0MjZdOiBodHRwczovL2J1
Z3ppbGxhLm1vemlsbGEub3JnL3Nob3dfYnVnLmNnaT9pZD0xMzIyNDI2PGJyPltjdXJyZW50IE1p
bGVzdG9uZSAxIHN0YXR1c106IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvYnVnbGlzdC5j
Z2k/Y2xhc3NpZmljYXRpb249Q2xpZW50JTIwU29mdHdhcmUmYW1wO2NsYXNzaWZpY2F0aW9uPURl
dmVsb3BlciUyMEluZnJhc3RydWN0dXJlJmFtcDtjbGFzc2lmaWNhdGlvbj1Db21wb25lbnRzJmFt
cDtjbGFzc2lmaWNhdGlvbj1TZXJ2ZXIlMjBTb2Z0d2FyZSZhbXA7Y2xhc3NpZmljYXRpb249T3Ro
ZXImYW1wO2YxPWNmX2Zpc3Npb25fbWlsZXN0b25lJmFtcDtsaXN0X2lkPTE0NTM4ODA0JmFtcDtv
MT1lcXVhbHMmYW1wO3F1ZXJ5X2Zvcm1hdD1hZHZhbmNlZCZhbXA7djE9TTEmYW1wO3F1ZXJ5X2Jh
c2VkX29uPSZhbXA7Y29sdW1ubGlzdD1wcm9kdWN0JTJDY29tcG9uZW50JTJDYXNzaWduZWRfdG8l
MkNzaG9ydF9kZXNjJTJDYnVnX3N0YXR1cyUyQ3Jlc29sdXRpb24lMkNzdGF0dXNfd2hpdGVib2Fy
ZDxicj5bVGhlIFByb2plY3QgRmlzc2lvbiBUZWFtXTogaHR0cHM6Ly93aWtpLm1vemlsbGEub3Jn
L1Byb2plY3RfRmlzc2lvbiNUZWFtPGJyPjxicj48L2Rpdj48L2Rpdj4=" style="height:0;width:0;max-height:0;max-width:0;overflow:hidden;font-size:0em;padding:0;margin:0"></div></div></div>